mmhglobal-dynamicform 2.30.0 → 2.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/esm2020/lib/services/main.service.mjs +62 -17
- package/esm2020/lib/services/zcomponent.debug.service.mjs +13 -9
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +8 -5
- package/esm2020/lib/uiheader/uiheader.component.mjs +33 -7
- package/esm2020/lib/zform/zform.component.mjs +3 -3
- package/esm2020/lib/zgrid/zgrid.component.mjs +23 -9
- package/fesm2015/mmhglobal-dynamicform.mjs +139 -46
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +137 -45
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/services/main.service.d.ts +7 -0
- package/lib/services/zcomponent.debug.service.d.ts +5 -3
- package/lib/uiheader/uiheader.component.d.ts +6 -2
- package/lib/zgrid/zgrid.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -13,13 +13,14 @@ import * as i10 from "../uiactionbutton/uiactionbutton.component";
|
|
|
13
13
|
import * as i11 from "@angular/common";
|
|
14
14
|
export class UiheaderComponent {
|
|
15
15
|
// backNavigate = null;
|
|
16
|
-
constructor(router, translationService, zcoreService, authService, fontAweSomeService, componentService) {
|
|
16
|
+
constructor(router, translationService, zcoreService, authService, fontAweSomeService, componentService, webApiService) {
|
|
17
17
|
this.router = router;
|
|
18
18
|
this.translationService = translationService;
|
|
19
19
|
this.zcoreService = zcoreService;
|
|
20
20
|
this.authService = authService;
|
|
21
21
|
this.fontAweSomeService = fontAweSomeService;
|
|
22
22
|
this.componentService = componentService;
|
|
23
|
+
this.webApiService = webApiService;
|
|
23
24
|
this.isloading = true;
|
|
24
25
|
this.showBulletinIcon = false;
|
|
25
26
|
this.userPanelItems = [
|
|
@@ -63,14 +64,39 @@ export class UiheaderComponent {
|
|
|
63
64
|
}
|
|
64
65
|
setUserProfile() {
|
|
65
66
|
if (this.authService.e1Token) {
|
|
66
|
-
this.profileImgUrl = this.environment.e1OauthUrl + '/api/ProfileImage?id=' + this.authService.e1Token.myProfile.UserName + '&size=80x80';
|
|
67
67
|
const _myProfile = this.authService.e1Token.myProfile;
|
|
68
68
|
if (_myProfile) {
|
|
69
69
|
this.username = _myProfile.UserName;
|
|
70
70
|
this.userDisplayName = _myProfile.LastName;
|
|
71
|
+
this.setUsernameInitial();
|
|
72
|
+
this.trySetUserProfileImage();
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
}
|
|
76
|
+
setUsernameInitial() {
|
|
77
|
+
const userNameToProcess = this.userDisplayName.replaceAll(/[^a-zA-Z ]/gi, '').trim();
|
|
78
|
+
if (userNameToProcess.length > 0) {
|
|
79
|
+
const nameElements = userNameToProcess.split(' ').filter(n => !!n);
|
|
80
|
+
if (nameElements.length < 2) {
|
|
81
|
+
this.usernameInitial = userNameToProcess.substring(0, Math.min(userNameToProcess.length, 2));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.usernameInitial = `${nameElements[0][0]}${nameElements[1][0]}`;
|
|
85
|
+
}
|
|
86
|
+
this.usernameInitial = this.usernameInitial.toUpperCase();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
trySetUserProfileImage() {
|
|
90
|
+
// To ensure the profile picture is valid before binding in HTML
|
|
91
|
+
const url = this.environment.e1OauthUrl + '/api/ProfileImage?id=' + this.authService.e1Token.myProfile.UserName + '&size=80x80';
|
|
92
|
+
this.webApiService.httpGet$(url, null, { responseType: 'arrayBuffer', isHidePopUpErrorMessage: true }).subscribe({
|
|
93
|
+
next: (res) => {
|
|
94
|
+
if (res instanceof ArrayBuffer) {
|
|
95
|
+
this.profileImgUrl = url;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
74
100
|
translateUserMenu() {
|
|
75
101
|
this.translationService.$translateItemList(this.userPanelItems, "text", { elementName: 'menu', group: this.group }).subscribe();
|
|
76
102
|
}
|
|
@@ -98,14 +124,14 @@ export class UiheaderComponent {
|
|
|
98
124
|
}
|
|
99
125
|
}
|
|
100
126
|
}
|
|
101
|
-
UiheaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UiheaderComponent, deps: [{ token: i1.Router }, { token: i2.TranslationService }, { token: i2.ZCoreService }, { token: i2.AuthService }, { token: i2.FontAweSomeService }, { token: i3.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
UiheaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UiheaderComponent, selector: "app-uiheader", inputs: { group: "group", topFormHeader: "topFormHeader" }, ngImport: i0, template: "<ion-header>\r\n <ion-toolbar>\r\n <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n <div class=\"toolbar-first-row\">\r\n <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n <ion-title class=\"toolbar-title\">\r\n <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n </div>\r\n </ion-title>\r\n\r\n <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n <app-uibulletin *ngIf=\"showBulletinIcon\"></app-uibulletin>\r\n <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </div>\r\n <div *ngIf=\"group && isMobileScreen()\">\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </div>\r\n </div>\r\n\r\n <!-- Design 1 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <div class=\"nav-bar-container\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n </div> -->\r\n <!-- Design 2 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div> -->\r\n </div>\r\n </ion-toolbar>\r\n</ion-header>\r\n", styles: ["ion-toolbar{--background: var(--ion-color-primary-shade);--color: var(--ion-color-primary-contrast);--min-height: var(--ion-header-height);box-shadow:0 2px 9px #ababab}app-uimenubutton{margin:auto}.toolbar-first-row{display:flex}.toolbar-second-row{margin-left:50px}.end-panel{display:flex;align-items:stretch;cursor:pointer}.profile-username{padding-right:10px;margin:auto auto auto 15px;font-size:var(--page-user-profile-font-size)}.toolbar-title-label{text-shadow:.5px .5px rgba(255,255,255,.48);font-size:var(--page-title-font-size)}.toolbar-title{margin-bottom:2px}.hoverable:hover{background:#ffffff24}:host ::ng-deep kendo-floatingactionbutton{max-height:60px;border-radius:10px}:host ::ng-deep kendo-floatingactionbutton .user-panel-button{background:transparent!important;border:none!important;outline:none}:host ::ng-deep kendo-floatingactionbutton:hover{background:rgba(0,0,0,.3)}:host ::ng-deep kendo-floatingactionbutton .k-fab{box-shadow:none;padding:12px}:host ::ng-deep kendo-floatingactionbutton .k-avatar-md{width:var(--ion-header-avatar-size);height:var(--ion-header-avatar-size);flex-basis:var(--ion-header-avatar-size)}\n"], components: [{ type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i5.UimenubuttonComponent, selector: "app-uimenubutton", inputs: ["group"] }, { type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i6.UibulletinComponent, selector: "app-uibulletin", inputs: ["group"] }, { type: i7.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i8.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }, { type: i9.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i10.UiactionbuttonComponent, selector: "app-uiactionbutton" }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i7.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
|
|
127
|
+
UiheaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UiheaderComponent, deps: [{ token: i1.Router }, { token: i2.TranslationService }, { token: i2.ZCoreService }, { token: i2.AuthService }, { token: i2.FontAweSomeService }, { token: i3.ZComponentService }, { token: i2.WebApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
UiheaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UiheaderComponent, selector: "app-uiheader", inputs: { group: "group", topFormHeader: "topFormHeader" }, ngImport: i0, template: "<ion-header>\r\n <ion-toolbar>\r\n <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n <div class=\"toolbar-first-row\">\r\n <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n <ion-title class=\"toolbar-title\">\r\n <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n </div>\r\n </ion-title>\r\n\r\n <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n <app-uibulletin *ngIf=\"showBulletinIcon\" [group]=\"group\"></app-uibulletin>\r\n <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar *ngIf=\"!!profileImgUrl\" shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n <ng-container *ngIf=\"!profileImgUrl\">\r\n <kendo-avatar *ngIf=\"!!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" [initials]=\"usernameInitial\"></kendo-avatar>\r\n <kendo-avatar *ngIf=\"!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" icon=\"user\"></kendo-avatar>\r\n </ng-container>\r\n <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </div>\r\n <div *ngIf=\"group && isMobileScreen()\">\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </div>\r\n </div>\r\n\r\n <!-- Design 1 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <div class=\"nav-bar-container\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n </div> -->\r\n <!-- Design 2 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div> -->\r\n </div>\r\n </ion-toolbar>\r\n</ion-header>\r\n", styles: ["ion-toolbar{--background: var(--ion-color-primary-shade);--color: var(--ion-color-primary-contrast);--min-height: var(--ion-header-height);box-shadow:0 2px 9px #ababab}app-uimenubutton{margin:auto}.toolbar-first-row{display:flex}.toolbar-second-row{margin-left:50px}.end-panel{display:flex;align-items:stretch;cursor:pointer}.username-initial-avatar{background:var(--ion-color-primary-contrast);color:var(--ion-color-primary)}.profile-username{padding-right:10px;margin:auto auto auto 15px;font-size:var(--page-user-profile-font-size)}.toolbar-title-label{text-shadow:.5px .5px rgba(255,255,255,.48);font-size:var(--page-title-font-size)}.toolbar-title{margin-bottom:2px}.hoverable:hover{background:#ffffff24}:host ::ng-deep kendo-floatingactionbutton{max-height:60px;border-radius:10px}:host ::ng-deep kendo-floatingactionbutton .user-panel-button{background:transparent!important;border:none!important;outline:none}:host ::ng-deep kendo-floatingactionbutton:hover{background:rgba(0,0,0,.3)}:host ::ng-deep kendo-floatingactionbutton .k-fab{box-shadow:none;padding:12px}:host ::ng-deep kendo-floatingactionbutton .k-avatar-md{width:var(--ion-header-avatar-size);height:var(--ion-header-avatar-size);flex-basis:var(--ion-header-avatar-size)}\n"], components: [{ type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i5.UimenubuttonComponent, selector: "app-uimenubutton", inputs: ["group"] }, { type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i6.UibulletinComponent, selector: "app-uibulletin", inputs: ["group"] }, { type: i7.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i8.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }, { type: i9.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i10.UiactionbuttonComponent, selector: "app-uiactionbutton" }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i7.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
|
|
103
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UiheaderComponent, decorators: [{
|
|
104
130
|
type: Component,
|
|
105
|
-
args: [{ selector: "app-uiheader", template: "<ion-header>\r\n <ion-toolbar>\r\n <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n <div class=\"toolbar-first-row\">\r\n <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n <ion-title class=\"toolbar-title\">\r\n <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n </div>\r\n </ion-title>\r\n\r\n <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n <app-uibulletin *ngIf=\"showBulletinIcon\"></app-uibulletin>\r\n <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </div>\r\n <div *ngIf=\"group && isMobileScreen()\">\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </div>\r\n </div>\r\n\r\n <!-- Design 1 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <div class=\"nav-bar-container\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n </div> -->\r\n <!-- Design 2 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div> -->\r\n </div>\r\n </ion-toolbar>\r\n</ion-header>\r\n", styles: ["ion-toolbar{--background: var(--ion-color-primary-shade);--color: var(--ion-color-primary-contrast);--min-height: var(--ion-header-height);box-shadow:0 2px 9px #ababab}app-uimenubutton{margin:auto}.toolbar-first-row{display:flex}.toolbar-second-row{margin-left:50px}.end-panel{display:flex;align-items:stretch;cursor:pointer}.profile-username{padding-right:10px;margin:auto auto auto 15px;font-size:var(--page-user-profile-font-size)}.toolbar-title-label{text-shadow:.5px .5px rgba(255,255,255,.48);font-size:var(--page-title-font-size)}.toolbar-title{margin-bottom:2px}.hoverable:hover{background:#ffffff24}:host ::ng-deep kendo-floatingactionbutton{max-height:60px;border-radius:10px}:host ::ng-deep kendo-floatingactionbutton .user-panel-button{background:transparent!important;border:none!important;outline:none}:host ::ng-deep kendo-floatingactionbutton:hover{background:rgba(0,0,0,.3)}:host ::ng-deep kendo-floatingactionbutton .k-fab{box-shadow:none;padding:12px}:host ::ng-deep kendo-floatingactionbutton .k-avatar-md{width:var(--ion-header-avatar-size);height:var(--ion-header-avatar-size);flex-basis:var(--ion-header-avatar-size)}\n"] }]
|
|
106
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.TranslationService }, { type: i2.ZCoreService }, { type: i2.AuthService }, { type: i2.FontAweSomeService }, { type: i3.ZComponentService }]; }, propDecorators: { group: [{
|
|
131
|
+
args: [{ selector: "app-uiheader", template: "<ion-header>\r\n <ion-toolbar>\r\n <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n <div class=\"toolbar-first-row\">\r\n <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n <ion-title class=\"toolbar-title\">\r\n <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n </div>\r\n </ion-title>\r\n\r\n <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n <app-uibulletin *ngIf=\"showBulletinIcon\" [group]=\"group\"></app-uibulletin>\r\n <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar *ngIf=\"!!profileImgUrl\" shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n <ng-container *ngIf=\"!profileImgUrl\">\r\n <kendo-avatar *ngIf=\"!!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" [initials]=\"usernameInitial\"></kendo-avatar>\r\n <kendo-avatar *ngIf=\"!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" icon=\"user\"></kendo-avatar>\r\n </ng-container>\r\n <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </div>\r\n <div *ngIf=\"group && isMobileScreen()\">\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </div>\r\n </div>\r\n\r\n <!-- Design 1 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <div class=\"nav-bar-container\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n </div> -->\r\n <!-- Design 2 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div> -->\r\n </div>\r\n </ion-toolbar>\r\n</ion-header>\r\n", styles: ["ion-toolbar{--background: var(--ion-color-primary-shade);--color: var(--ion-color-primary-contrast);--min-height: var(--ion-header-height);box-shadow:0 2px 9px #ababab}app-uimenubutton{margin:auto}.toolbar-first-row{display:flex}.toolbar-second-row{margin-left:50px}.end-panel{display:flex;align-items:stretch;cursor:pointer}.username-initial-avatar{background:var(--ion-color-primary-contrast);color:var(--ion-color-primary)}.profile-username{padding-right:10px;margin:auto auto auto 15px;font-size:var(--page-user-profile-font-size)}.toolbar-title-label{text-shadow:.5px .5px rgba(255,255,255,.48);font-size:var(--page-title-font-size)}.toolbar-title{margin-bottom:2px}.hoverable:hover{background:#ffffff24}:host ::ng-deep kendo-floatingactionbutton{max-height:60px;border-radius:10px}:host ::ng-deep kendo-floatingactionbutton .user-panel-button{background:transparent!important;border:none!important;outline:none}:host ::ng-deep kendo-floatingactionbutton:hover{background:rgba(0,0,0,.3)}:host ::ng-deep kendo-floatingactionbutton .k-fab{box-shadow:none;padding:12px}:host ::ng-deep kendo-floatingactionbutton .k-avatar-md{width:var(--ion-header-avatar-size);height:var(--ion-header-avatar-size);flex-basis:var(--ion-header-avatar-size)}\n"] }]
|
|
132
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.TranslationService }, { type: i2.ZCoreService }, { type: i2.AuthService }, { type: i2.FontAweSomeService }, { type: i3.ZComponentService }, { type: i2.WebApiService }]; }, propDecorators: { group: [{
|
|
107
133
|
type: Input
|
|
108
134
|
}], topFormHeader: [{
|
|
109
135
|
type: Input
|
|
110
136
|
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWloZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCLENBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFxQnhGLE1BQU0sT0FBTyxpQkFBaUI7SUF1QjVCLHVCQUF1QjtJQUV2QixZQUNVLE1BQWMsRUFDZCxrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsV0FBd0IsRUFDekIsa0JBQXNDLEVBQ3JDLGdCQUFtQztRQUxuQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUExQnRDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFJakIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG1CQUFjLEdBQVE7WUFDM0I7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzFDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxD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RUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxjQUFjLENBQUMsT0FBWTtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQzs7OEdBeEdVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdIQ3JCOUIsK2lIQWlFQTsyRkQ1Q2EsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWM7b1BBTWYsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBaQ29yZVNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSxcclxuICBaR3JvdXBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdWloZWFkZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3VpaGVhZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3VpaGVhZGVyLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgVWloZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgdG9wRm9ybUhlYWRlcjogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIGVudmlyb25tZW50O1xyXG4gIHB1YmxpYyBpc2xvYWRpbmcgPSB0cnVlOztcclxuICBwdWJsaWMgcHJvZmlsZUltZ1VybDogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VybmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VyRGlzcGxheU5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgc2hvd0J1bGxldGluSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VyUGFuZWxJdGVtczogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpY29uOiAndXNlcicsXHJcbiAgICAgIHRleHQ6IFwiUHJvZmlsZVwiLFxyXG4gICAgICBvbkNsaWNrOiB0aGlzLm5hdlRvVXNlclByb2ZpbGUuYmluZCh0aGlzKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGljb246ICdzaWduLW91dC1hbHQnLFxyXG4gICAgICB0ZXh0OiBcIkxvZyBPdXRcIixcclxuICAgICAgb25DbGljazogdGhpcy5uYXZMb2dvdXQuYmluZCh0aGlzKSxcclxuICAgIH1cclxuICBdO1xyXG4gIHByaXZhdGUgbG9hZGVkRW52aXJvbm1lbnRQcm9maWxlTWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vIGJhY2tOYXZpZ2F0ZSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZm9udEF3ZVNvbWVTZXJ2aWNlOiBGb250QXdlU29tZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy56Y29yZVNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wcm9maWxlTWVudSAmJiB0aGlzLmVudmlyb25tZW50LnByb2ZpbGVNZW51Lmxlbmd0aCA+IDAgJiYgIXRoaXMubG9hZGVkRW52aXJvbm1lbnRQcm9maWxlTWVudSkge1xyXG4gICAgICAvLyBCYXNlZCBvbiB0aGUgdGV4dCBjaGFyYWN0ZXJzLCBtaWdodCByZXF1aXJlZCB3aWR0aCBhZGp1c3RtZW50IGZvciB1c2VyLXBhbmVsLWRpYWwuay1mYWItaXRlbXMgaW4gZ2xvYmFsLnNjc3MuXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQucHJvZmlsZU1lbnUuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBuZXdJdGVtID0ge1xyXG4gICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxyXG4gICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxyXG4gICAgICAgICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0udXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJQYW5lbEl0ZW1zLnNwbGljZSgwLCAwLCBuZXdJdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubG9hZGVkRW52aXJvbm1lbnRQcm9maWxlTWVudSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdXRoU2VydmljZS51c2VySXNBdXRoZW50aWNhdGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VXNlclByb2ZpbGUoKTtcclxuICAgICAgdGhpcy50cmFuc2xhdGVVc2VyTWVudSgpO1xyXG4gICAgICB0aGlzLnNob3dCdWxsZXRpbkljb24gPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpLmJ1bGxldGluVXJsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJQcm9maWxlKCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbikge1xyXG4gICAgICB0aGlzLnByb2ZpbGVJbWdVcmwgPSB0aGlzLmVudmlyb25tZW50LmUxT2F1dGhVcmwgKyAnL2FwaS9Qcm9maWxlSW1hZ2U/aWQ9JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi5teVByb2ZpbGUuVXNlck5hbWUgKyAnJnNpemU9ODB4ODAnO1xyXG4gICAgICBjb25zdCBfbXlQcm9maWxlID0gdGhpcy5hdXRoU2VydmljZS5lMVRva2VuLm15UHJvZmlsZTtcclxuICAgICAgaWYgKF9teVByb2ZpbGUpIHtcclxuICAgICAgICB0aGlzLnVzZXJuYW1lID0gX215UHJvZmlsZS5Vc2VyTmFtZTtcclxuICAgICAgICB0aGlzLnVzZXJEaXNwbGF5TmFtZSA9IF9teVByb2ZpbGUuTGFzdE5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlVXNlck1lbnUoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QodGhpcy51c2VyUGFuZWxJdGVtcywgXCJ0ZXh0XCIsIHsgZWxlbWVudE5hbWU6ICdtZW51JywgZ3JvdXA6IHRoaXMuZ3JvdXAgfSkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EaWFsSXRlbUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5pdGVtLm9uQ2xpY2spIHtcclxuICAgICAgZXZlbnQuaXRlbS5vbkNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdlRvVXNlclByb2ZpbGUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvdXNlclByb2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2TG9nb3V0KCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hdXRoJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmF2SG9tZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5lbnZpcm9ubWVudC5zdGFydFVwUGFnZS5yZXBsYWNlKFwiX1wiLCBcIlwiKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNNb2JpbGVTY3JlZW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OYXZJdGVtQ2xpY2sobmF2SXRlbTogYW55KSB7XHJcbiAgICBpZiAobmF2SXRlbS5yb3V0ZSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5hdkl0ZW0ucm91dGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVG8gc3RpbXVsYXRlIG5ldmVyIGNsb3NlXHJcbiAgLy8gcHVibGljIG9uQ2xvc2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAvLyB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXItY29udGFpbmVyXCIgKm5nSWY9XCIhaXNsb2FkaW5nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWZpcnN0LXJvd1wiPlxyXG4gICAgICAgIDxhcHAtdWltZW51YnV0dG9uIHNsb3Q9XCJzdGFydFwiIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpbWVudWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGlvbi10aXRsZSBjbGFzcz1cInRvb2xiYXItdGl0bGVcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0b3BGb3JtSGVhZGVyIHx8IChncm91cCAmJiAhZ3JvdXAuaXNMb2FkaW5nICYmIGdyb3VwLmZvcm1IZWFkZXIpXCI+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ0b29sYmFyLXRpdGxlLWxhYmVsXCI+e3sgdG9wRm9ybUhlYWRlciA/IHRvcEZvcm1IZWFkZXIgOiBncm91cC5mb3JtSGVhZGVyIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi10aXRsZT5cclxuXHJcbiAgICAgICAgPGRpdiBzbG90PVwiZW5kXCIgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiIGNsYXNzPVwiZW5kLXBhbmVsIGhvdmVyYWJsZVwiPlxyXG4gICAgICAgICAgPGFwcC11aWJ1bGxldGluICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPjwvYXBwLXVpYnVsbGV0aW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS12bFwiICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxrZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbiBbZGlhbEl0ZW1zXT1cInVzZXJQYW5lbEl0ZW1zXCIgW29mZnNldF09XCJ7eDonLTVweCcsIHk6Jy01cHgnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInsgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnZW5kJyB9XCIgW2RpYWxJdGVtQW5pbWF0aW9uXT10cnVlIGJ1dHRvbkNsYXNzPVwidXNlci1wYW5lbC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxDbGFzcz1cInVzZXItcGFuZWwtZGlhbFwiIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0Zsb2F0aW5nQWN0aW9uQnV0dG9uVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGtlbmRvLWF2YXRhciBzaGFwZT1cImNpcmNsZVwiIFtpbWFnZVNyY109XCJwcm9maWxlSW1nVXJsXCI+PC9rZW5kby1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInByb2ZpbGUtdXNlcm5hbWVcIj57eyB1c2VyRGlzcGxheU5hbWUgfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaXNGb2N1c2VkPVwiaXNGb2N1c2VkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmN1c3RvbS1mb2N1c2VkLWNsYXNzXT1cImlzRm9jdXNlZFwiIGNsYXNzPVwidXNlci1wYW5lbC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIiBjbGFzcz1cInVzZXItcGFuZWwtaXRlbS1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLXBhbmVsLW9wdGlvbi10ZXh0XCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwICYmIGlzTW9iaWxlU2NyZWVuKClcIj5cclxuICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERlc2lnbiAxIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1iYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8a2VuZG8tYnJlYWRjcnVtYiBbaXRlbXNdPVwiZ3JvdXAubmF2SXRlbXNcIiBjbGFzcz1cIm5hdi1iYXJcIiAoaXRlbUNsaWNrKT1cIm9uTmF2SXRlbUNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQnJlYWRDcnVtYkl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIERlc2lnbiAyIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGtlbmRvLWJyZWFkY3J1bWIgW2l0ZW1zXT1cImdyb3VwLm5hdkl0ZW1zXCIgY2xhc3M9XCJuYXYtYmFyXCIgKGl0ZW1DbGljayk9XCJvbk5hdkl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9CcmVhZENydW1iSXRlbVRlbXBsYXRlIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiIFtuZ0NsYXNzXT1cInsnaWNvbi13aXRoLXRleHQnOiBpdGVtLnRleHR9XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuPC9pb24taGVhZGVyPlxyXG4iXX0=
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWloZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCLENBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFxQnhGLE1BQU0sT0FBTyxpQkFBaUI7SUF3QjVCLHVCQUF1QjtJQUV2QixZQUNVLE1BQWMsRUFDZCxrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsV0FBd0IsRUFDekIsa0JBQXNDLEVBQ3JDLGdCQUFtQyxFQUNuQyxhQUE0QjtRQU41QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1Qi9CLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFLakIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG1CQUFjLEdBQVE7WUFDM0I7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzFDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLElBQUksRUFB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QUN0QjtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxjQUFjLENBQUMsT0FBWTtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQzs7OEdBdElVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdIQ3JCOUIsaStIQXFFQTsyRkRoRGEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGNBQWM7Z1JBTWYsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBaQ29yZVNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBUcmFuc2xhdGlvblNlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSxcclxuICBaR3JvdXAsIFdlYkFwaVNlcnZpY2VcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdWloZWFkZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3VpaGVhZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3VpaGVhZGVyLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgVWloZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgdG9wRm9ybUhlYWRlcjogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIGVudmlyb25tZW50O1xyXG4gIHB1YmxpYyBpc2xvYWRpbmcgPSB0cnVlOztcclxuICBwdWJsaWMgcHJvZmlsZUltZ1VybDogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VybmFtZUluaXRpYWw6IHN0cmluZztcclxuICBwdWJsaWMgdXNlcm5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgdXNlckRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIHNob3dCdWxsZXRpbkljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlclBhbmVsSXRlbXM6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgaWNvbjogJ3VzZXInLFxyXG4gICAgICB0ZXh0OiBcIlByb2ZpbGVcIixcclxuICAgICAgb25DbGljazogdGhpcy5uYXZUb1VzZXJQcm9maWxlLmJpbmQodGhpcyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpY29uOiAnc2lnbi1vdXQtYWx0JyxcclxuICAgICAgdGV4dDogXCJMb2cgT3V0XCIsXHJcbiAgICAgIG9uQ2xpY2s6IHRoaXMubmF2TG9nb3V0LmJpbmQodGhpcyksXHJcbiAgICB9XHJcbiAgXTtcclxuICBwcml2YXRlIGxvYWRlZEVudmlyb25tZW50UHJvZmlsZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBiYWNrTmF2aWdhdGUgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQucHJvZmlsZU1lbnUgJiYgdGhpcy5lbnZpcm9ubWVudC5wcm9maWxlTWVudS5sZW5ndGggPiAwICYmICF0aGlzLmxvYWRlZEVudmlyb25tZW50UHJvZmlsZU1lbnUpIHtcclxuICAgICAgLy8gQmFzZWQgb24gdGhlIHRleHQgY2hhcmFjdGVycywgbWlnaHQgcmVxdWlyZWQgd2lkdGggYWRqdXN0bWVudCBmb3IgdXNlci1wYW5lbC1kaWFsLmstZmFiLWl0ZW1zIGluIGdsb2JhbC5zY3NzLlxyXG4gICAgICB0aGlzLmVudmlyb25tZW50LnByb2ZpbGVNZW51LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcclxuICAgICAgICAgIGljb246IGl0ZW0uaWNvbixcclxuICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcclxuICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChpdGVtLnVybCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy51c2VyUGFuZWxJdGVtcy5zcGxpY2UoMCwgMCwgbmV3SXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxvYWRlZEVudmlyb25tZW50UHJvZmlsZU1lbnUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UudXNlcklzQXV0aGVudGljYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldFVzZXJQcm9maWxlKCk7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlVXNlck1lbnUoKTtcclxuICAgICAgdGhpcy5zaG93QnVsbGV0aW5JY29uID0gdGhpcy56Y29yZVNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKS5idWxsZXRpblVybCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVc2VyUHJvZmlsZSgpIHtcclxuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmUxVG9rZW4pIHtcclxuICAgICAgY29uc3QgX215UHJvZmlsZSA9IHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi5teVByb2ZpbGU7XHJcbiAgICAgIGlmIChfbXlQcm9maWxlKSB7XHJcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IF9teVByb2ZpbGUuVXNlck5hbWU7XHJcbiAgICAgICAgdGhpcy51c2VyRGlzcGxheU5hbWUgPSBfbXlQcm9maWxlLkxhc3ROYW1lO1xyXG4gICAgICAgIHRoaXMuc2V0VXNlcm5hbWVJbml0aWFsKCk7XHJcbiAgICAgICAgdGhpcy50cnlTZXRVc2VyUHJvZmlsZUltYWdlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXNlcm5hbWVJbml0aWFsKCkge1xyXG4gICAgY29uc3QgdXNlck5hbWVUb1Byb2Nlc3MgPSB0aGlzLnVzZXJEaXNwbGF5TmFtZS5yZXBsYWNlQWxsKC9bXmEtekEtWiBdL2dpLCAnJykudHJpbSgpO1xyXG4gICAgaWYgKHVzZXJOYW1lVG9Qcm9jZXNzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbmFtZUVsZW1lbnRzID0gdXNlck5hbWVUb1Byb2Nlc3Muc3BsaXQoJyAnKS5maWx0ZXIobiA9PiAhIW4pO1xyXG4gICAgICBpZiAobmFtZUVsZW1lbnRzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICB0aGlzLnVzZXJuYW1lSW5pdGlhbCA9IHVzZXJOYW1lVG9Qcm9jZXNzLnN1YnN0cmluZygwLCBNYXRoLm1pbih1c2VyTmFtZVRvUHJvY2Vzcy5sZW5ndGgsIDIpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnVzZXJuYW1lSW5pdGlhbCA9IGAke25hbWVFbGVtZW50c1swXVswXX0ke25hbWVFbGVtZW50c1sxXVswXX1gXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXNlcm5hbWVJbml0aWFsID0gdGhpcy51c2VybmFtZUluaXRpYWwudG9VcHBlckNhc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJ5U2V0VXNlclByb2ZpbGVJbWFnZSgpIHtcclxuICAgIC8vIFRvIGVuc3VyZSB0aGUgcHJvZmlsZSBwaWN0dXJlIGlzIHZhbGlkIGJlZm9yZSBiaW5kaW5nIGluIEhUTUxcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuZW52aXJvbm1lbnQuZTFPYXV0aFVybCArICcvYXBpL1Byb2ZpbGVJbWFnZT9pZD0nICsgdGhpcy5hdXRoU2VydmljZS5lMVRva2VuLm15UHJvZmlsZS5Vc2VyTmFtZSArICcmc2l6ZT04MHg4MCc7XHJcbiAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodXJsLCBudWxsLCB7IHJlc3BvbnNlVHlwZTogJ2FycmF5QnVmZmVyJywgaXNIaWRlUG9wVXBFcnJvck1lc3NhZ2U6IHRydWUgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xyXG4gICAgICAgICAgdGhpcy5wcm9maWxlSW1nVXJsID0gdXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZVVzZXJNZW51KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KHRoaXMudXNlclBhbmVsSXRlbXMsIFwidGV4dFwiLCB7IGVsZW1lbnROYW1lOiAnbWVudScsIGdyb3VwOiB0aGlzLmdyb3VwIH0pLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGlhbEl0ZW1DbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQuaXRlbS5vbkNsaWNrKSB7XHJcbiAgICAgIGV2ZW50Lml0ZW0ub25DbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZUb1VzZXJQcm9maWxlKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL3VzZXJQcm9maWxlJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdkxvZ291dCgpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXV0aCcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5hdkhvbWUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZW52aXJvbm1lbnQuc3RhcnRVcFBhZ2UucmVwbGFjZShcIl9cIiwgXCJcIikpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzTW9iaWxlU2NyZWVuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U2VydmljZS5pc01vYmlsZVNjcmVlbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmF2SXRlbUNsaWNrKG5hdkl0ZW06IGFueSkge1xyXG4gICAgaWYgKG5hdkl0ZW0ucm91dGUpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChuYXZJdGVtLnJvdXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRvIHN0aW11bGF0ZSBuZXZlciBjbG9zZVxyXG4gIC8vIHB1YmxpYyBvbkNsb3NlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAvLyAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgLy8gfVxyXG59XHJcbiIsIjxpb24taGVhZGVyPlxyXG4gIDxpb24tdG9vbGJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzbG9hZGluZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci1maXJzdC1yb3dcIj5cclxuICAgICAgICA8YXBwLXVpbWVudWJ1dHRvbiBzbG90PVwic3RhcnRcIiBbZ3JvdXBdPVwiZ3JvdXBcIj48L2FwcC11aW1lbnVidXR0b24+XHJcblxyXG4gICAgICAgIDxpb24tdGl0bGUgY2xhc3M9XCJ0b29sYmFyLXRpdGxlXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwidG9wRm9ybUhlYWRlciB8fCAoZ3JvdXAgJiYgIWdyb3VwLmlzTG9hZGluZyAmJiBncm91cC5mb3JtSGVhZGVyKVwiPlxyXG4gICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidG9vbGJhci10aXRsZS1sYWJlbFwiPnt7IHRvcEZvcm1IZWFkZXIgPyB0b3BGb3JtSGVhZGVyIDogZ3JvdXAuZm9ybUhlYWRlciB9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tdGl0bGU+XHJcblxyXG4gICAgICAgIDxkaXYgc2xvdD1cImVuZFwiICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIiBjbGFzcz1cImVuZC1wYW5lbCBob3ZlcmFibGVcIj5cclxuICAgICAgICAgIDxhcHAtdWlidWxsZXRpbiAqbmdJZj1cInNob3dCdWxsZXRpbkljb25cIiBbZ3JvdXBdPVwiZ3JvdXBcIj48L2FwcC11aWJ1bGxldGluPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtdmxcIiAqbmdJZj1cInNob3dCdWxsZXRpbkljb25cIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICA8a2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24gW2RpYWxJdGVtc109XCJ1c2VyUGFuZWxJdGVtc1wiIFtvZmZzZXRdPVwie3g6Jy01cHgnLCB5OictNXB4J31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGlnbl09XCJ7IHZlcnRpY2FsOiAndG9wJywgaG9yaXpvbnRhbDogJ2VuZCcgfVwiIFtkaWFsSXRlbUFuaW1hdGlvbl09dHJ1ZSBidXR0b25DbGFzcz1cInVzZXItcGFuZWwtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ2xhc3M9XCJ1c2VyLXBhbmVsLWRpYWxcIiAoZGlhbEl0ZW1DbGljayk9XCJvbkRpYWxJdGVtQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9GbG9hdGluZ0FjdGlvbkJ1dHRvblRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxrZW5kby1hdmF0YXIgKm5nSWY9XCIhIXByb2ZpbGVJbWdVcmxcIiBzaGFwZT1cImNpcmNsZVwiIFtpbWFnZVNyY109XCJwcm9maWxlSW1nVXJsXCI+PC9rZW5kby1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcm9maWxlSW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgICA8a2VuZG8tYXZhdGFyICpuZ0lmPVwiISF1c2VybmFtZUluaXRpYWxcIiBjbGFzcz1cInVzZXJuYW1lLWluaXRpYWwtYXZhdGFyXCIgc2hhcGU9XCJjaXJjbGVcIiBbaW5pdGlhbHNdPVwidXNlcm5hbWVJbml0aWFsXCI+PC9rZW5kby1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICA8a2VuZG8tYXZhdGFyICpuZ0lmPVwiIXVzZXJuYW1lSW5pdGlhbFwiIGNsYXNzPVwidXNlcm5hbWUtaW5pdGlhbC1hdmF0YXJcIiBzaGFwZT1cImNpcmNsZVwiIGljb249XCJ1c2VyXCI+PC9rZW5kby1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInByb2ZpbGUtdXNlcm5hbWVcIj57eyB1c2VyRGlzcGxheU5hbWUgfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaXNGb2N1c2VkPVwiaXNGb2N1c2VkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmN1c3RvbS1mb2N1c2VkLWNsYXNzXT1cImlzRm9jdXNlZFwiIGNsYXNzPVwidXNlci1wYW5lbC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIiBjbGFzcz1cInVzZXItcGFuZWwtaXRlbS1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLXBhbmVsLW9wdGlvbi10ZXh0XCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwICYmIGlzTW9iaWxlU2NyZWVuKClcIj5cclxuICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERlc2lnbiAxIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1iYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8a2VuZG8tYnJlYWRjcnVtYiBbaXRlbXNdPVwiZ3JvdXAubmF2SXRlbXNcIiBjbGFzcz1cIm5hdi1iYXJcIiAoaXRlbUNsaWNrKT1cIm9uTmF2SXRlbUNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQnJlYWRDcnVtYkl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIERlc2lnbiAyIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGtlbmRvLWJyZWFkY3J1bWIgW2l0ZW1zXT1cImdyb3VwLm5hdkl0ZW1zXCIgY2xhc3M9XCJuYXYtYmFyXCIgKGl0ZW1DbGljayk9XCJvbk5hdkl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9CcmVhZENydW1iSXRlbVRlbXBsYXRlIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiIFtuZ0NsYXNzXT1cInsnaWNvbi13aXRoLXRleHQnOiBpdGVtLnRleHR9XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuPC9pb24taGVhZGVyPlxyXG4iXX0=
|
|
@@ -5,7 +5,7 @@ import { FormGroup, FormControl } from "@angular/forms";
|
|
|
5
5
|
/********** Plugin **********/
|
|
6
6
|
import { of } from 'rxjs';
|
|
7
7
|
import { switchMap, delay, tap } from 'rxjs/operators';
|
|
8
|
-
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
8
|
+
import { ZComponentHelper, FormType } from 'mmhglobal-zcore';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "mmhglobal-zcore";
|
|
11
11
|
import * as i2 from "../services/zcomponent.debug.service";
|
|
@@ -55,7 +55,7 @@ export class ZformComponent {
|
|
|
55
55
|
// });
|
|
56
56
|
//}
|
|
57
57
|
//else {
|
|
58
|
-
this.fieldService.getFormFieldCode(this.fieldName,
|
|
58
|
+
this.fieldService.getFormFieldCode(this.fieldName, FormType.formField, this, 'fields').pipe(switchMap(fieldElements => {
|
|
59
59
|
return this.onStartDebuggerOrLoadFromCache(fieldElements);
|
|
60
60
|
}), switchMap(() => {
|
|
61
61
|
this.isLoading = false;
|
|
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
184
184
|
}], fieldName: [{
|
|
185
185
|
type: Input
|
|
186
186
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sY0FBYztJQVd6QixZQUNVLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQW9DLEVBQ3BDLFlBQTBCLEVBQzFCLFlBQTBCO0lBQ2xDLHNDQUFzQztJQUN0Qyx5QkFBeUI7O1FBTmpCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUNwQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVRwQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGVBQVUsR0FBRyxFQUFFLENBQUM7SUFVWixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENB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QUssVUFBVSxFQUFFO1lBQ3ZDLE9BQU8sYUFBYSxFQUFFLENBQUM7U0FDeEI7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFJO1FBQzNCLDJDQUEyQztRQUMzQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzJHQWhNVSxjQUFjOytGQUFkLGNBQWMscUdDeEIzQixpeEJBZUE7MkZEU2EsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXO3dOQU1aLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBkZWxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50RGVidWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSwgRmllbGRTZXJ2aWNlLCBaQ29yZVNlcnZpY2UsIENhY2hlU2VydmljZSxcclxuICBaQ29tcG9uZW50SGVscGVyLCBaR3JvdXAsIFpGaWVsZFxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpmb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96Zm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Zm9ybS5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpmb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZmllbGROYW1lOiBzdHJpbmc7XHJcbiAgLy8gQFZpZXdDaGlsZCgnZnJtJywge3N0YXRpYzogdHJ1ZX0pIGZvcm06IE5nRm9ybTtcclxuXHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIGZpZWxkczogQXJyYXk8WkZpZWxkPjtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGZpZWxkSW5kZXggPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRlYnVnU2VydmljZTogWkNvbXBvbmVudERlYnVnU2VydmljZSxcclxuICAgIHByaXZhdGUgemNvcmVTZXJ2aWNlOiBaQ29yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlXHJcbiAgICAvLyBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmZpZWxkTmFtZSkge1xyXG4gICAgICB0aGlzLm9uSW5pdE5vcm1hbCgpO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vY29uc3QgY2FjaGVLZXkgPSBgRm9ybUZpZWxkXyR7dGhpcy5maWVsZE5hbWV9YDtcclxuICAgICAgLy8gaWYgZ2V0IGZyb20gY2FjaGUsIGZpZWxkIHdvbnQgbG9hZC4gdGVtcG9yYXJ5IGNvbW1lbnQgb3V0LlxyXG4gICAgICAvL2NvbnN0IGNhY2hlZERhdGEgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoY2FjaGVLZXkpO1xyXG4gICAgICAvL2lmIChjYWNoZWREYXRhKSB7XHJcbiAgICAgIC8vICBvZihjYWNoZWREYXRhKS5waXBlKFxyXG4gICAgICAvLyAgICBzd2l0Y2hNYXAoY2FjaGVkRGF0YSA9PiB7XHJcbiAgICAgIC8vICAgICAgY29uc3QgY2FjaGVkWkZpZWxkID0gY2FjaGVkRGF0YSBhcyBaRmllbGRbXTtcclxuICAgICAgLy8gICAgICByZXR1cm4gdGhpcy5vblN0YXJ0RGVidWdnZXJPckxvYWRGcm9tQ2FjaGUoY2FjaGVkWkZpZWxkKTtcclxuICAgICAgLy8gICAgfSksXHJcbiAgICAgIC8vICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgIC8vICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgLy8gICAgICBpZiAodGhpcy5ncm91cC5faXNEZWJ1Z2dpbmcgJiYgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nKSB7XHJcbiAgICAgIC8vICAgICAgICB0aGlzLmdyb3VwLl9kZWJ1Zy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgLy8gICAgICB9XHJcbiAgICAgIC8vICAgIH0pLFxyXG4gICAgICAvLyAgICBkZWxheSg1MDApXHJcbiAgICAgIC8vICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vICAgIHRoaXMuZGVidWdTZXJ2aWNlLkxvYWRHcmlkRGF0YSgpO1xyXG4gICAgICAvLyAgICB0aGlzLmRlYnVnU2VydmljZS5sb2FkV29ya2Zsb3dEYXRhKCk7XHJcbiAgICAgIC8vICB9KTtcclxuICAgICAgLy99XHJcbiAgICAgIC8vZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5maWVsZE5hbWUsICdGb3JtRmllbGQnLCB0aGlzLCAnZmllbGRzJykucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoZmllbGRFbGVtZW50cyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5vblN0YXJ0RGVidWdnZXJPckxvYWRGcm9tQ2FjaGUoZmllbGRFbGVtZW50cyk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cC5faXNEZWJ1Z2dpbmcgJiYgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuX2RlYnVnLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBkZWxheSg1MDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWJ1Z1NlcnZpY2UubG9hZEdyaWREYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5sb2FkV29ya2Zsb3dEYXRhKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIC8vfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblN0YXJ0RGVidWdnZXJPckxvYWRGcm9tQ2FjaGUoY2FjaGVkWkZpZWxkOiBaRmllbGRbXSkge1xyXG4gICAgaWYgKHRoaXMuZmllbGROYW1lID09PSAnZGVidWdWMicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVidWdTZXJ2aWNlLm9uU3RhcnREZWJ1Z2dlcihjYWNoZWRaRmllbGQsIHRoaXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cC5maWVsZHMgPSBjYWNoZWRaRmllbGQ7XHJcbiAgICAgIHRoaXMub25Jbml0Tm9ybWFsKCk7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikgeyAgLy8gZm9yIGRlYnVnZ2VyIHN1YnNjcmlwdGlvblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXAoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZE5hbWUgIT09ICdkZWJ1Z1YyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLl9kZWJ1ZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Jbml0Tm9ybWFsKCkge1xyXG4gICAgb2YodHJ1ZSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLnRvRm9ybUdyb3VwKHRoaXMuZ3JvdXAuZmllbGRzKTtcclxuICAgICAgICB0aGlzLmdyb3VwLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICAgICAgdGhpcy5maWVsZHMgPSB0aGlzLmdyb3VwLmZpZWxkcztcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwWydhZnRlckZvcm1Jbml0J10pIHtcclxuICAgICAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwWydhZnRlckZvcm1Jbml0J10oKTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBDb21wb25lbnRJc1Zpc2libGUoZmllbGQ6IFpGaWVsZCk6IGFueSB7XHJcbiAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5Db21wb25lbnRJc1Zpc2libGUoZmllbGQsIHRoaXMuZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0Zvcm1Hcm91cChmaWVsZEVsZW1lbnRzOiBBcnJheTxaRmllbGQ+KSB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSA9IHt9O1xyXG4gICAgdGhpcy5nZXRGb3JtQ29udHJvbHMoZmllbGRFbGVtZW50cywgZm9ybUNvbnRyb2xzKTtcclxuICAgIGNvbnN0IG5ld0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoZm9ybUNvbnRyb2xzKTtcclxuICAgIHJldHVybiBuZXdGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvRmllbGRJbmRleChmaWVsZDogWkZpZWxkKSB7XHJcbiAgICBpZiAoIWZpZWxkLk5hbWUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRmllbGQgTmFtZSB1bmRlZmluZWQ6ICcsIGZpZWxkKTtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5OYW1lICYmICF0aGlzLmZpZWxkSW5kZXguaW5jbHVkZXMoZmllbGQuTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWVsZEluZGV4LnB1c2goZmllbGQuTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGaWVsZCBOYW1lIER1cGxpY2F0aW9uOiAnICsgZmllbGQuTmFtZSArICc7ICAnLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1Db250cm9scyhcclxuICAgIGZpZWxkQXJyYXk6IEFycmF5PFpGaWVsZD4sXHJcbiAgICBmb3JtQ29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSxcclxuICAgIGNvbnRhaW5lcklzVmlzaWJsZTogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGZpZWxkQXJyYXkuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmICghZmllbGQuU3ViVHlwZSkge1xyXG4gICAgICAgIHRoaXMuYWRkVG9GaWVsZEluZGV4KGZpZWxkKTtcclxuICAgICAgICB0aGlzLmZpZWxkU2VydmljZS5wYXRjaEZpZWxkUHJvcGVydHkoZmllbGQpO1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLlZhbHVlID09PSBcInN0cmluZ1wiICYmIGZpZWxkLlZhbHVlLmluZGV4T2YoXCIuXCIpICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKFsnemdyaWQnLCAnenRyZWUnLCAndGV4dGFyZWFqc29uJywgJ3pnYW50dGNoYXJ0J10uaW5kZXhPZihmaWVsZC5UeXBlKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRm9ybUNvbnRyb2wgLSBpbnZhbGlkIGZpZWxkIHZhbHVlXCIsIGZpZWxkLlZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5WYWx1ZSkgJiYgZmllbGQuVHlwZSAhPT0gJ3psb29wJykge1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJJc1Zpc2libGUgPSBaQ29tcG9uZW50SGVscGVyLmlzVmlzaWJsZUZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbHMoZmllbGQuVmFsdWUsIGZvcm1Db250cm9scywgY29udGFpbmVySXNWaXNpYmxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gWkNvbXBvbmVudEhlbHBlci5pc0Zvcm1Db250cm9sKGZpZWxkKTtcclxuICAgICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gWkNvbXBvbmVudEhlbHBlci5pc1Zpc2libGVGb3JtQ29udHJvbCh0aGlzLCBmaWVsZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBaQ29tcG9uZW50SGVscGVyLmlzUmVxdWlyZWRGb3JtQ29udHJvbCh0aGlzLCBmaWVsZCk7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBjb250YWluZXIgfHwgY29udHJvbCB2aXNpYmxlID09IGZhbHNlLCBkb250IGluY3JlYXNlIHRoZSBjb3VudGVyLlxyXG4gICAgICAgICAgICBpZiAoaXNWaXNpYmxlICYmIGNvbnRhaW5lcklzVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmllbGRTZXJ2aWNlLmluY3JlbWVudENvbXBvbmVudENvdW50ZXIoZmllbGQuRmllbGRFbGVtZW50TmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0Zvcm1Db250cm9sID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0VmFsaWRhdG9ycyhmaWVsZCwgaXNWaXNpYmxlLCBpc1JlcXVpcmVkLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQuVmFsdWVdID0gbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdLCB2YWxpZGF0b3JzXHJcbiAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKFpDb21wb25lbnRIZWxwZXIuaGFzQ0NGaWVsZChmaWVsZC5UeXBlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2NWYWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gWkNvbXBvbmVudEhlbHBlci5nZXRDQ1ZhbGlkYXRvcnMoZmllbGQsIGlzVmlzaWJsZSwgaXNSZXF1aXJlZCk7XHJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQuQ0NWYWx1ZV0gPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkLkNDVmFsdWVdLFxyXG4gICAgICAgICAgICAgICAgICBjY1ZhbGlkYXRvcnNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmVhZE9ubHlWYWx1ZShmaWVsZDogWkZpZWxkKSB7XHJcbiAgICBjb25zdCByZWFkT25seVZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlJlYWRPbmx5KTtcclxuICAgIGlmICh0eXBlb2YgcmVhZE9ubHlWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRPbmx5VmFsdWU7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbSk6IG51bWJlciB7XHJcbiAgICAvL3JldHVybiBpdGVtWydUeXBlJ10gKyAnLScgKyBpdGVtWydOYW1lJ107XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGdldFZhbHVlKGZpZWxkOiBaRmllbGQpIHtcclxuICAvLyAgIGlmIChmaWVsZC5UeXBlLmluZGV4T2YoJ2RhdGUnKSAhPT0gLTEpIHtcclxuICAvLyAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkLlZhbHVlXSk7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZTEtZm9ybVwiPlxyXG4gIDwhLS08ZGl2IGNsYXNzPVwiay1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2Rpdj4tLT5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICAgIDxpb24tZ3JpZD5cclxuICAgICAgPGlvbi1yb3cgaWQ9XCJkeW5hbWljLWZvcm0taG9zdFwiIGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgPGFwcC16Zm9ybWNvbnRyb2wgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cFtmaWVsZFsnaXNWaXNpYmxlRmllbGQnXV0gPyBmaWVsZC5EaXZDbGFzcyA6KChmaWVsZC5WaXNpYmxlID09PSB0cnVlKSA/ICBmaWVsZC5EaXZDbGFzcyA6ICdmbGV4LWhpZGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZ2V0R3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2ZpZWxkLlR5cGV9fS17e2ZpZWxkLk5hbWV9fVwiPjwvYXBwLXpmb3JtY29udHJvbD5cclxuICAgICAgPC9pb24tcm93PlxyXG4gICAgPC9pb24tZ3JpZD5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQWtCLFFBQVEsRUFDM0MsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBU3pCLE1BQU0sT0FBTyxjQUFjO0lBV3pCLFlBQ1UsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsWUFBb0MsRUFDcEMsWUFBMEIsRUFDMUIsWUFBMEI7SUFDbEMsc0NBQXNDO0lBQ3RDLHlCQUF5Qjs7UUFOakIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBVHBDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQVVaLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxD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Q3BGLElBQUksT0FBTyxhQUFhLEtBQUssVUFBVSxFQUFFO1lBQ3ZDLE9BQU8sYUFBYSxFQUFFLENBQUM7U0FDeEI7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFJO1FBQzNCLDJDQUEyQztRQUMzQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzJHQWhNVSxjQUFjOytGQUFkLGNBQWMscUdDeEIzQixpeEJBZUE7MkZEU2EsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXO3dOQU1aLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBkZWxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50RGVidWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSwgRmllbGRTZXJ2aWNlLCBaQ29yZVNlcnZpY2UsIENhY2hlU2VydmljZSxcclxuICBaQ29tcG9uZW50SGVscGVyLCBaR3JvdXAsIFpGaWVsZCwgRm9ybVR5cGVcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16Zm9ybVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vemZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vemZvcm0uY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBaZm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZpZWxkTmFtZTogc3RyaW5nO1xyXG4gIC8vIEBWaWV3Q2hpbGQoJ2ZybScsIHtzdGF0aWM6IHRydWV9KSBmb3JtOiBOZ0Zvcm07XHJcblxyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBmaWVsZHM6IEFycmF5PFpGaWVsZD47XHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBmaWVsZEluZGV4ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZWJ1Z1NlcnZpY2U6IFpDb21wb25lbnREZWJ1Z1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxyXG4gICAgLy8gcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZE5hbWUpIHtcclxuICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvL2NvbnN0IGNhY2hlS2V5ID0gYEZvcm1GaWVsZF8ke3RoaXMuZmllbGROYW1lfWA7XHJcbiAgICAgIC8vIGlmIGdldCBmcm9tIGNhY2hlLCBmaWVsZCB3b250IGxvYWQuIHRlbXBvcmFyeSBjb21tZW50IG91dC5cclxuICAgICAgLy9jb25zdCBjYWNoZWREYXRhID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KGNhY2hlS2V5KTtcclxuICAgICAgLy9pZiAoY2FjaGVkRGF0YSkge1xyXG4gICAgICAvLyAgb2YoY2FjaGVkRGF0YSkucGlwZShcclxuICAgICAgLy8gICAgc3dpdGNoTWFwKGNhY2hlZERhdGEgPT4ge1xyXG4gICAgICAvLyAgICAgIGNvbnN0IGNhY2hlZFpGaWVsZCA9IGNhY2hlZERhdGEgYXMgWkZpZWxkW107XHJcbiAgICAgIC8vICAgICAgcmV0dXJuIHRoaXMub25TdGFydERlYnVnZ2VyT3JMb2FkRnJvbUNhY2hlKGNhY2hlZFpGaWVsZCk7XHJcbiAgICAgIC8vICAgIH0pLFxyXG4gICAgICAvLyAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAvLyAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIC8vICAgICAgaWYgKHRoaXMuZ3JvdXAuX2lzRGVidWdnaW5nICYmIHRoaXMuZ3JvdXAuX2RlYnVnLmlzTG9hZGluZykge1xyXG4gICAgICAvLyAgICAgICAgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIC8vICAgICAgfVxyXG4gICAgICAvLyAgICB9KSxcclxuICAgICAgLy8gICAgZGVsYXkoNTAwKVxyXG4gICAgICAvLyAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyAgICB0aGlzLmRlYnVnU2VydmljZS5Mb2FkR3JpZERhdGEoKTtcclxuICAgICAgLy8gICAgdGhpcy5kZWJ1Z1NlcnZpY2UubG9hZFdvcmtmbG93RGF0YSgpO1xyXG4gICAgICAvLyAgfSk7XHJcbiAgICAgIC8vfVxyXG4gICAgICAvL2Vsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKHRoaXMuZmllbGROYW1lLCBGb3JtVHlwZS5mb3JtRmllbGQsIHRoaXMsICdmaWVsZHMnKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcChmaWVsZEVsZW1lbnRzID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLm9uU3RhcnREZWJ1Z2dlck9yTG9hZEZyb21DYWNoZShmaWVsZEVsZW1lbnRzKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmdyb3VwLl9pc0RlYnVnZ2luZyAmJiB0aGlzLmdyb3VwLl9kZWJ1Zy5pc0xvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGRlbGF5KDUwMCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5sb2FkR3JpZERhdGEoKTtcclxuICAgICAgICAgIHRoaXMuZGVidWdTZXJ2aWNlLmxvYWRXb3JrZmxvd0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgLy99XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU3RhcnREZWJ1Z2dlck9yTG9hZEZyb21DYWNoZShjYWNoZWRaRmllbGQ6IFpGaWVsZFtdKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZE5hbWUgPT09ICdkZWJ1Z1YyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWJ1Z1NlcnZpY2Uub25TdGFydERlYnVnZ2VyKGNhY2hlZFpGaWVsZCwgdGhpcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyb3VwLmZpZWxkcyA9IGNhY2hlZFpGaWVsZDtcclxuICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7ICAvLyBmb3IgZGVidWdnZXIgc3Vic2NyaXB0aW9uXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHcm91cCgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkTmFtZSAhPT0gJ2RlYnVnVjInKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuX2RlYnVnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkluaXROb3JtYWwoKSB7XHJcbiAgICBvZih0cnVlKS5waXBlKFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMudG9Gb3JtR3JvdXAodGhpcy5ncm91cC5maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuZm9ybSA9IHRoaXMuZm9ybTtcclxuICAgICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZ3JvdXAuZmllbGRzO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXBbJ2FmdGVyRm9ybUluaXQnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbJ2FmdGVyRm9ybUluaXQnXSgpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIENvbXBvbmVudElzVmlzaWJsZShmaWVsZDogWkZpZWxkKTogYW55IHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLkNvbXBvbmVudElzVmlzaWJsZShmaWVsZCwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvRm9ybUdyb3VwKGZpZWxkRWxlbWVudHM6IEFycmF5PFpGaWVsZD4pIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sczogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9ID0ge307XHJcbiAgICB0aGlzLmdldEZvcm1Db250cm9scyhmaWVsZEVsZW1lbnRzLCBmb3JtQ29udHJvbHMpO1xyXG4gICAgY29uc3QgbmV3Rm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChmb3JtQ29udHJvbHMpO1xyXG4gICAgcmV0dXJuIG5ld0Zvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9GaWVsZEluZGV4KGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGlmICghZmllbGQuTmFtZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGaWVsZCBOYW1lIHVuZGVmaW5lZDogJywgZmllbGQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLk5hbWUgJiYgIXRoaXMuZmllbGRJbmRleC5pbmNsdWRlcyhmaWVsZC5OYW1lKSkge1xyXG4gICAgICB0aGlzLmZpZWxkSW5kZXgucHVzaChmaWVsZC5OYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZpZWxkIE5hbWUgRHVwbGljYXRpb246ICcgKyBmaWVsZC5OYW1lICsgJzsgICcsIGZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xzKFxyXG4gICAgZmllbGRBcnJheTogQXJyYXk8WkZpZWxkPixcclxuICAgIGZvcm1Db250cm9sczogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9LFxyXG4gICAgY29udGFpbmVySXNWaXNpYmxlOiBib29sZWFuID0gdHJ1ZVxyXG4gICkge1xyXG4gICAgZmllbGRBcnJheS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKCFmaWVsZC5TdWJUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5hZGRUb0ZpZWxkSW5kZXgoZmllbGQpO1xyXG4gICAgICAgIHRoaXMuZmllbGRTZXJ2aWNlLnBhdGNoRmllbGRQcm9wZXJ0eShmaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGQuVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgZmllbGQuVmFsdWUuaW5kZXhPZihcIi5cIikgIT09IC0xKSB7XHJcbiAgICAgICAgICBpZiAoWyd6Z3JpZCcsICd6dHJlZScsICd0ZXh0YXJlYWpzb24nLCAnemdhbnR0Y2hhcnQnXS5pbmRleE9mKGZpZWxkLlR5cGUpID09PSAtMSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJGb3JtQ29udHJvbCAtIGludmFsaWQgZmllbGQgdmFsdWVcIiwgZmllbGQuVmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLlZhbHVlKSAmJiBmaWVsZC5UeXBlICE9PSAnemxvb3AnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lcklzVmlzaWJsZSA9IFpDb21wb25lbnRIZWxwZXIuaXNWaXNpYmxlRm9ybUNvbnRyb2wodGhpcywgZmllbGQpO1xyXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9scyhmaWVsZC5WYWx1ZSwgZm9ybUNvbnRyb2xzLCBjb250YWluZXJJc1Zpc2libGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRm9ybUNvbnRyb2wgPSBaQ29tcG9uZW50SGVscGVyLmlzRm9ybUNvbnRyb2woZmllbGQpO1xyXG4gICAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSBaQ29tcG9uZW50SGVscGVyLmlzVmlzaWJsZUZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuICAgICAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IFpDb21wb25lbnRIZWxwZXIuaXNSZXF1aXJlZEZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGlmIGNvbnRhaW5lciB8fCBjb250cm9sIHZpc2libGUgPT0gZmFsc2UsIGRvbnQgaW5jcmVhc2UgdGhlIGNvdW50ZXIuXHJcbiAgICAgICAgICAgIGlmIChpc1Zpc2libGUgJiYgY29udGFpbmVySXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWVsZFNlcnZpY2UuaW5jcmVtZW50Q29tcG9uZW50Q291bnRlcihmaWVsZC5GaWVsZEVsZW1lbnROYW1lKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzRm9ybUNvbnRyb2wgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gWkNvbXBvbmVudEhlbHBlci5nZXRWYWxpZGF0b3JzKGZpZWxkLCBpc1Zpc2libGUsIGlzUmVxdWlyZWQsIHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sc1tmaWVsZC5WYWx1ZV0gPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV0sIHZhbGlkYXRvcnNcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoWkNvbXBvbmVudEhlbHBlci5oYXNDQ0ZpZWxkKGZpZWxkLlR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjY1ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldENDVmFsaWRhdG9ycyhmaWVsZCwgaXNWaXNpYmxlLCBpc1JlcXVpcmVkKTtcclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sc1tmaWVsZC5DQ1ZhbHVlXSA9IG5ldyBGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cC56TW9kZWxbZmllbGQuQ0NWYWx1ZV0sXHJcbiAgICAgICAgICAgICAgICAgIGNjVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZWFkT25seVZhbHVlKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGNvbnN0IHJlYWRPbmx5VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuUmVhZE9ubHkpO1xyXG4gICAgaWYgKHR5cGVvZiByZWFkT25seVZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiByZWFkT25seVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtKTogbnVtYmVyIHtcclxuICAgIC8vcmV0dXJuIGl0ZW1bJ1R5cGUnXSArICctJyArIGl0ZW1bJ05hbWUnXTtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZ2V0VmFsdWUoZmllbGQ6IFpGaWVsZCkge1xyXG4gIC8vICAgaWYgKGZpZWxkLlR5cGUuaW5kZXhPZignZGF0ZScpICE9PSAtMSkge1xyXG4gIC8vICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV07XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJlMS1mb3JtXCI+XHJcbiAgPCEtLTxkaXYgY2xhc3M9XCJrLW92ZXJsYXlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPjwvZGl2Pi0tPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICA8aW9uLXJvdyBpZD1cImR5bmFtaWMtZm9ybS1ob3N0XCIgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICA8YXBwLXpmb3JtY29udHJvbCAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwW2ZpZWxkWydpc1Zpc2libGVGaWVsZCddXSA/IGZpZWxkLkRpdkNsYXNzIDooKGZpZWxkLlZpc2libGUgPT09IHRydWUpID8gIGZpZWxkLkRpdkNsYXNzIDogJ2ZsZXgtaGlkZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJnZXRHcm91cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7ZmllbGQuVHlwZX19LXt7ZmllbGQuTmFtZX19XCI+PC9hcHAtemZvcm1jb250cm9sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L2lvbi1ncmlkPlxyXG4gIDwvZm9ybT5cclxuPC9kaXY+XHJcbiJdfQ==
|