@provoly/dashboard 0.19.3 → 0.19.5
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.
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -6
- package/esm2022/lib/core/i18n/en.translations.mjs +3 -1
- package/esm2022/lib/core/i18n/fr.translations.mjs +3 -1
- package/esm2022/lib/core/model/display-options.interface.mjs +29 -36
- package/esm2022/lib/core/store/config/config.effects.mjs +2 -2
- package/esm2022/lib/core/store/search/search.service.mjs +7 -4
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -4
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +7 -4
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +39 -8
- package/esm2022/presentation/components/presentation.component.mjs +29 -13
- package/esm2022/toolbox/components/toolbox.component.mjs +15 -12
- package/fesm2022/provoly-dashboard-dataset.mjs +2 -5
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +66 -19
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +14 -11
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +71 -67
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/i18n/en.translations.d.ts +2 -0
- package/lib/core/i18n/fr.translations.d.ts +2 -0
- package/lib/core/model/display-options.interface.d.ts +3 -8
- package/lib/dashboard/store/dashboard.actions.d.ts +8 -6
- package/lib/dashboard/store/dashboard.effects.d.ts +9 -5
- package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
- package/package.json +37 -37
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +10 -2
- package/presentation/components/presentation.component.d.ts +7 -3
- package/toolbox/components/toolbox.component.d.ts +2 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
2
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
3
|
import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
4
|
-
import { DashboardActions, DashboardGridLayout, DashboardSelectors,
|
|
4
|
+
import { DashboardActions, DashboardGridLayout, DashboardSelectors, PryVisibilityType, SubscriptionnerDirective, ViewMode } from '@provoly/dashboard';
|
|
5
5
|
import { BehaviorSubject, combineLatest, map } from 'rxjs';
|
|
6
6
|
import { v4 } from 'uuid';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
@@ -15,7 +15,10 @@ import * as i7 from "./add-edit-presentation/add-edit-presentation.component";
|
|
|
15
15
|
import * as i8 from "../style/css.component";
|
|
16
16
|
import * as i9 from "@provoly/dashboard/components/sinceDate";
|
|
17
17
|
export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
18
|
-
|
|
18
|
+
set listOfManifests(manifests) {
|
|
19
|
+
this.listOfManifests$.next(Array.isArray(manifests) ? manifests : null);
|
|
20
|
+
}
|
|
21
|
+
constructor(store, overlay, viewContainerRef, router, titleService, activatedRoute, ngZone) {
|
|
19
22
|
super();
|
|
20
23
|
this.store = store;
|
|
21
24
|
this.overlay = overlay;
|
|
@@ -23,6 +26,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
23
26
|
this.router = router;
|
|
24
27
|
this.titleService = titleService;
|
|
25
28
|
this.activatedRoute = activatedRoute;
|
|
29
|
+
this.ngZone = ngZone;
|
|
26
30
|
this.selectedPresentation$ = new BehaviorSubject(null);
|
|
27
31
|
this.selectedMode = ViewMode.CATALOG;
|
|
28
32
|
this.modalOpened = false;
|
|
@@ -32,15 +36,20 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
32
36
|
this.consultStartUrl = '/';
|
|
33
37
|
this.ViewMode = ViewMode;
|
|
34
38
|
this.search$ = new BehaviorSubject('');
|
|
39
|
+
this.listOfManifests$ = new BehaviorSubject(null);
|
|
40
|
+
this.mode = 'meta';
|
|
35
41
|
this.subscriptions.add(this.activatedRoute.queryParams.subscribe((params) => {
|
|
36
42
|
if (params['create']) {
|
|
37
43
|
this.creation();
|
|
38
44
|
}
|
|
39
45
|
}));
|
|
40
46
|
this.store.dispatch(DashboardActions.fetchManifestsList());
|
|
41
|
-
this.manifests$ =
|
|
42
|
-
.
|
|
43
|
-
|
|
47
|
+
this.manifests$ = combineLatest([
|
|
48
|
+
this.store
|
|
49
|
+
.select(DashboardSelectors.manifestsList)
|
|
50
|
+
.pipe(map((manifestList) => [...manifestList].sort((a, b) => a.modificationDate ? b.modificationDate.localeCompare(a.modificationDate) : 1))),
|
|
51
|
+
this.listOfManifests$
|
|
52
|
+
]).pipe(map(([dynamics, statics]) => (!!statics ? statics : dynamics)));
|
|
44
53
|
this.staticManifest$ = this.store
|
|
45
54
|
.select(DashboardSelectors.staticManifest)
|
|
46
55
|
.pipe(map((staticM) => staticM.windows[0]));
|
|
@@ -61,7 +70,10 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
61
70
|
this.store.dispatch(DashboardActions.selectPresentation({ presentation: undefined, viewMode: ViewMode.CATALOG }));
|
|
62
71
|
}
|
|
63
72
|
fetch(presentation) {
|
|
64
|
-
this.store.dispatch(DashboardActions.loadPresentation({ presentation, viewMode: ViewMode.
|
|
73
|
+
this.store.dispatch(DashboardActions.loadPresentation({ presentation, viewMode: ViewMode.CONSULT }));
|
|
74
|
+
this.ngZone.run(() => {
|
|
75
|
+
this.router?.navigateByUrl(this.consultStartUrl);
|
|
76
|
+
});
|
|
65
77
|
}
|
|
66
78
|
creation() {
|
|
67
79
|
this.selectedMode = ViewMode.CREATION;
|
|
@@ -78,7 +90,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
78
90
|
};
|
|
79
91
|
this.store.dispatch(DashboardActions.selectPresentation(newPresentation));
|
|
80
92
|
this.store.dispatch(DashboardActions.setGridLayout({ layout: DashboardGridLayout.FULL }));
|
|
81
|
-
this.store.dispatch(DashboardActions.updateDisplayOptions({ mode:
|
|
93
|
+
this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.CREATION }));
|
|
82
94
|
}
|
|
83
95
|
edit(presentation) {
|
|
84
96
|
this.selectedMode = ViewMode.EDITION;
|
|
@@ -86,7 +98,7 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
86
98
|
this.titleService.changeTitle(presentation.name);
|
|
87
99
|
this.store.dispatch(DashboardActions.selectPresentation({ presentation, viewMode: ViewMode.EDITION }));
|
|
88
100
|
this.store.dispatch(DashboardActions.fetchStaticManifest({ id: presentation.id }));
|
|
89
|
-
this.store.dispatch(DashboardActions.updateDisplayOptions({ mode:
|
|
101
|
+
this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.EDITION }));
|
|
90
102
|
this.overlayRef?.dispose();
|
|
91
103
|
this.overlayRef = undefined;
|
|
92
104
|
}
|
|
@@ -162,13 +174,13 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
|
|
|
162
174
|
}
|
|
163
175
|
this.submit.nativeElement.focus();
|
|
164
176
|
}
|
|
165
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
166
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchCase=\"ViewMode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button class=\"a-btn a-tooltip\" [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\" (click)=\"fetch(presentation)\">\n {{'@pry.presentation.consult' | i18n}}</button>\n </div>\n </li>\n </ul>\n\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n<div class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n</div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i7.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation"], outputs: ["goBack"] }, { kind: "component", type: i8.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
177
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
178
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", mode: "mode", listOfManifests: "listOfManifests" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button\n class=\"a-btn a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n (click)=\"fetch(presentation)\"\n >\n {{ '@pry.presentation.consult' | i18n }}\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation", "mode"], outputs: ["goBack"] }, { kind: "component", type: i8.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
167
179
|
}
|
|
168
180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, decorators: [{
|
|
169
181
|
type: Component,
|
|
170
|
-
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *
|
|
171
|
-
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }]; }, propDecorators: { templateModalActions: [{
|
|
182
|
+
args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"a-presentation__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let presentation of filteredPresentations$ | async\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div class=\"a-tooltip\">\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 128\"\n [width]=\"presentation.cover ? 600 : 128\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <div class=\"more-actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(presentation)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"a-p\">\n <div class=\"description-container\">\n <span class=\"description\">\n {{ presentation.description }}\n </span>\n <div class=\"description-tooltip\">{{ presentation.description }}</div>\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div class=\"o-presentation__item__footer\">\n <button\n class=\"a-btn a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n (click)=\"fetch(presentation)\"\n >\n {{ '@pry.presentation.consult' | i18n }}\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div\n class=\"o-modal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presenation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.presentation.options' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModalActions()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <ul class=\"actions-list\">\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.change' | i18n\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n <pry-icon iconSvg=\"edit\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.edition' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.share' | i18n\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n <pry-icon iconSvg=\"share\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.share' | i18n }}</span>\n </button>\n </li>\n <li>\n <button\n class=\"a-btn a-btn--icon-only a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.erase' | i18n\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n <pry-icon iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.presentation.delete' | i18n }}</span>\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n" }]
|
|
183
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }]; }, propDecorators: { templateModalActions: [{
|
|
172
184
|
type: ViewChild,
|
|
173
185
|
args: ['modalActions', { read: TemplateRef }]
|
|
174
186
|
}], template: [{
|
|
@@ -198,5 +210,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
198
210
|
type: Input
|
|
199
211
|
}], meAsOwner: [{
|
|
200
212
|
type: Input
|
|
213
|
+
}], mode: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], listOfManifests: [{
|
|
216
|
+
type: Input
|
|
201
217
|
}] } });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUd2RyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixrQkFBa0IsRUFDbEIsV0FBVyxFQUlYLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsUUFBUSxFQUNULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBTTFCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUF5QnBFLFlBQ1ksS0FBaUIsRUFDakIsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLE1BQWMsRUFDZCxZQUE2QixFQUM3QixjQUE4QjtRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQVBFLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FB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ICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZE1hbmlmZXN0LFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIERpc3BsYXlNb2RlLFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBQcnlUaXRsZVNlcnZpY2UsXG4gIFByeVZpc2liaWxpdHksXG4gIFByeVZpc2liaWxpdHlUeXBlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVByZXNlbnRhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIG1hbmlmZXN0cyQ6IE9ic2VydmFibGU8TWFuaWZlc3REZXNjcmlwdGlvbltdPjtcbiAgc2VsZWN0ZWRQcmVzZW50YXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYW5pZmVzdERlc2NyaXB0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb247XG4gIHN0YXRpY01hbmlmZXN0JD86IE9ic2VydmFibGU8RGFzaGJvYXJkTWFuaWZlc3Q+O1xuICBzZWxlY3RlZE1vZGU6IFZpZXdNb2RlID0gVmlld01vZGUuQ0FUQUxPRztcbiAgbW9kYWxPcGVuZWQgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnbW9kYWxBY3Rpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZU1vZGFsQWN0aW9ucyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ29wZW5Nb2RhbCcpIG9wZW5Nb2RhbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjb25maXJtJykgY29uZmlybSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzdWJtaXQnKSBzdWJtaXQhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zc1Zpc2liaWxpdHknKSBjcm9zc1Zpc2liaWxpdHkhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndmlzaWJpbGl0eU1vZGFsJykgdmlzaWJpbGl0eU1vZGFsITogRWxlbWVudFJlZjtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHZpc2liaWxpdHk6IFByeVZpc2liaWxpdHkgPSB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfTtcbiAgUHJ5VmlzaWJpbGl0eVR5cGUgPSBQcnlWaXNpYmlsaXR5VHlwZTtcbiAgQElucHV0KCkgZWRpdGlvblN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIGNvbnN1bHRTdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBtZUFzT3duZXI/OiBzdHJpbmc7XG4gIFZpZXdNb2RlID0gVmlld01vZGU7XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgZmlsdGVyZWRQcmVzZW50YXRpb25zJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHRpdGxlU2VydmljZTogUHJ5VGl0bGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICBpZiAocGFyYW1zWydjcmVhdGUnXSkge1xuICAgICAgICAgIHRoaXMuY3JlYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSk7XG4gICAgdGhpcy5tYW5pZmVzdHMkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubWFuaWZlc3RzTGlzdClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKG1hbmlmZXN0TGlzdCkgPT5cbiAgICAgICAgICBbLi4ubWFuaWZlc3RMaXN0XS5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgYS5tb2RpZmljYXRpb25EYXRlID8gYi5tb2RpZmljYXRpb25EYXRlLmxvY2FsZUNvbXBhcmUoYS5tb2RpZmljYXRpb25EYXRlKSA6IDFcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdClcbiAgICAgIC5waXBlKG1hcCgoc3RhdGljTSkgPT4gc3RhdGljTS53aW5kb3dzWzBdKSk7XG4gICAgdGhpcy5maWx0ZXJlZFByZXNlbnRhdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5tYW5pZmVzdHMkLCB0aGlzLnNlYXJjaCRdKS5waXBlKFxuICAgICAgbWFwKChbcHJlc2VudGF0aW9ucywgc2VhcmNoXSkgPT5cbiAgICAgICAgcHJlc2VudGF0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKHByZXNlbnRhdGlvbnMpID0+XG4gICAgICAgICAgICBzZWFyY2gubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICBwcmVzZW50YXRpb25zLmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICBwcmVzZW50YXRpb25zLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLnN1YnNjcmliZSgocHJlc2VudGF0aW9uKSA9PiB7XG4gICAgICAgIGlmICghIXByZXNlbnRhdGlvbi5jdXJyZW50KSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24uY3VycmVudCA/PyBudWxsKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IHByZXNlbnRhdGlvbj8udmlld01vZGUgPz8gdGhpcy5WaWV3TW9kZS5DQVRBTE9HO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHVuZGVmaW5lZCwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICB9XG5cbiAgZmV0Y2gocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgfVxuXG4gIGNyZWF0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuQ1JFQVRJT047XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHsgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSwgc2VsZWN0ZWRJZHM6IFtdIH0pKTtcbiAgICBjb25zdCBuZXdQcmVzZW50YXRpb24gPSB7XG4gICAgICBwcmVzZW50YXRpb246IHtcbiAgICAgICAgaWQ6IHY0KCksXG4gICAgICAgIG5hbWU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIHZpc2liaWxpdHk6IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9LFxuICAgICAgICBvd25lcjogdHJ1ZVxuICAgICAgfSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkNSRUFUSU9OXG4gICAgfTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKG5ld1ByZXNlbnRhdGlvbikpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KHsgbGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEwgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IERpc3BsYXlNb2RlLkNSRUFURSB9KSk7XG4gIH1cblxuICBlZGl0KHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuRURJVElPTjtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUocHJlc2VudGF0aW9uLm5hbWUpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IERpc3BsYXlNb2RlLkVESVQgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZFxuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuY29uZmlybU1hbmlmZXN0RGVsZXRpb24oeyBpZCB9KSk7XG4gICAgdGhpcy50b2dnbGVNb2RhbEFjdGlvbnMoKVxuICB9XG5cbiAgdG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYgJiYgcHJlc2VudGF0aW9uKXtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVNb2RhbEFjdGlvbnMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVNb2RhbChwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uIHwgbnVsbCkge1xuICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICBpZiAodGhpcy5tb2RhbE9wZW5lZCAmJiBwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKClcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIC8qIHdlIG5lZWQgdG8gbG9hZCBtYW5pZmVzdCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHNhdmUgaXQgbGF0ZXIgKi9cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbikpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZm9jdXMgPSB0aGlzLnZpc2liaWxpdHlNb2RhbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmZpcnN0RWxlbWVudENoaWxkIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICBmb2N1cy5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmlzaWJpbGl0eShwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgaWYgKHByZXNlbnRhdGlvbikge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgIGlkOiBwcmVzZW50YXRpb24uaWQgPz8gJycsXG4gICAgICAgICAgbmFtZTogcHJlc2VudGF0aW9uLm5hbWUgPz8gJycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgICAgICBpbWFnZTogcHJlc2VudGF0aW9uLmltYWdlID8/ICcnLFxuICAgICAgICAgIHZpc2liaWxpdHk6IHRoaXMudmlzaWJpbGl0eVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVNb2RhbChwcmVzZW50YXRpb24pO1xuICB9XG5cbiAgZm9jdXNDcm9zc0VsZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMuY3Jvc3NWaXNpYmlsaXR5KSB7XG4gICAgICB0aGlzLmNyb3NzVmlzaWJpbGl0eT8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmNyb3NzPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c1ZhbGlkYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuY29uZmlybSkge1xuICAgICAgdGhpcy5jb25maXJtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5zdWJtaXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG59XG4iLCI8cHJ5LXByZXNlbnRhdGlvbi1jc3M+PC9wcnktcHJlc2VudGF0aW9uLWNzcz5cbjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dFwiIFtuZ1N3aXRjaF09XCJzZWxlY3RlZE1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuQ0FUQUxPR1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHQgYS10b29sdGlwXCJcbiAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5jcmVhdGUnIHwgaTE4blwiXG4gICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY3JlYXRpb24oKVwiXG4gICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2NyZWF0ZScgfVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5jcmVhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYS1wcmVzZW50YXRpb25fX3NlYXJjaFwiPlxuICAgICAgICAgIDxsYWJlbCBpZD1cImNhdGFsb2ctc2VhcmNoLWxhYmVsXCIgZm9yPVwiY2F0YWxvZy1zZWFyY2hcIiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS50b29sYm94LmNhdGFsb2cuZmlsdGVyLm5hbWUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJjYXRhbG9nLXNlYXJjaFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnNlYXJjaCcgfCBpMThuXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQgfCBhc3luY1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aGlzLnNlYXJjaCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2VhcmNoXCIgW3dpZHRoXT1cIjE3XCIgW2hlaWdodF09XCIxN1wiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X19jb250ZW50XCI+XG4gICAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyB8IGkxOG4gfX08L2gxPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLXdyYXBwZXJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiby1wcmVzZW50YXRpb25cIj5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbVwiICpuZ0Zvcj1cImxldCBwcmVzZW50YXRpb24gb2YgZmlsdGVyZWRQcmVzZW50YXRpb25zJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2hlYWRlclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlc2VudGF0aW9uLnZpc2liaWxpdHkudHlwZSA9PT0gUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURVwiPlxuICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgW2ljb25TdmddPVwicHJlc2VudGF0aW9uLnZpc2liaWxpdHkudHlwZS50b0xvd2VyQ2FzZSgpXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXMtcHJpdmF0ZSBhLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5wcml2YXRlJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTdcIlxuICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwicHJlc2VudGF0aW9uLmNvdmVyID8gNjAwIDogMTI4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwicHJlc2VudGF0aW9uLmNvdmVyID8gNjAwIDogMTI4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZnVsbC13aWR0aF09XCJwcmVzZW50YXRpb24uY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicHJlc2VudGF0aW9uLmltYWdlIHwgZ2V0U2VjdXJlZEltYWdlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlID09PSBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9yZS1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1tb3JlIGEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLm1vcmUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjI1XCIgW3dpZHRoXT1cIjI1XCIgaWNvblN2Zz1cIm1vcmVfaG9yaXpcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX190eHRcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYS1oM1wiPnt7IHByZXNlbnRhdGlvbi5uYW1lIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tdG9vbHRpcFwiPnt7IHByZXNlbnRhdGlvbi5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXAgLWRhdGVcIj57eyBwcmVzZW50YXRpb24ubW9kaWZpY2F0aW9uRGF0ZSB8IHNpbmNlRGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19mb290ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtdG9vbHRpcFwiIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24udmlldycgfCBpMThuXCIgKGNsaWNrKT1cImZldGNoKHByZXNlbnRhdGlvbilcIj5cbiAgICAgICAgICAgICAgICB7eydAcHJ5LnByZXNlbnRhdGlvbi5jb25zdWx0JyB8IGkxOG59fTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cblxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3TW9kZS5DUkVBVElPTlwiPlxuICAgIDxwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uXG4gICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmNcIlxuICAgICAgKGdvQmFjayk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgICAgW2VkaXRpb25TdGFydFVybF09XCJlZGl0aW9uU3RhcnRVcmxcIlxuICAgICAgW2VkaXRpb25dPVwiZmFsc2VcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3TW9kZS5FRElUSU9OXCI+XG4gICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJ0cnVlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21vZGFsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAjdmlzaWJpbGl0eU1vZGFsXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBjaGFuZ2UgdmlzaWJpbGl0eVwiXG4gICAgKm5nSWY9XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVcIj57eyAnQHByeS50b29sYm94LnJlbmFtZScgfCBpMThuIH19PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgI2Nyb3NzVmlzaWJpbGl0eVxuICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHByeS1zaGFyZSBbbmdNb2RlbF09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi52aXNpYmlsaXR5XCIgKG5nTW9kZWxDaGFuZ2UpPVwidmlzaWJpbGl0eSA9ICRldmVudFwiPjwvcHJ5LXNoYXJlPlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKClcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAjc3VibWl0XG4gICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVZpc2liaWxpdHkoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jaGVjaycgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtb2RhbEFjdGlvbnM+XG48ZGl2IGNsYXNzPVwiby1tb2RhbFwiXG4gICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBwcmVzZW5hdGlvbiBvcHRpb25zXCJcbiAgICAgKm5nSWY9XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fdGl0bGVcIj5cbiAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5vcHRpb25zJyB8IGkxOG4gfX08L2gyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICNjcm9zc1Zpc2liaWxpdHlcbiAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsQWN0aW9ucygpXCJcbiAgICAgID5cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8dWwgY2xhc3M9XCJhY3Rpb25zLWxpc3RcIj5cbiAgICA8bGk+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSBhLXRvb2x0aXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmNoYW5nZScgfCBpMThuXCJcbiAgICAgICAgKGNsaWNrKT1cImVkaXQoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFByZXNlbnRhdGlvbi5vd25lclwiXG4gICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2VkaXQnIH1cIlxuICAgICAgPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImVkaXRcIj48L3ByeS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmVkaXRpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gICAgPGxpPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcFwiXG4gICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24uc2hhcmUnIHwgaTE4blwiXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnc2hhcmUnIH1cIlxuICAgICAgPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNoYXJlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSBhLXRvb2x0aXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmVyYXNlJyB8IGkxOG5cIlxuICAgICAgICAjb3Blbk1vZGFsXG4gICAgICAgIChjbGljayk9XCJkZWxldGUoc2VsZWN0ZWRQcmVzZW50YXRpb24uaWQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFByZXNlbnRhdGlvbi5vd25lclwiXG4gICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2RlbGV0ZScgfVwiXG4gICAgICA+XG4gICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiZGVsZXRlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5kZWxldGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixrQkFBa0IsRUFJbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixRQUFRLEVBQ1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFNMUIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHdCQUF3QjtJQTJCcEUsSUFBYSxlQUFlLENBQUMsU0FBdUM7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxZQUNZLEtBQWlCLEVBQ2pCLE9BQWdCLEVBQ2hCLGdC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LHdCQUF3QjttR0FBeEIsd0JBQXdCLHVUQU9BLFdBQVcsNEZBQ2xCLFdBQVcsZ2xCQ2hDekMsZzNSQWlPQTs7NEZEek1hLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxrQkFBa0I7c1BBVXNCLG9CQUFvQjtzQkFBckUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNMLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDakIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNBLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDQyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0MsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNZLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNFLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUluQixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRU8sZUFBZTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgUHJ5VGl0bGVTZXJ2aWNlLFxuICBQcnlWaXNpYmlsaXR5LFxuICBQcnlWaXNpYmlsaXR5VHlwZSxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlLFxuICBWaWV3TW9kZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1wcmVzZW50YXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJlc2VudGF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBtYW5pZmVzdHMkOiBPYnNlcnZhYmxlPE1hbmlmZXN0RGVzY3JpcHRpb25bXT47XG4gIHNlbGVjdGVkUHJlc2VudGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGw+KG51bGwpO1xuICBwcmVzZW50YXRpb24/OiBNYW5pZmVzdERlc2NyaXB0aW9uO1xuICBzdGF0aWNNYW5pZmVzdCQ/OiBPYnNlcnZhYmxlPERhc2hib2FyZE1hbmlmZXN0PjtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIG1vZGFsT3BlbmVkID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsQWN0aW9ucycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVNb2RhbEFjdGlvbnMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb2RhbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdvcGVuTW9kYWwnKSBvcGVuTW9kYWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY29uZmlybScpIGNvbmZpcm0hOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnc3VibWl0Jykgc3VibWl0ITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzJykgY3Jvc3MhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3NWaXNpYmlsaXR5JykgY3Jvc3NWaXNpYmlsaXR5ITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3Zpc2liaWxpdHlNb2RhbCcpIHZpc2liaWxpdHlNb2RhbCE6IEVsZW1lbnRSZWY7XG4gIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICB2aXNpYmlsaXR5OiBQcnlWaXNpYmlsaXR5ID0geyB0eXBlOiBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFIH07XG4gIFByeVZpc2liaWxpdHlUeXBlID0gUHJ5VmlzaWJpbGl0eVR5cGU7XG4gIEBJbnB1dCgpIGVkaXRpb25TdGFydFVybDogc3RyaW5nID0gJy8nO1xuICBASW5wdXQoKSBjb25zdWx0U3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgbWVBc093bmVyPzogc3RyaW5nO1xuICBWaWV3TW9kZSA9IFZpZXdNb2RlO1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIGZpbHRlcmVkUHJlc2VudGF0aW9ucyQ6IE9ic2VydmFibGU8TWFuaWZlc3REZXNjcmlwdGlvbltdPjtcbiAgbGlzdE9mTWFuaWZlc3RzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFuaWZlc3REZXNjcmlwdGlvbltdIHwgbnVsbD4obnVsbCk7XG4gIEBJbnB1dCgpIG1vZGU6ICd0aGVtZScgfCAnbWV0YScgPSAnbWV0YSc7XG5cbiAgQElucHV0KCkgc2V0IGxpc3RPZk1hbmlmZXN0cyhtYW5pZmVzdHM6IE1hbmlmZXN0RGVzY3JpcHRpb25bXSB8IG51bGwpIHtcbiAgICB0aGlzLmxpc3RPZk1hbmlmZXN0cyQubmV4dChBcnJheS5pc0FycmF5KG1hbmlmZXN0cykgPyBtYW5pZmVzdHMgOiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHRpdGxlU2VydmljZTogUHJ5VGl0bGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgaWYgKHBhcmFtc1snY3JlYXRlJ10pIHtcbiAgICAgICAgICB0aGlzLmNyZWF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpO1xuICAgIHRoaXMubWFuaWZlc3RzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZVxuICAgICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5tYW5pZmVzdHNMaXN0KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1hbmlmZXN0TGlzdCkgPT5cbiAgICAgICAgICAgIFsuLi5tYW5pZmVzdExpc3RdLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgIGEubW9kaWZpY2F0aW9uRGF0ZSA/IGIubW9kaWZpY2F0aW9uRGF0ZS5sb2NhbGVDb21wYXJlKGEubW9kaWZpY2F0aW9uRGF0ZSkgOiAxXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgdGhpcy5saXN0T2ZNYW5pZmVzdHMkXG4gICAgXSkucGlwZShtYXAoKFtkeW5hbWljcywgc3RhdGljc10pID0+ICghIXN0YXRpY3MgPyBzdGF0aWNzIDogZHluYW1pY3MpKSk7XG5cbiAgICB0aGlzLnN0YXRpY01hbmlmZXN0JCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChzdGF0aWNNKSA9PiBzdGF0aWNNLndpbmRvd3NbMF0pKTtcbiAgICB0aGlzLmZpbHRlcmVkUHJlc2VudGF0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm1hbmlmZXN0cyQsIHRoaXMuc2VhcmNoJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwcmVzZW50YXRpb25zLCBzZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcihcbiAgICAgICAgICAocHJlc2VudGF0aW9ucykgPT5cbiAgICAgICAgICAgIHNlYXJjaC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbnMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgaWYgKCEhcHJlc2VudGF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbi5jdXJyZW50ID8/IG51bGwpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gcHJlc2VudGF0aW9uPy52aWV3TW9kZSA/PyB0aGlzLlZpZXdNb2RlLkNBVEFMT0c7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZSgnQHByeS5wcmVzZW50YXRpb24udGl0bGUnKTtcbiAgfVxuXG4gIGNsb3NlUmVzdGl0dXRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbjogdW5kZWZpbmVkLCB2aWV3TW9kZTogVmlld01vZGUuQ0FUQUxPRyB9KSk7XG4gIH1cblxuICBmZXRjaChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMubG9hZFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNPTlNVTFQgfSkpO1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmNvbnN1bHRTdGFydFVybCk7XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkNSRUFUSU9OO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiB7IHdpbmRvd3M6IFtdIH0sIHNlbGVjdGVkSWRzOiBbXSB9KSk7XG4gICAgY29uc3QgbmV3UHJlc2VudGF0aW9uID0ge1xuICAgICAgcHJlc2VudGF0aW9uOiB7XG4gICAgICAgIGlkOiB2NCgpLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICB2aXNpYmlsaXR5OiB7IHR5cGU6IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEUgfSxcbiAgICAgICAgb3duZXI6IHRydWVcbiAgICAgIH0gYXMgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5DUkVBVElPTlxuICAgIH07XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbihuZXdQcmVzZW50YXRpb24pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCh7IGxheW91dDogRGFzaGJvYXJkR3JpZExheW91dC5GVUxMIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBWaWV3TW9kZS5DUkVBVElPTiB9KSk7XG4gIH1cblxuICBlZGl0KHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbikge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gVmlld01vZGUuRURJVElPTjtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUocHJlc2VudGF0aW9uLm5hbWUpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IFZpZXdNb2RlLkVESVRJT04gfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRlbGV0ZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmNvbmZpcm1NYW5pZmVzdERlbGV0aW9uKHsgaWQgfSkpO1xuICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKCk7XG4gIH1cblxuICB0b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiAmJiBwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVNb2RhbEFjdGlvbnMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VWaXNpYmlsaXR5KHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICBpZiAocHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCh7XG4gICAgICAgICAgaWQ6IHByZXNlbnRhdGlvbi5pZCA/PyAnJyxcbiAgICAgICAgICBuYW1lOiBwcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICAgIGltYWdlOiBwcmVzZW50YXRpb24uaW1hZ2UgPz8gJycsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy52aXNpYmlsaXR5XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICBpZiAodGhpcy5jcm9zc1Zpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuY3Jvc3NWaXNpYmlsaXR5Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuY3Jvc3M/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICB0aGlzLmNvbmZpcm0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktcHJlc2VudGF0aW9uLWNzcz48L3ByeS1wcmVzZW50YXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCIgW25nU3dpdGNoXT1cInNlbGVjdGVkTW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgYS1idG4tLWljb24tdGV4dCBhLXRvb2x0aXBcIlxuICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuXCJcbiAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJjcmVhdGlvbigpXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnY3JlYXRlJyB9XCJcbiAgICAgID5cbiAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmNyZWF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhLXByZXNlbnRhdGlvbl9fc2VhcmNoXCI+XG4gICAgICAgICAgPGxhYmVsIGlkPVwiY2F0YWxvZy1zZWFyY2gtbGFiZWxcIiBmb3I9XCJjYXRhbG9nLXNlYXJjaFwiIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIubmFtZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5wcmVzZW50YXRpb24uc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRoaXMuc2VhcmNoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJzZWFyY2hcIiBbd2lkdGhdPVwiMTdcIiBbaGVpZ2h0XT1cIjE3XCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxoMSBjbGFzcz1cImEtaDFcIj57eyAnQHByeS5wcmVzZW50YXRpb24udGl0bGUnIHwgaTE4biB9fTwvaDE+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24td3JhcHBlclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLXByZXNlbnRhdGlvblwiPlxuICAgICAgICAgIDxsaSBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCIgKm5nRm9yPVwibGV0IHByZXNlbnRhdGlvbiBvZiBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlID09PSBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFXCI+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICBbaWNvblN2Z109XCJwcmVzZW50YXRpb24udmlzaWJpbGl0eS50eXBlLnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1wcml2YXRlIGEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnByaXZhdGUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE3XCJcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxN1wiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEyOFwiXG4gICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCJwcmVzZW50YXRpb24uY292ZXIgPyA2MDAgOiAxMjhcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZnVsbC13aWR0aF09XCJwcmVzZW50YXRpb24uY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInByZXNlbnRhdGlvbi5pbWFnZSB8IGdldFNlY3VyZWRJbWFnZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlc2VudGF0aW9uLnZpc2liaWxpdHkudHlwZSA9PT0gUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLW1vcmUgYS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLm1vcmUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjI1XCIgW3dpZHRoXT1cIjI1XCIgaWNvblN2Zz1cIm1vcmVfaG9yaXpcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX3R4dFwiPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgcHJlc2VudGF0aW9uLm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS1wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcmVzZW50YXRpb24uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi10b29sdGlwXCI+e3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtcCAtZGF0ZVwiPnt7IHByZXNlbnRhdGlvbi5tb2RpZmljYXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlclwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24udmlldycgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmV0Y2gocHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uc3VsdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuQ1JFQVRJT05cIj5cbiAgICA8cHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvblxuICAgICAgW3NlbGVjdGVkUHJlc2VudGF0aW9uXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jXCJcbiAgICAgIChnb0JhY2spPVwiY2xvc2VSZXN0aXR1dGlvbigpXCJcbiAgICAgIFtlZGl0aW9uU3RhcnRVcmxdPVwiZWRpdGlvblN0YXJ0VXJsXCJcbiAgICAgIFtlZGl0aW9uXT1cImZhbHNlXCJcbiAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3TW9kZS5FRElUSU9OXCI+XG4gICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJ0cnVlXCJcbiAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgID48L3ByeS1hZGQtZWRpdC1wcmVzZW50YXRpb24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICN2aXNpYmlsaXR5TW9kYWxcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIGNoYW5nZSB2aXNpYmlsaXR5XCJcbiAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jIGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnRvb2xib3gucmVuYW1lJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ2aXNpYmlsaXR5ID0gJGV2ZW50XCI+PC9wcnktc2hhcmU+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eShzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vZGFsQWN0aW9ucz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1tb2RhbFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBwcmVzZW5hdGlvbiBvcHRpb25zXCJcbiAgICAqbmdJZj1cInNlbGVjdGVkUHJlc2VudGF0aW9uJCB8IGFzeW5jIGFzIHNlbGVjdGVkUHJlc2VudGF0aW9uXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5vcHRpb25zJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWxBY3Rpb25zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwiYWN0aW9ucy1saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgYS10b29sdGlwXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLmNoYW5nZScgfCBpMThuXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdChzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRQcmVzZW50YXRpb24ub3duZXJcIlxuICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2VkaXQnIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJlZGl0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmVkaXRpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgICAgPGxpPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1vZGFsKHNlbGVjdGVkUHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IGEtdG9vbHRpcFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNoYXJlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLnNoYXJlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSBhLXRvb2x0aXBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24uZXJhc2UnIHwgaTE4blwiXG4gICAgICAgICAgI29wZW5Nb2RhbFxuICAgICAgICAgIChjbGljayk9XCJkZWxldGUoc2VsZWN0ZWRQcmVzZW50YXRpb24uaWQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUHJlc2VudGF0aW9uLm93bmVyXCJcbiAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdkZWxldGUnIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJkZWxldGVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5wcmVzZW50YXRpb24uZGVsZXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -26,19 +26,22 @@ export class ToolboxComponent {
|
|
|
26
26
|
this.isManualMode$ = store
|
|
27
27
|
.select(DashboardSelectors.windowManifest)
|
|
28
28
|
.pipe(map((pres) => (pres.grid?.layout ?? DashboardGridLayout.MANUAL) === DashboardGridLayout.MANUAL));
|
|
29
|
+
this.actionsAvailable$ = store.select(DashboardSelectors.displayOptions);
|
|
29
30
|
}
|
|
30
31
|
ngOnInit() {
|
|
31
|
-
this.allActions$ = combineLatest([this.actions$, this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
this.allActions$ = combineLatest([this.actions$, this.actionsAvailable$]).pipe(switchMap(([actions, displayOptions]) => combineLatest(actions.map((action) => {
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
const actionAvailable = action.visible && displayOptions.toolbox[action.name];
|
|
35
|
+
return this.role
|
|
36
|
+
? this.role.hasRole(null, action.access.module, action.access.page, action.access.action).pipe(map((hasRole) => ({
|
|
37
|
+
...action,
|
|
38
|
+
visible: actionAvailable && (!this.role || hasRole)
|
|
39
|
+
})))
|
|
40
|
+
: of({
|
|
41
|
+
...action,
|
|
42
|
+
visible: actionAvailable
|
|
43
|
+
});
|
|
44
|
+
}))));
|
|
42
45
|
this.mainActions$ = combineLatest([this._dropdownActions$, this.allActions$]).pipe(map(([dropdownActions, actions]) => actions.filter((action) => !dropdownActions.find((dropdownAction) => action.name === dropdownAction.name))));
|
|
43
46
|
this.dropdownActions$ = combineLatest([this._dropdownActions$, this.allActions$]).pipe(map(([dropdownActions, actions]) => actions.filter((action) => !!dropdownActions.find((dropdownAction) => action.name === dropdownAction.name))));
|
|
44
47
|
this.showDropdownButton$ = this.dropdownActions$.pipe(map((actions) => actions.filter((action) => action.visible).length > 0));
|
|
@@ -73,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
73
76
|
}], dropdownActions: [{
|
|
74
77
|
type: Input
|
|
75
78
|
}] } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBaUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFpQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLElBQWEsT0FBTyxDQUFDLE9BQXdCO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFhLGVBQWUsQ0FBQyxlQUFrRDtRQUM3RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFZLEtBQVksRUFBZ0QsSUFBbUI7UUFBbkIsU0FBSSxHQUFKLElBQUksQ0FBZTtRQW5CM0YsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFrQixPQUFPLENBQUMsQ0FBQztRQUN6RCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBRSxDQUFDLENBQUM7UUFDdEUs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LGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM1RyxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDbkQsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFhO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQW9CO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUFDLFVBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDL0YsQ0FBQzsrR0FqRlUsZ0JBQWdCLHVDQW9CbUIsZ0JBQWdCO21HQXBCbkQsZ0JBQWdCLHVKQ1Y3Qiw0OEVBOERBOzs0RkRwRGEsZ0JBQWdCO2tCQUo1QixTQUFTOytCQUNFLGFBQWE7OzBCQXVCSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs0Q0FqQnJELGFBQWE7c0JBQXJCLEtBQUs7Z0JBU08sT0FBTztzQkFBbkIsS0FBSztnQkFJTyxlQUFlO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIERhc2hib2FyZFNlbGVjdG9ycywgUFJZX0FDQ0VTU19UT0tFTiwgUHJ5QmFzZUFjY2VzcyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQUNUSU9OUywgVG9vbGJveEFjdGlvbiB9IGZyb20gJy4uL3Rvb2xib3gubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktdG9vbGJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYm94LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUb29sYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRvb2xib3hBY3Rpb25bXT4oQUNUSU9OUyk7XG4gIF9kcm9wZG93bkFjdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IG5hbWU6IHN0cmluZzsgb3JkZXI6IG51bWJlciB9W10+KFtdKTtcbiAgQElucHV0KCkgZGlzcGxheUxhYmVscyA9IHRydWU7XG4gIGhhc0luaXRpYWxQcmVzZW50YXRpb24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc01hbnVhbE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhbGxBY3Rpb25zJCE6IE9ic2VydmFibGU8VG9vbGJveEFjdGlvbltdPjtcbiAgbWFpbkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBkcm9wZG93bkFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBzaG93RHJvcGRvd25CdXR0b24kITogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgYWN0aW9ucyhhY3Rpb25zOiBUb29sYm94QWN0aW9uW10pIHtcbiAgICB0aGlzLmFjdGlvbnMkLm5leHQoYWN0aW9ucyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZHJvcGRvd25BY3Rpb25zKGRyb3Bkb3duQWN0aW9uczogeyBuYW1lOiBzdHJpbmc7IG9yZGVyOiBudW1iZXIgfVtdKSB7XG4gICAgdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5uZXh0KGRyb3Bkb3duQWN0aW9ucyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUsIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJpdmF0ZSByb2xlOiBQcnlCYXNlQWNjZXNzKSB7XG4gICAgdGhpcy5oYXNJbml0aWFsUHJlc2VudGF0aW9uJCA9IHN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKS5waXBlKG1hcCgocHJlcykgPT4gISFwcmVzLmluaXRpYWwpKTtcbiAgICB0aGlzLmlzTWFudWFsTW9kZSQgPSBzdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpXG4gICAgICAucGlwZShtYXAoKHByZXMpID0+IChwcmVzLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkgPT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFsbEFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5hY3Rpb25zJCwgdGhpcy5oYXNJbml0aWFsUHJlc2VudGF0aW9uJF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFthY3Rpb25zLCBoYXNJbml0aWFsUHJlc2VudGF0aW9uXSkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PlxuICAgICAgICAgICAgdGhpcy5yb2xlXG4gICAgICAgICAgICAgID8gdGhpcy5yb2xlLmhhc1JvbGUobnVsbCwgYWN0aW9uLmFjY2Vzcy5tb2R1bGUsIGFjdGlvbi5hY2Nlc3MucGFnZSwgYWN0aW9uLmFjY2Vzcy5hY3Rpb24pLnBpcGUoXG4gICAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChoYXNSb2xlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24udmlzaWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uLm5hbWUgIT09ICdzYXZlX3ZpZXcnIHx8IGhhc0luaXRpYWxQcmVzZW50YXRpb24pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghdGhpcy5yb2xlIHx8IGhhc1JvbGUpXG4gICAgICAgICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBvZih7XG4gICAgICAgICAgICAgICAgICAuLi5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlOiBhY3Rpb24udmlzaWJsZSAmJiAoYWN0aW9uLm5hbWUgIT09ICdzYXZlX3ZpZXcnIHx8IGhhc0luaXRpYWxQcmVzZW50YXRpb24pXG4gICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5tYWluQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9kcm9wZG93bkFjdGlvbnMkLCB0aGlzLmFsbEFjdGlvbnMkXSkucGlwZShcbiAgICAgIG1hcCgoW2Ryb3Bkb3duQWN0aW9ucywgYWN0aW9uc10pID0+XG4gICAgICAgIGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICFkcm9wZG93bkFjdGlvbnMuZmluZCgoZHJvcGRvd25BY3Rpb24pID0+IGFjdGlvbi5uYW1lID09PSBkcm9wZG93bkFjdGlvbi5uYW1lKSlcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuZHJvcGRvd25BY3Rpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Ryb3Bkb3duQWN0aW9ucyQsIHRoaXMuYWxsQWN0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZHJvcGRvd25BY3Rpb25zLCBhY3Rpb25zXSkgPT5cbiAgICAgICAgYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gISFkcm9wZG93bkFjdGlvbnMuZmluZCgoZHJvcGRvd25BY3Rpb24pID0+IGFjdGlvbi5uYW1lID09PSBkcm9wZG93bkFjdGlvbi5uYW1lKSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zaG93RHJvcGRvd25CdXR0b24kID0gdGhpcy5kcm9wZG93bkFjdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKGFjdGlvbnMpID0+IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi52aXNpYmxlKS5sZW5ndGggPiAwKVxuICAgICk7XG4gIH1cblxuICBvcGVuRHJvcGRvd24oJGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oJGV2ZW50OiBFdmVudCB8IHZvaWQpIHtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgaWYgKCRldmVudCkgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZ2V0T3JkZXIoYWN0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duQWN0aW9ucyQuZ2V0VmFsdWUoKS5maW5kKChhY3Rpb24pID0+IGFjdGlvbk5hbWUgPT09IGFjdGlvbi5uYW1lKT8ub3JkZXI7XG4gIH1cbn1cbiIsIjx1bCBjbGFzcz1cIm0tYWN0aW9ucy1saXN0XCIgI2lucHV0PlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbWFpbkFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLnZpc2libGVcIj5cbiAgICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtXCIgKnByeUFjY2Vzcz1cImFjdGlvbi5hY2Nlc3NcIj5cbiAgICAgICAgPHByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3JcbiAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgW2Rpc3BsYXlMYWJlbHNdPVwiZGlzcGxheUxhYmVsc1wiXG4gICAgICAgID48L3ByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3I+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dEcm9wZG93bkJ1dHRvbiQgfCBhc3luY1wiPlxuICAgIDxsaSBjbGFzcz1cIm0tYWN0aW9ucy1saXN0X19pdGVtXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IC1zaXplLW1kXCJcbiAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgICAgICBpZD1cIm9wdGlvbnNcIlxuICAgICAgICBhcmlhLWNvbnRyb2xzPVwiSURwYW5lbFwiXG4gICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3gub3B0aW9ucycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3gub3B0aW9ucycgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMTRcIiBbaGVpZ2h0XT1cIjE0XCIgaWNvblN2Zz1cImNoZXZyb25fYm90dG9tXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xpPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNEcm9wZG93bk9wZW5cIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcbiAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgICAgKGJhY2tkcm9wQ2xpY2spPVwiaXNEcm9wZG93bk9wZW4gPSBmYWxzZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudV9fbGlzdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkcm9wZG93bkFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0X19pdGVtXCIgW3N0eWxlLm9yZGVyXT1cImdldE9yZGVyKGFjdGlvbi5uYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxwcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yXG4gICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgICAgICAgICAgIChjbG9zZU9wdGlvbnMpPVwiY2xvc2VEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqbmdJZj1cImlzTWFudWFsTW9kZSQgfCBhc3luY1wiPlxuICAgIDxwcnktZWRpdC1tb2RlLXRvZ2dsZVxuICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ3Rvb2xib3gnLCBhY3Rpb246ICdlZGl0X2Rhc2hib2FyZCcgfVwiXG4gICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICA+PC9wcnktZWRpdC1tb2RlLXRvZ2dsZT5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC90b29sYm94L2NvbXBvbmVudHMvdG9vbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBRWxCLGdCQUFnQixFQUVqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7O0FBTTFELE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsSUFBYSxPQUFPLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsZUFBZSxDQUFDLGVBQWtEO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQVksS0FBWSxFQUFnRCxJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBcEIzRixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQWtCLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFvQyxFQUFFLENBQUMsQ0FBQztRQUN0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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgRGlzcGxheU9wdGlvbnMsXG4gIFBSWV9BQ0NFU1NfVE9LRU4sXG4gIFByeUJhc2VBY2Nlc3Ncbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJT05TLCBUb29sYm94QWN0aW9uIH0gZnJvbSAnLi4vdG9vbGJveC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS10b29sYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9vbGJveEFjdGlvbltdPihBQ1RJT05TKTtcbiAgX2Ryb3Bkb3duQWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXT4oW10pO1xuICBASW5wdXQoKSBkaXNwbGF5TGFiZWxzID0gdHJ1ZTtcbiAgaGFzSW5pdGlhbFByZXNlbnRhdGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGlzTWFudWFsTW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFsbEFjdGlvbnMkITogT2JzZXJ2YWJsZTxUb29sYm94QWN0aW9uW10+O1xuICBtYWluQWN0aW9ucyQhOiBPYnNlcnZhYmxlPFRvb2xib3hBY3Rpb25bXT47XG4gIGRyb3Bkb3duQWN0aW9ucyQhOiBPYnNlcnZhYmxlPFRvb2xib3hBY3Rpb25bXT47XG4gIHNob3dEcm9wZG93bkJ1dHRvbiQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICBhY3Rpb25zQXZhaWxhYmxlJDogT2JzZXJ2YWJsZTxEaXNwbGF5T3B0aW9ucyB8IHVuZGVmaW5lZD47XG5cbiAgQElucHV0KCkgc2V0IGFjdGlvbnMoYWN0aW9uczogVG9vbGJveEFjdGlvbltdKSB7XG4gICAgdGhpcy5hY3Rpb25zJC5uZXh0KGFjdGlvbnMpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGRyb3Bkb3duQWN0aW9ucyhkcm9wZG93bkFjdGlvbnM6IHsgbmFtZTogc3RyaW5nOyBvcmRlcjogbnVtYmVyIH1bXSkge1xuICAgIHRoaXMuX2Ryb3Bkb3duQWN0aW9ucyQubmV4dChkcm9wZG93bkFjdGlvbnMpO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlLCBAT3B0aW9uYWwoKSBASW5qZWN0KFBSWV9BQ0NFU1NfVE9LRU4pIHByaXZhdGUgcm9sZTogUHJ5QmFzZUFjY2Vzcykge1xuICAgIHRoaXMuaGFzSW5pdGlhbFByZXNlbnRhdGlvbiQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikucGlwZShtYXAoKHByZXMpID0+ICEhcHJlcy5pbml0aWFsKSk7XG4gICAgdGhpcy5pc01hbnVhbE1vZGUkID0gc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KVxuICAgICAgLnBpcGUobWFwKChwcmVzKSA9PiAocHJlcy5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkpO1xuICAgIHRoaXMuYWN0aW9uc0F2YWlsYWJsZSQgPSBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWxsQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGlvbnMkLCB0aGlzLmFjdGlvbnNBdmFpbGFibGUkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2FjdGlvbnMsIGRpc3BsYXlPcHRpb25zXSkgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChcbiAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBhY3Rpb25BdmFpbGFibGUgPSBhY3Rpb24udmlzaWJsZSAmJiBkaXNwbGF5T3B0aW9ucy50b29sYm94W2FjdGlvbi5uYW1lXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvbGVcbiAgICAgICAgICAgICAgPyB0aGlzLnJvbGUuaGFzUm9sZShudWxsLCBhY3Rpb24uYWNjZXNzLm1vZHVsZSwgYWN0aW9uLmFjY2Vzcy5wYWdlLCBhY3Rpb24uYWNjZXNzLmFjdGlvbikucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKGhhc1JvbGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGFjdGlvbkF2YWlsYWJsZSAmJiAoIXRoaXMucm9sZSB8fCBoYXNSb2xlKVxuICAgICAgICAgICAgICAgICAgICAgIH0gYXMgVG9vbGJveEFjdGlvbilcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogb2Yoe1xuICAgICAgICAgICAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgdmlzaWJsZTogYWN0aW9uQXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgfSBhcyBUb29sYm94QWN0aW9uKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLm1haW5BY3Rpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Ryb3Bkb3duQWN0aW9ucyQsIHRoaXMuYWxsQWN0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbZHJvcGRvd25BY3Rpb25zLCBhY3Rpb25zXSkgPT5cbiAgICAgICAgYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5kcm9wZG93bkFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fZHJvcGRvd25BY3Rpb25zJCwgdGhpcy5hbGxBY3Rpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFtkcm9wZG93bkFjdGlvbnMsIGFjdGlvbnNdKSA9PlxuICAgICAgICBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiAhIWRyb3Bkb3duQWN0aW9ucy5maW5kKChkcm9wZG93bkFjdGlvbikgPT4gYWN0aW9uLm5hbWUgPT09IGRyb3Bkb3duQWN0aW9uLm5hbWUpKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNob3dEcm9wZG93bkJ1dHRvbiQgPSB0aGlzLmRyb3Bkb3duQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnZpc2libGUpLmxlbmd0aCA+IDApXG4gICAgKTtcbiAgfVxuXG4gIG9wZW5Ecm9wZG93bigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigkZXZlbnQ6IEV2ZW50IHwgdm9pZCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICBpZiAoJGV2ZW50KSAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXRPcmRlcihhY3Rpb25OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJvcGRvd25BY3Rpb25zJC5nZXRWYWx1ZSgpLmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uTmFtZSA9PT0gYWN0aW9uLm5hbWUpPy5vcmRlcjtcbiAgfVxufVxuIiwiPHVsIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RcIiAjaW5wdXQ+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBtYWluQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpb24udmlzaWJsZVwiPlxuICAgICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIiAqcHJ5QWNjZXNzPVwiYWN0aW9uLmFjY2Vzc1wiPlxuICAgICAgICA8cHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvclxuICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICBbZGlzcGxheUxhYmVsc109XCJkaXNwbGF5TGFiZWxzXCJcbiAgICAgICAgPjwvcHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Ryb3Bkb3duQnV0dG9uJCB8IGFzeW5jXCI+XG4gICAgPGxpIGNsYXNzPVwibS1hY3Rpb25zLWxpc3RfX2l0ZW1cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgLXNpemUtbWRcIlxuICAgICAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICAgIGlkPVwib3B0aW9uc1wiXG4gICAgICAgIGFyaWEtY29udHJvbHM9XCJJRHBhbmVsXCJcbiAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgJ0BwcnkudG9vbGJveC5vcHRpb25zJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIxNFwiIFtoZWlnaHRdPVwiMTRcIiBpY29uU3ZnPVwiY2hldnJvbl9ib3R0b21cIj48L3ByeS1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0Ryb3Bkb3duT3BlblwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJpc0Ryb3Bkb3duT3BlbiA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1kcmFnZ2FibGUtbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cIlwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJvLWRyYWdnYWJsZS1tZW51X19saXN0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRyb3Bkb3duQWN0aW9ucyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbi52aXNpYmxlXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm8tZHJhZ2dhYmxlLW1lbnVfX2xpc3RfX2l0ZW1cIiBbc3R5bGUub3JkZXJdPVwiZ2V0T3JkZXIoYWN0aW9uLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgPHByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3JcbiAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgICAgICAgICAgICAgICAgKGNsb3NlT3B0aW9ucyk9XCJjbG9zZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L3ByeS10b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3I+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bGkgY2xhc3M9XCJtLWFjdGlvbnMtbGlzdF9faXRlbVwiICpuZ0lmPVwiaXNNYW51YWxNb2RlJCB8IGFzeW5jXCI+XG4gICAgPHByeS1lZGl0LW1vZGUtdG9nZ2xlXG4gICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAndG9vbGJveCcsIGFjdGlvbjogJ2VkaXRfZGFzaGJvYXJkJyB9XCJcbiAgICAgIFtkaXNwbGF5TGFiZWxzXT1cImRpc3BsYXlMYWJlbHNcIlxuICAgID48L3ByeS1lZGl0LW1vZGUtdG9nZ2xlPlxuICA8L2xpPlxuPC91bD5cbiJdfQ==
|