@thetradeengineorg1/snova-shell-module 0.0.262 → 1.0.1
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/bundles/thetradeengineorg1-snova-shell-module.umd.js +4522 -1014
- package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
- package/esm2015/lib/globaldependencies/components/componentbase.js +9 -9
- package/esm2015/lib/globaldependencies/helpers/dom.helper.js +2 -1
- package/esm2015/lib/globaldependencies/helpers/moment-utc-date-adapter.js +11 -11
- package/esm2015/lib/globaldependencies/intercepter/jwt.interceptor.js +6 -6
- package/esm2015/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/highLightText.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/orderby-pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/sanitize.pipe.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/softlabels.pipes.js +13 -13
- package/esm2015/lib/globaldependencies/pipes/utctolocaltime.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.js +11 -11
- package/esm2015/lib/globaldependencies/pipes/workflowstatus.pipes.js +11 -11
- package/esm2015/lib/shell-components/components/Payments/account.component.js +91 -20
- package/esm2015/lib/shell-components/components/Payments/company-information.js +322 -26
- package/esm2015/lib/shell-components/components/Payments/company-plans.component.js +509 -11
- package/esm2015/lib/shell-components/components/Payments/document.component.js +90 -18
- package/esm2015/lib/shell-components/components/Payments/payment-method.component.js +76 -18
- package/esm2015/lib/shell-components/components/Payments/product-service.component.js +317 -22
- package/esm2015/lib/shell-components/components/Payments/purchase-more-licenses.js +119 -22
- package/esm2015/lib/shell-components/components/Payments/transactions.component.js +132 -20
- package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +79 -22
- package/esm2015/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.js +29 -16
- package/esm2015/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.js +55 -19
- package/esm2015/lib/shell-components/components/export-import-configuration/export-configuration.component.js +174 -29
- package/esm2015/lib/shell-components/components/feed-time/feed-time-dialog.component.js +29 -16
- package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +20 -16
- package/esm2015/lib/shell-components/components/header-side/header-side.component.js +443 -102
- package/esm2015/lib/shell-components/components/header-top/header-top.component.js +143 -22
- package/esm2015/lib/shell-components/components/lives/lives-welcome-page.js +39 -10
- package/esm2015/lib/shell-components/components/menu/menu.component.js +182 -83
- package/esm2015/lib/shell-components/components/notifications/announcement-dialog.component.js +57 -20
- package/esm2015/lib/shell-components/components/notifications/notifications.component.js +99 -14
- package/esm2015/lib/shell-components/components/sidebar-top/sidebar-top.component.js +19 -13
- package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +226 -57
- package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +419 -23
- package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +17 -13
- package/esm2015/lib/shell-components/services/authentication.service.js +7 -7
- package/esm2015/lib/shell-components/services/chat.service.js +9 -9
- package/esm2015/lib/shell-components/services/common-used.service.js +7 -7
- package/esm2015/lib/shell-components/services/feature.service.js +7 -7
- package/esm2015/lib/shell-components/services/google-analytics.service.js +6 -6
- package/esm2015/lib/shell-components/services/layout.service.js +6 -6
- package/esm2015/lib/shell-components/services/payment.service.js +7 -7
- package/esm2015/lib/shell-components/services/recentSearch.service.js +9 -9
- package/esm2015/lib/shell-components/services/shell.modules.service.js +11 -11
- package/esm2015/lib/shell-components/services/signalr.service.js +9 -9
- package/esm2015/lib/shell-components/services/theme.service.js +115 -182
- package/esm2015/lib/shell-components/shell.module.js +190 -201
- package/esm2015/lib/shell-components/store/effects/authentication.effects.js +9 -9
- package/esm2015/lib/shell-components/store/effects/chat.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/menuitems.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notification-validator.effects.js +6 -6
- package/esm2015/lib/shell-components/store/effects/notifications.effects.js +6 -6
- package/esm2015/public-api.js +1 -3
- package/fesm2015/thetradeengineorg1-snova-shell-module.js +4208 -1238
- package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
- package/lib/shell-components/components/Payments/document.component.d.ts +1 -1
- package/lib/shell-components/components/header-side/header-side.component.d.ts +2 -6
- package/lib/shell-components/components/sidenav/side-bar.component.d.ts +16 -15
- package/lib/shell-components/shell.module.d.ts +42 -44
- package/package.json +5 -2
- package/public-api.d.ts +0 -2
- package/esm2015/lib/globaldependencies/components/avatar.component.js +0 -28
- package/lib/globaldependencies/components/avatar.component.d.ts +0 -10
|
@@ -36,27 +36,69 @@ import * as i11 from "@ngrx/effects";
|
|
|
36
36
|
import * as i12 from "../../services/google-analytics.service";
|
|
37
37
|
import * as i13 from "../../services/common-used.service";
|
|
38
38
|
import * as i14 from "@angular/material/button";
|
|
39
|
-
import * as i15 from "@angular/
|
|
39
|
+
import * as i15 from "@angular/flex-layout/extended";
|
|
40
40
|
import * as i16 from "@angular/material/menu";
|
|
41
|
-
import * as i17 from "@
|
|
42
|
-
import * as i18 from "@angular/material/
|
|
43
|
-
import * as i19 from "../../../globaldependencies/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
import * as i17 from "@angular/material/icon";
|
|
42
|
+
import * as i18 from "@angular/material/tooltip";
|
|
43
|
+
import * as i19 from "../../../globaldependencies/pipes/softlabels.pipes";
|
|
44
|
+
const _c0 = ["menuTrigger"];
|
|
45
|
+
const _c1 = ["element"];
|
|
46
|
+
const _c2 = ["workspaceElement"];
|
|
47
|
+
const _c3 = ["menuElement"];
|
|
48
|
+
const _c4 = ["addWorkspace"];
|
|
49
|
+
const _c5 = ["allSelected"];
|
|
50
|
+
const _c6 = ["allEditSelected"];
|
|
51
|
+
const _c7 = ["allDeleteSelected"];
|
|
52
|
+
const _c8 = ["infoPopOver"];
|
|
53
|
+
const _c9 = ["openMenuPopUp"];
|
|
54
|
+
function MenuComponent_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
56
|
+
i0.ɵɵelementStart(0, "div");
|
|
57
|
+
i0.ɵɵelementStart(1, "button", 10);
|
|
58
|
+
i0.ɵɵlistener("click", function MenuComponent_div_5_div_1_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r7); const item_r3 = i0.ɵɵnextContext().$implicit; const ctx_r5 = i0.ɵɵnextContext(); return ctx_r5.selectMenu(item_r3, $event); });
|
|
59
|
+
i0.ɵɵelementStart(2, "mat-icon");
|
|
60
|
+
i0.ɵɵtext(3);
|
|
61
|
+
i0.ɵɵelementEnd();
|
|
62
|
+
i0.ɵɵtext(4);
|
|
63
|
+
i0.ɵɵpipe(5, "softLabelsPipe");
|
|
64
|
+
i0.ɵɵelementEnd();
|
|
65
|
+
i0.ɵɵelementEnd();
|
|
66
|
+
} if (rf & 2) {
|
|
67
|
+
const item_r3 = i0.ɵɵnextContext().$implicit;
|
|
68
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
69
|
+
i0.ɵɵadvance(1);
|
|
70
|
+
i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r3.state, "");
|
|
71
|
+
i0.ɵɵadvance(2);
|
|
72
|
+
i0.ɵɵtextInterpolate(item_r3.icon);
|
|
73
|
+
i0.ɵɵadvance(1);
|
|
74
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(5, 3, item_r3.menu, ctx_r4.softLabels), " ");
|
|
75
|
+
} }
|
|
76
|
+
function MenuComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
i0.ɵɵelementStart(0, "div");
|
|
78
|
+
i0.ɵɵtemplate(1, MenuComponent_div_5_div_1_Template, 6, 6, "div", 9);
|
|
79
|
+
i0.ɵɵelementEnd();
|
|
80
|
+
} if (rf & 2) {
|
|
81
|
+
const item_r3 = ctx.$implicit;
|
|
82
|
+
i0.ɵɵadvance(1);
|
|
83
|
+
i0.ɵɵproperty("ngIf", item_r3.type == "link" || item_r3.type == "applicationlink");
|
|
84
|
+
} }
|
|
85
|
+
function MenuComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
87
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
88
|
+
i0.ɵɵelementStart(1, "button", 12);
|
|
89
|
+
i0.ɵɵlistener("click", function MenuComponent_div_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.openApps(); });
|
|
90
|
+
i0.ɵɵpipe(2, "translate");
|
|
91
|
+
i0.ɵɵelementStart(3, "mat-icon", 7);
|
|
92
|
+
i0.ɵɵtext(4, " store ");
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
i0.ɵɵelementEnd();
|
|
96
|
+
} if (rf & 2) {
|
|
97
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
98
|
+
i0.ɵɵproperty("ngClass", ctx_r2.routes.url.includes("/app-store/widgets") ? "icon_active_class" : "");
|
|
99
|
+
i0.ɵɵadvance(1);
|
|
100
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(2, 2, "APP.APPSTORE"));
|
|
101
|
+
} }
|
|
60
102
|
/** @dynamic */
|
|
61
103
|
export class MenuComponent extends CustomAppBaseComponent {
|
|
62
104
|
constructor(store, cookieService, routes, toastr, translateService, authenticationService, route, dialog, rss, location, themeService, actionUpdates$, cdRef, window, googleAnalyticsService, commonService) {
|
|
@@ -134,7 +176,10 @@ export class MenuComponent extends CustomAppBaseComponent {
|
|
|
134
176
|
var companySettingsModel = JSON.parse(localStorage.getItem(LocalStorageProperties.CompanySettings));
|
|
135
177
|
this.companyMainLogo = companySettingsModel.find(x => x.key.toLowerCase() == "mainlogo") != null ? companySettingsModel.find(x => x.key.toLowerCase() == "mainlogo").value : this.companyMainLogo;
|
|
136
178
|
this.companyMiniLogo = companySettingsModel.find(x => x.key.toLowerCase() == "minilogo") != null ? companySettingsModel.find(x => x.key.toLowerCase() == "minilogo").value : this.companyMiniLogo;
|
|
137
|
-
|
|
179
|
+
const favicon = document.getElementById("shortcut-fav-icon");
|
|
180
|
+
if (favicon) {
|
|
181
|
+
favicon.setAttribute("href", this.themeModel.companyMiniLogo);
|
|
182
|
+
}
|
|
138
183
|
this.themeBaseColor = localStorage.getItem('themeColor');
|
|
139
184
|
// // this.themeModel = this.cookieService.check('CompanyTheme') ? JSON.parse(this.cookieService.get("CompanyTheme")) : null;
|
|
140
185
|
// // if (this.themeModel && this.themeModel.companyThemeId !== "00000000-0000-0000-0000-000000000000") {
|
|
@@ -2414,65 +2459,119 @@ export class MenuComponent extends CustomAppBaseComponent {
|
|
|
2414
2459
|
toggleDeleteAllRolesSelected() { }
|
|
2415
2460
|
closeAddWorkspaceDialog() { }
|
|
2416
2461
|
}
|
|
2417
|
-
MenuComponent.ɵfac =
|
|
2418
|
-
MenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.1", type: MenuComponent, selector: "app-menu", inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, host: { listeners: { "document:keydown.control.q": "keyOpenEvent()", "document:keydown.control.m": "keyCloseEvent()", "document:keydown.control.b": "remoteSearchByText()", "document:keydown.control.y": "remoteSearchById()" } }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }, { propertyName: "element", first: true, predicate: ["element"], descendants: true }, { propertyName: "workspaceElement", first: true, predicate: ["workspaceElement"], descendants: true }, { propertyName: "menuElement", first: true, predicate: ["menuElement"], descendants: true }, { propertyName: "addWorkSpacePopOver", first: true, predicate: ["addWorkspace"], descendants: true }, { propertyName: "allSelected", first: true, predicate: ["allSelected"], descendants: true }, { propertyName: "allEditSelected", first: true, predicate: ["allEditSelected"], descendants: true }, { propertyName: "allDeleteSelected", first: true, predicate: ["allDeleteSelected"], descendants: true }, { propertyName: "infoPopOver", first: true, predicate: ["infoPopOver"], descendants: true }, { propertyName: "openMenuPopOver", predicate: ["openMenuPopUp"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<button type=\"submit\" class=\"visibles\" mat-icon-button [matMenuTriggerFor]=\"menus\" fxHide.gt-xs fxShow>\r\n <mat-icon class=\"newMenu\">menu</mat-icon>\r\n</button>\r\n<div fxFlex class=\"newLogo default-bg top-logo-bg newminilogo zoom-image-hover custom-header-icon-mobile\" fxHide.gt-xs fxShow>\r\n <img src=\"{{companyMiniLogo}}\" alt=\"\" id=\"mini-logo-topbar\" style=\"width:30px; height:30px;\"\r\n (click)=\"getAllMenuItems()\" />\r\n</div>\r\n<div fxFlex class=\"newLogo top-logo-bg apps-button zoom-image-hover custom-header-icon\" style=\"left: 0px;\" fxHide fxShow.gt-xs>\r\n <img src=\"{{companyMainLogo}}\" style=\"cursor: pointer;left: 20px;position: relative;\" id=\"main-logo-topbar\"\r\n class=\"img-height-main-logo-topbar\" (click)=\"getAllMenuItems()\" />\r\n</div>\r\n\r\n<!-- \r\n<mat-menu #menus=\"matMenu\" class=\"filter-panel\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let item of(menuItems$ | async)\">\r\n <div *ngIf=\"item.type === 'dropDown'\">\r\n <button mat-menu-item [matMenuTriggerFor]=\"levelTwoMenu\" (mouseover)=\"openLevel2Menu(item.state,item.sub)\">\r\n <mat-icon>{{ item.icon }}</mat-icon>{{ item.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n <div *ngIf=\"item.type == 'link'\">\r\n <button mat-menu-item routerLink=\"/{{ item.state }}\">\r\n <mat-icon>{{ item.icon }}</mat-icon>{{ item.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<mat-menu #levelTwoMenu=\"matMenu\">\r\n <div *ngFor=\"let itemLvl2 of subLevels\">\r\n <div *ngIf=\"itemLvl2.type === 'dropDown'\">\r\n <button mat-menu-item [matMenuTriggerFor]=\"levelThreeMenu\"\r\n (mouseover)=\"openLevel3Menu(stateLvl1,itemLvl2.state,item.sub)\">\r\n {{ itemLvl2.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n <div *ngIf=\"itemLvl2.type == 'applicationlink'\">\r\n <button mat-menu-item routerLink=\"/{{ itemLvl2.state }}\">\r\n {{ itemLvl2.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n <div *ngIf=\"itemLvl2.type == 'link'\">\r\n <button mat-menu-item routerLink=\"/{{stateLvl1}}/{{ itemLvl2.state }}\">\r\n {{ itemLvl2.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<mat-menu #levelThreeMenu=\"matMenu\">\r\n <div *ngFor=\"let itemLvl3 of subLevelsForLevel2\">\r\n <button mat-menu-item routerLink=\"/{{ level3Link1 }}/{{ level3Link2 }}/{{itemLvl3.state}}\">\r\n {{ itemLvl3.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n</mat-menu> -->\r\n\r\n<mat-menu #menus=\"matMenu\" yPosition=\"below\" class=\"filter-panel\" (click)=\"$event.stopPropagation()\"\r\n style=\"height:auto\">\r\n <div *ngFor=\"let item of items\">\r\n <div *ngIf=\"item.type == 'link' || item.type == 'applicationlink'\">\r\n <button mat-menu-item routerLink=\"/{{ item.state }}\" (click)=\"selectMenu(item,$event)\"\r\n routerLinkActive=\"item-active\">\r\n <mat-icon>{{ item.icon }}</mat-icon>{{ item.menu | softLabelsPipe : softLabels}}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n\r\n<div style=\"position: relative;\r\nleft: 90%\" class=\"store-icom mat-icon-button store-icon-container\" *ngIf=\"canAccess_feature_DragApps\"\r\n [ngClass]=\"this.routes.url.includes('/app-store/widgets') ? 'icon_active_class' : ''\">\r\n <!-- <fa-icon icon=\"store\" style=\"font-size: 20px !important;\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{ 'APP.APPSTORE' | translate}}\" (click)=\"openApps()\"\r\n class=\"mat-color-accent cursor-pointer theme-navbar-icon-color\"></fa-icon> -->\r\n <fa-icon icon=\"store\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{ 'APP.APPSTORE' | translate}}\" (click)=\"openApps()\"\r\n class=\"mat-color-accent cursor-pointer theme-navbar-icon-color store-icon-fa\"></fa-icon>\r\n</div>\r\n\r\n<div class=\"SearchBox dropdown\" style=\"position: absolute !important;\">\r\n <span class=\"mat-color-accent input-group-addon\" *ngIf=\"searchByText\">@ </span>\r\n <span class=\"mat-color-accent input-group-addon\" *ngIf=\"searchById\"># </span>\r\n <input type=\"text\" class=\"SearchBox-input dropbtn\" placeholder=\"{{ 'APP.STARTHEREORCLICKCONTROL+Q' | translate}}\"\r\n [class.hide-placeholder]=\"searchByText || searchById\" autocomplete=\"off\" #element [(ngModel)]=\"searchText\"\r\n (input)=\"SearchItem($event)\" (click)=\"SearchItem($event)\" (focus)=\"onFocus()\" (blur)=\"Set();\"\r\n (keydown.enter)=\"navigate($event, itemClicked)\" (keydown.arrowdown)=\"arrowDownEvent()\"\r\n (keydown.arrowup)=\"arrowUpEvent()\" (keydown.arrowleft)=\"arrowLeftEvent()\" (keydown.arrowright)=\"arrowRightEvent()\">\r\n\r\n <button class=\"SearchBox-button\">\r\n <span class=\"close_icon_search\">\r\n <span *ngIf=\"!searchText\"></span>\r\n <mat-icon *ngIf=\"searchText\" class=\"icon-button mr-05\" aria-hidden=\"false\" (click)=\"closeSearch($event)\"\r\n style=\"cursor:pointer\">\r\n close</mat-icon>\r\n </span>\r\n <mat-icon class=\"SearchBox-icon icon-color mt-lg-n2 mr-05 info-class info-icon-custom\" [satPopoverAnchorFor]=\"p\"\r\n #infoPopOver=\"satPopoverAnchor\" color=\"primary\" (click)=\"openInfo(infoPopOver)\">info</mat-icon>\r\n <mat-icon class=\"SearchBox-icon icon-color mt-lg-n2 search-icon-custom\" color=\"primary\">search</mat-icon>\r\n </button>\r\n <div class=\"dropdown-content dropdown-content-navbar search-dropdown-custom-modal\" [ngClass]=\"{'d-block' : display, 'd-none' : !display}\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"\r\n *ngIf=\"loadingSearchMenuData || recentSearchesfetchInProgress || widgetsfetchInProgress\">\r\n </mat-progress-bar>\r\n <div class=\"row rowselect custom-row-selector\">\r\n <div class=\"column columnselect-next pl-05 custom-search-modal-apps-container-main\" *ngIf=\"items && (items.length>0) && !(searchById || searchByText)\">\r\n <!-- <div class=\"in-header\">{{ 'SHELL.APPLICATIONS' | translate}}</div> -->\r\n <div class=\"in-header custom-search-modal-apps-header\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-file-text w-4 h-4\" aria-hidden=\"true\"><path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\"></path><path d=\"M14 2v4a2 2 0 0 0 2 2h4\"></path><path d=\"M10 9H8\"></path><path d=\"M16 13H8\"></path><path d=\"M16 17H8\"></path></svg>\r\n <span class=\"custom-search-modal-apps-header-text\">{{ 'SHELL.APPLICATIONS' | translate }}</span>\r\n </div>\r\n <!-- <div id=\"style-1\" style=\"background-color: white !important; height: 445px !important; overflow: auto;\" class=\"custom-search-modal-apps-container\"> -->\r\n <div id=\"style-1\" style=\"background-color: white !important;\" class=\"custom-search-modal-apps-container\">\r\n <ng-container *ngIf=\"items && items.length>0\">\r\n <div *ngFor=\"let item of items; let i = index;\"\r\n [style.background-color]=\"selectedRowIndex == i ? '#f1f5f9' : 'white'\" class=\"custom-search-modal-apps-main\">\r\n <div *ngIf=\"item.type == 'link' || item.type == 'applicationlink'\" class=\"custom-search-modal-apps-content\">\r\n <button mat-menu-item routerLink=\"/{{ item.state }}\" class=\"custom-search-modal-apps-btn\"\r\n [ngClass]=\"selectedRowIndex == i ? 'color-text' : 'color-text1'\"\r\n (mousedown)=\"selectAdimnTool(item.state, $event, item)\" routerLinkActive=\"item-active\"\r\n [routerLinkActiveOptions]=\"{exact:\r\n true}\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{ translateapplicationname(item.menu | softLabelsPipe : softLabels)}}\">\r\n <mat-icon class=\"icon-color custom-search-modal-apps-icon\" [ngClass]=\"selectedRowIndex == i ? 'color-text' : 'color-text1'\">\r\n {{ item.icon }}</mat-icon><span\r\n [innerHTML]=\"translateapplicationname(item.menu) | softLabelsPipe : softLabels | highLightText : searchText\" class=\"custom-search-modal-apps-text\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column pl-05\" *ngIf=\"!(searchById || searchByText)\">\r\n\r\n <div class=\"columnselect-next ml-0 custom-search-modal-dashboard-container-main\" *ngIf=\"workspaces && (workspaces.length>0)\">\r\n <div class=\"in-header custom-search-modal-dashboard-header\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-layout-dashboard w-4 h-4\" aria-hidden=\"true\"><rect width=\"7\" height=\"9\" x=\"3\" y=\"3\" rx=\"1\"></rect><rect width=\"7\" height=\"5\" x=\"14\" y=\"3\" rx=\"1\"></rect><rect width=\"7\" height=\"9\" x=\"14\" y=\"12\" rx=\"1\"></rect><rect width=\"7\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\"></rect></svg>\r\n <span class=\"custom-search-modal-dashboard-header-text\">{{ 'SHELL.DASHBOARDS' | translate}}</span>\r\n <fa-icon icon=\"plus-square\"\r\n *ngIf=\"canAccess_feature_AddDashboard\" matTooltip=\"{{ 'APP.ADDDASHBOARD' | translate}}\"\r\n (click)=\"initializeWorkspaceForm();openWorkspaceForm();\" class=\"mat-color-accent cursor-pointer custom-search-modal-dashboard-header-add-icon\"\r\n [satPopoverAnchorFor]=\"addWorkspace\">\r\n </fa-icon> \r\n </div>\r\n <!-- <div id=\"style-2\" style=\"background-color: white !important; height: 445px !important; overflow: auto;\" class=\"custom-search-modal-dashboard-container\"> -->\r\n <div id=\"style-2\" style=\"background-color: white !important;\" class=\"custom-search-modal-dashboard-container\">\r\n <ng-container *ngIf=\"workspaces && workspaces.length>0\">\r\n <div *ngFor=\"let wc of workspaces; let i = index\"\r\n [style.background-color]=\"ws == i ? '#f1f5f9' : 'white'\" class=\"scroll custom-search-modal-dashboard-main\" #workspaceElement>\r\n <button mat-menu-item (mousedown)=\"selectMenu(wc,$event)\" class=\"custom-search-modal-dashboard-btn\"\r\n [ngClass]=\"ws == i ? 'color-text' : 'color-text1'\" (click)=\"navigateToUrl(wc.workspaceId)\"\r\n routerLink=\"/dashboard-management/dashboard/{{ wc.workspaceId }}\" routerLinkActive=\"item-active\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{wc.workspaceName}}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-layout-dashboard w-4 h-4\" aria-hidden=\"true\"><rect width=\"7\" height=\"9\" x=\"3\" y=\"3\" rx=\"1\"></rect><rect width=\"7\" height=\"5\" x=\"14\" y=\"3\" rx=\"1\"></rect><rect width=\"7\" height=\"9\" x=\"14\" y=\"12\" rx=\"1\"></rect><rect width=\"7\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\"></rect></svg>\r\n <span [innerHTML]=\"wc.workspaceName | highLightText : searchText \" class=\"custom-search-modal-dashboard-text\"></span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column columnselect-apps ml-0\" *ngIf=\"widgets && widgets.length>0 && !(searchById || searchByText)\">\r\n <div class=\"in-header\">{{ 'SHELL.FAVOURITEAPPS' | translate}}</div>\r\n <div style=\"background-color: white !important; height: 445px !important; overflow: auto;\" id=\"style-3\">\r\n <div *ngFor=\"let widget of widgets; let i = index\"\r\n [style.background-color]=\"wd == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" routerLink=\"/dashboard-management/widgets/{{ widget.widgetId }}\"\r\n [ngClass]=\"wd == i ? 'color-text' : 'color-text1'\" (mousedown)=\"OnSelect(widget,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{widget.widgetName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"widget.widgetName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"columnselect-next ml-0\" *ngIf=\"projectList && projectList.length>0 && searchText && searchByText\">\r\n <div class=\"in-header\">Projects</div>\r\n <div class=\"scroll\" id=\"style-7\"\r\n style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let project of projectList; let i = index\"\r\n [style.background-color]=\"projectIndex == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" [ngClass]=\"projectIndex == i ? 'color-text' : 'color-text1'\"\r\n (mousedown)=\"onProjectSelect(project,$event)\" matTooltipClass=\"tooltipClass-mat\"\r\n matTooltip=\"{{project.itemName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"project.itemName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"columnselect-next ml-0\"\r\n *ngIf=\"userStorySearchList && userStorySearchList.length>0 && searchText && searchByText\">\r\n <div class=\"in-header\" *ngIf=\"isEnableBugBoard\">{{ 'SHELL.WIBUG' | translate}}</div>\r\n <div class=\"in-header\" *ngIf=\"!isEnableBugBoard\">{{ 'SHELL.WI'| translate}}</div>\r\n <div class=\"scroll\" id=\"style-5\"\r\n style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let userStory of userStorySearchList; let i = index\"\r\n [style.background-color]=\"users == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" [ngClass]=\"users == i ? 'color-text' : 'color-text1'\" (mousedown)=\"OnUserStorySelect(userStory,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{userStory.itemName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"userStory.itemName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"columnselect-next ml-0\"\r\n *ngIf=\"goalSearchList && goalSearchList.length>0 && searchText && searchByText\">\r\n <div class=\"in-header\">{{ 'SHELL.GOALSPRINT' | translate }}</div>\r\n <div class=\"scroll\" id=\"style-6\"\r\n style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let goal of goalSearchList; let i = index\"\r\n [style.background-color]=\"goalIndex == i ? themeBaseColor : 'white'\">\r\n <button mat-menu-item routerLinkActive=\"item-active\" [routerLinkActiveOptions]=\"{exact:\r\n true}\" [ngClass]=\"goalIndex == i ? 'color-text' : 'color-text1'\" (mousedown)=\"OnGoalSelect(goal,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{goal.itemName | softLabelsPipe : softLabels}}\">\r\n <span [innerHTML]=\"goal.itemName | softLabelsPipe : softLabels | highLightText : searchText\"></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column columnselect-apps ml-0\"\r\n *ngIf=\"(employeeList && employeeList.length > 0) && searchText && searchByText\">\r\n <div class=\"in-header\">Employees</div>\r\n <div id=\"style-4\" style=\"background-color: white !important; height: 445px !important; overflow: auto;\">\r\n <div *ngFor=\"let employee of employeeList; let i = index\" style=\"background-color: white;\"\r\n [style.background-color]=\"selectedEmployeeIndex == i ? themeBaseColor : 'white'\" #workspaceElement>\r\n <button mat-menu-item (mousedown)=\"selectEmployee(employee,$event)\"\r\n [ngClass]=\"selectedEmployeeIndex == i ? 'color-text' : 'color-text1'\"\r\n routerLink=\"/dashboard/profile/{{ employee.itemId }}/overview\" routerLinkActive=\"item-active\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{employee.itemName}}\">\r\n <div fxLayout=\"row\">\r\n <app-avatar [name]=\"employee.itemName | removeSpecialCharacters\" fxLayoutAlign=\"start center\"\r\n matTooltip=\"{{ employee.itemName }}\" [src]=\"employee.profileImage | fetchSizedAndCachedImage: '20':''\"\r\n [isRound]=\"true\" size=\"20\" (click)=\"profilePage(employee.userId);$event.stopPropagation();\">\r\n </app-avatar> \r\n <div class=\"ml-05\">\r\n <span [innerHTML]=\"employee.itemName | highLightText : searchText\"></span>\r\n \r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"column columnselect-apps ml-0 custom-search-modal-recents-container-main\"\r\n *ngIf=\"recentSearches && (recentSearches.length>0) && !(searchById || searchByText)\">\r\n <div class=\"in-header custom-search-modal-recents-header\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clock w-4 h-4\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg>\r\n <span class=\"custom-search-modal-recents-header-text\">{{ 'SHELL.RECENTSEARCHS' | translate}}</span>\r\n </div>\r\n <!-- <div style=\"background-color: white !important; height: 445px !important\" class=\"custom-search-modal-recents-container\"> -->\r\n <div style=\"background-color: white !important;\" class=\"custom-search-modal-recents-container\">\r\n <div *ngFor=\"let search of recentSearches | slice:0:9 let i = index\"\r\n [style.background-color]=\"rs == i ? '#f1f5f9' : 'white'\" class=\"scroll custom-search-modal-recents-main\">\r\n <button mat-menu-item class=\"custom-search-modal-recents-btn\" [ngClass]=\"rs == i ? 'color-text' : 'color-text1'\"\r\n (mousedown)=\"searchText=search.recentSearch;SearchRecentItem(search,$event)\"\r\n matTooltipClass=\"tooltipClass-mat\" matTooltip=\"{{search.recentSearch | softLabelsPipe : softLabels}} \r\n ({{ convertToLocalTime(search.createdDateTime) | timeago }})\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-clock w-4 h-4 text-muted-foreground\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline></svg>\r\n <span class=\"custom-search-modal-recents-item\">\r\n <span [innerHTML]=\"search.recentSearch | softLabelsPipe : softLabels | highLightText : searchText\" class=\"custom-search-modal-recents-text\"></span>\r\n <span class=\"custom-search-modal-recents-time-text\">({{ convertToLocalTime(search.createdDateTime) | timeago }})</span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <!-- <div class=\"text-center in-header \" *ngIf=\"!searchText && searchById\">\r\n Please enter unique id and click enter for navigating to corresping page\r\n </div>\r\n \r\n <div class=\"text-center in-header \" *ngIf=\"!searchText && searchByText\" >\r\n Please enter text to retreive data by filtering\r\n </div> -->\r\n \r\n\r\n <sat-popover backdropClass=\"backdrop-color\" hasBackdrop #addWorkspace verticalAlign=\"below\" horizontalAlign=\"end\"\r\n [interactiveClose]=\"false\">\r\n <mat-card class=\"filter-data p-0\">\r\n <mat-card-title class=\"text-center\">\r\n <div class=\"card-title-text mat-bg-primary p-05 mb-1\">\r\n {{ 'APP.ADDDASHBOARDTITLE' | translate }}\r\n </div>\r\n </mat-card-title>\r\n <mat-card-content>\r\n <form [formGroup]=\"workspaceForm\" novalidate (submit)=\"workspaceForm.valid && upsertWorkspace()\">\r\n <div class=\"card-content\">\r\n <mat-form-field class=\"full-width\">\r\n <input matInput placeholder=\"{{ 'HRMANAGAMENT.NAME' | translate}}*\" formControlName=\"workspaceName\" />\r\n <mat-error\r\n *ngIf=\"workspaceForm.get('workspaceName').hasError('required') && workspaceForm.get('workspaceName').touched \">\r\n {{ 'APP.DASHBOARDNAMEREQUIRED' | translate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"workspaceForm.get('workspaceName').hasError('maxlength')\">\r\n {{ 'APP.DASHBOARDNAMELENGTHEXCEED' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\">\r\n <textarea matInput formControlName=\"description\" rows=\"2\"\r\n placeholder=\"{{ 'COMPANYSETTINGS.DESCRIPTION' | translate }}\"></textarea>\r\n <mat-error\r\n *ngIf=\"workspaceForm.get('description').hasError('maxlength') && workspaceForm.get('description').touched\">\r\n {{ 'APP.CUSTOMAPPDESCRIPTIONMAXLENGTHERROR' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\" (click)=\"$event.stopPropagation();\">\r\n <mat-select formControlName=\"selectedRoles\" [compareWith]=\"compareSelectedRolesFn\"\r\n placeholder=\"{{ 'WIDGETS.VIEWROLES' | translate }}\" multiple required>\r\n <mat-option #allSelected (click)=\"toggleAllRolesSelected()\" [value]=\"0\">\r\n {{ 'PERMISSIONMANAGEMENT.SELECTALL' | translate }}</mat-option>\r\n <mat-option [value]=\"roles.roleId\" *ngFor=\"let roles of rolesDropDown\" #allSelected\r\n (click)=\"toggleRolesPerOne(allSelected.value)\">\r\n {{ roles.roleName }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"workspaceForm.get('selectedRoles').hasError('required') && workspaceForm.get('selectedRoles').touched\">\r\n {{ 'APP.SELECTANYROLE' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\">\r\n <mat-select formControlName=\"editRoleIds\" [compareWith]=\"compareEditSelectedRolesFn\"\r\n placeholder=\"{{ 'WIDGETS.EDITROLES' | translate }}\" multiple>\r\n <mat-option #allEditSelected (click)=\"toggleEditAllRolesSelected()\" [value]=\"0\">\r\n {{ 'PERMISSIONMANAGEMENT.SELECTALL' | translate }}</mat-option>\r\n <mat-option [value]=\"role.roleId\" *ngFor=\"let role of rolesDropDown\" #allEditSelected\r\n (click)=\"toggleEditRolesPerOne()\">\r\n {{ role.roleName }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"full-width\">\r\n <mat-select formControlName=\"deleteRoleIds\" [compareWith]=\"compareDeleteSelectedRolesFn\"\r\n placeholder=\"{{ 'WIDGETS.DELETEROLES' | translate }}\" multiple>\r\n <mat-option #allDeleteSelected (click)=\"toggleDeleteAllRolesSelected()\" [value]=\"0\">\r\n {{ 'PERMISSIONMANAGEMENT.SELECTALL' | translate }}</mat-option>\r\n <mat-option [value]=\"role.roleId\" *ngFor=\"let role of rolesDropDown\" #allDeleteSelected\r\n (click)=\"toggleDeleteRolesPerOne()\">\r\n {{ role.roleName }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"text-center\">\r\n <button class=\"mr-1\" mat-button mat-raised-button color=\"primary\" type=\"button\" (click)=\"upsertWorkspace()\"\r\n [disabled]=\"!workspaceForm.valid\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\" *ngIf=\"dashboardUpdateInProgress\">\r\n </mat-progress-bar>\r\n <fa-icon class=\"mr-05\" icon=\"plus\"></fa-icon> {{ 'SAVE' | translate }}\r\n </button>\r\n <button mat-button mat-raised-button type=\"button\" (click)=\"closeAddWorkspaceDialog()\">\r\n <fa-icon class=\"mr-05\" icon=\"times\"></fa-icon> {{ 'CANCEL' | translate }}\r\n </button>\r\n </div>\r\n </form>\r\n </mat-card-content>\r\n </mat-card>\r\n </sat-popover>\r\n\r\n\r\n <sat-popover #p hasBackdrop [interactiveClose]=\"true\" verticalAlign=\"above\">\r\n <div class=\"tooltip-wrapper\" style=\" background: #fff;\r\n border: 1px solid #ddd;\r\n border-radius: 10px;\r\n padding: 10px 14px;\r\n box-shadow: 0 4px 12px rgba(0,0,0,0.12);\">\r\n <table>\r\n <tr>\r\n <td>Ctrl + Q: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOOPENSEARCHMENU' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>Ctrl + B: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOOPENGOALSANDUSERS' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>Ctrl + Y: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOSEARCHBYID' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>Ctrl + M: </td>\r\n <td> </td>\r\n <td> {{ 'SHELL.TOCLOSEMENU' | translate}}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </sat-popover>\r\n\r\n <mat-spinner *ngIf=\"searchByTextLoading && display\" class=\"spinner-class\" [diameter]=\"100\"></mat-spinner>", components: [{ type: i14.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i15.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i16.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i16.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i17.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "listItem", "rotate", "fixedWidth", "transform"] }, { type: i18.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i19.AvatarComponent, selector: "app-avatar", inputs: ["name", "src", "isRound", "size", "avatarClass"] }, { type: i20.SatPopover, selector: "sat-popover", inputs: ["backdropClass", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { type: i21.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i22.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i23.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i24.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i25.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i26.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { type: i16.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["matMenuTriggerRestoreFocus", "mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { type: i27.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i3.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i26.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i28.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i29.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i29.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i29.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i20.SatPopoverAnchor, selector: "[satPopoverAnchorFor]", inputs: ["satPopoverAnchorFor"], outputs: ["popoverOpened", "popoverClosed"], exportAs: ["satPopoverAnchor"] }, { type: i27.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i27.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i21.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i21.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i29.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i29.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i29.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i30.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i29.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i22.MatError, selector: "mat-error", inputs: ["id"] }, { type: i29.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "softLabelsPipe": i31.SoftLabelPipe, "translate": i5.TranslatePipe, "highLightText": i32.HighLightTextPipe, "removeSpecialCharacters": i33.RemoveSpecialCharactersPipe, "fetchSizedAndCachedImage": i34.FetchSizedAndCachedImagePipe, "slice": i9.SlicePipe, "timeago": i35.TimeagoPipe } });
|
|
2419
|
-
i0.ɵɵ
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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WUFDbEQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzlJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDbEcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDakUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzlJLElBQUks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QTdDLFlBQVk7dUJBQUMsZUFBZTtnQkFDSCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNXLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0gsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNHLG1CQUFtQjtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNTLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFDYyxlQUFlO3NCQUFwRCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDWSxpQkFBaUI7c0JBQXhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNKLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDZCxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkF3RUgsU0FBUztzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBOEtmLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFO2dCQVc5QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtnQkFXOUMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLDRCQUE0QixFQUFFLEVBQUU7Z0JBVTlDLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZHJlbiwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBPbkluaXQsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgU3RvcmUsIHNlbGVjdCB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG4vLyBpbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCJhcHAvc2hhcmVkL3N0b3JlL3JlZHVjZXJzL21lbnVpdGVtcy5yZWR1Y2Vyc1wiO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgKiBhcyBzaGFyZWRNb2R1bGVSZWR1Y2VycyBmcm9tIFwiLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvbWVudWl0ZW1zLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcclxuaW1wb3J0IHsgUmVjZW50U2VhcmNoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9yZWNlbnRTZWFyY2guc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBHZXRDb21wYW55VGhlbWVUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9hdXRoZW50aWNhdGlvbi5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IG9mVHlwZSwgQWN0aW9ucyB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XHJcbmltcG9ydCB7IFNlYXJjaFRhc2tUeXBlIH0gZnJvbSBcIi4vc2VhcmNoVGFzay5lbnVtXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNhdFBvcG92ZXIgfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tdXNlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgeyBFbXBsb3llZUxpc3RNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9lbXBsb3llZSc7XHJcbmltcG9ydCB7IEVtcGxveWVlTGlzdElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtcGxveWVlLUxpc3QnO1xyXG5pbXBvcnQgeyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbXBvbmVudHMvY29tcG9uZW50YmFzZSc7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsJztcclxuaW1wb3J0IHsgSU1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lNZW51SXRlbSc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyU3RvcnknO1xyXG5pbXBvcnQgeyBXaWRnZXRMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dpZGdldGxpc3QnO1xyXG5pbXBvcnQgeyBEcmFnZWRXaWRnZXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHJhZ2VkV2lkZ2V0JztcclxuaW1wb3J0IHsgV29ya3NwYWNlTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy93b3Jrc3BhY2VMaXN0JztcclxuaW1wb3J0IHsgUmVjZW50U2VhcmNoTW9kZWwsIFNlYXJjaFRhc2tUeXBlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVjZW50U2VhcmNoTW9kZWwnO1xyXG5pbXBvcnQgeyBUaGVtZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RoZW1lcy5tb2RlbCc7XHJcbmltcG9ydCB7IFdJTkRPVyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL3dpbmRvdy5oZWxwZXInO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVDYXRlZ29yaWVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL21lbnUtY2F0ZWdvcmllcyc7XHJcbmltcG9ydCB7IEZlYXR1cmVJZHMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2ZlYXR1cmUtaWRzJztcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IFJlY2VudFNlYXJjaFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtL3JlY2VudFNlYXJjaFR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdHlsZSwgYW5pbWF0ZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuXHJcbi8qKiBAZHluYW1pYyAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1lbnVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21lbnUuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBbeDogc3RyaW5nXTogYW55O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFwib3Blbk1lbnVQb3BVcFwiKSBvcGVuTWVudVBvcE92ZXI7XHJcbiAgQFZpZXdDaGlsZChcIm1lbnVUcmlnZ2VyXCIpIG1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKFwiZWxlbWVudFwiKSBlbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJ3b3Jrc3BhY2VFbGVtZW50XCIpIHdvcmtzcGFjZUVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcIm1lbnVFbGVtZW50XCIpIG1lbnVFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJhZGRXb3Jrc3BhY2VcIikgYWRkV29ya1NwYWNlUG9wT3ZlcjogU2F0UG9wb3ZlcjtcclxuICBAVmlld0NoaWxkKFwiYWxsU2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxTZWxlY3RlZDogTWF0T3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoXCJhbGxFZGl0U2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxFZGl0U2VsZWN0ZWQ6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKFwiYWxsRGVsZXRlU2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxEZWxldGVTZWxlY3RlZDogTWF0T3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoJ2luZm9Qb3BPdmVyJykgaW5mb1BvcE92ZXI6IFRlbXBsYXRlUmVmPGFueT5cclxuICBAT3V0cHV0KCkgaXNPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb3Blbk5ld0Rhc2hib2FyZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGU6IEVsZW1lbnQ7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xyXG4gIGZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29mdExhYmVsczogU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsW107XHJcbiAgcHVibGljIG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8SU1lbnVJdGVtW10+O1xyXG4gIHVzZXJTdG9yaWVzTGlzdCQ6IE9ic2VydmFibGU8VXNlclN0b3J5W10+O1xyXG4gIG1lbnVJdGVtOiBJTWVudUl0ZW1bXTtcclxuICBpdGVtcyA9IFtdO1xyXG4gIG1lbnVJdGVtTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICB3aWRnZXRzOiBXaWRnZXRMaXN0W107XHJcbiAgb3JpZ2luYWxXaWRnZXRzOiBXaWRnZXRMaXN0W107XHJcbiAgc2VsZWN0ZWRMaXN0OiBEcmFnZWRXaWRnZXRbXTtcclxuICB3aWRnZXQ6IFdpZGdldExpc3Q7XHJcbiAgc2VsZWN0ZWRBcHBzOiBhbnk7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWREYXNoYm9hcmQ6IGFueTtcclxuICBkZWZhdWx0RGFzaGJvYXJkOiBhbnk7XHJcbiAgc3ViTGV2ZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHN0YXRlTHZsMTogc3RyaW5nO1xyXG4gIGxldmVsM0xpbmsxOiBzdHJpbmc7XHJcbiAgbGV2ZWwzTGluazI6IHN0cmluZztcclxuICBzdWJMZXZlbHNGb3JMZXZlbDI6IHN0cmluZztcclxuICBjb21wYW55TWFpbkxvZ286IHN0cmluZztcclxuICBjb21wYW55TWluaUxvZ286IHN0cmluZztcclxuICByb2xlc0Ryb3BEb3duOiBhbnlbXTtcclxuICB3b3Jrc3BhY2VzTGlzdCQ6IE9ic2VydmFibGU8V29ya3NwYWNlTGlzdFtdPjtcclxuICB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VMaXN0W107XHJcbiAgd29ya3NwYWNlc0Zvckxvb3A6IGFueTtcclxuICBkaXNwbGF5OiBib29sZWFuO1xyXG4gIGFkbWluVG9vbHM6IGFueSA9IFtdO1xyXG4gIHRvb2xzOiBhbnk7XHJcbiAgc2VsZWN0ZWRSb3dJbmRleDogYW55O1xyXG4gIGl0ZW1DbGlja2VkOiBhbnk7XHJcbiAgdDogYW55O1xyXG4gIHdkOiBhbnk7XHJcbiAgd3M6IGFueTtcclxuICByczogYW55O1xyXG4gIGFsbHNlYXJjaGVzOiBSZWNlbnRTZWFyY2hNb2RlbFtdID0gW107XHJcbiAgcmVjZW50U2VhcmNoZXM6IFJlY2VudFNlYXJjaE1vZGVsW10gPSBbXTtcclxuICBwcm9qZWN0Um9sZVRleHQ6IHN0cmluZyA9IFwiUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb25cIjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9uczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm06IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyQ6IE9ic2VydmFibGU8Qm9vbGVhbj5cclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJDogT2JzZXJ2YWJsZTxCb29sZWFuPlxyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XHJcbiAgY29tcGFueVNldHRpbmdzTU9kZWwkOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBkaXNhYmxlV29ya3NwYWNlID0gZmFsc2U7XHJcbiAgZGlzYWJsZVdvcmtzcGFjZURlbGV0ZSA9IGZhbHNlO1xyXG4gIGRpc2FibGVXb3Jrc3BhY2VoaWRlID0gZmFsc2U7XHJcbiAgZm9ybXM6IGFueTtcclxuICBjdXN0YXBwOiBhbnk7XHJcbiAgcHJvamVjdFJvbGVDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgcm9sZUNvbmZpZ3VyYXRpb246IGFueTtcclxuICB0aGVtZU1vZGVsOiBUaGVtZU1vZGVsO1xyXG4gIGVtcGxveWVlTGlzdDogYW55W10gPSBbXTtcclxuICB0aGVtZU1vZGVsJDogT2JzZXJ2YWJsZTxUaGVtZU1vZGVsPjtcclxuICB0aGVtZUJhc2VDb2xvcjogc3RyaW5nO1xyXG4gIHNlbGVjdGVkRW1wbG95ZWU6IHN0cmluZztcclxuICBsb2FkZWRFbXBsb3llZUxpc3Q6IEVtcGxveWVlTGlzdE1vZGVsW10gPSBbXTtcclxuICBzZWxlY3RlZEVtcGxveWVlSW5kZXg6IG51bWJlciA9IG51bGw7XHJcbiAgdmlld0VtcGxveWVlUGVybWlzc2lvbjogYm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHM6IEJvb2xlYW47XHJcbiAgcHJvamVjdExpc3Q6IGFueSA9IFtdO1xyXG4gIHByb2plY3RJbmRleDogYW55O1xyXG4gIHNlYXJjaEJ5VGV4dExvYWRpbmc6IGJvb2xlYW47XHJcbiAgQElucHV0KFwicmVsb2FkXCIpXHJcbiAgc2V0IHJlbG9hZEFsbChkYXRhOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLmFkbWluVG9vbHMgPSBbXTtcclxuICAgICAgdGhpcy50b29scyA9IFtdO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHVzZXJTdG9yeUxpc3Q6IGFueSA9IFtdO1xyXG4gIHVzZXJTdG9yeVNlYXJjaExpc3Q6IGFueSA9IFtdO1xyXG4gIGdvYWxTZWFyY2hMaXN0OiBhbnkgPSBbXTtcclxuICBpc0VuYWJsZUJ1Z0JvYXJkOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkUm9sZUlkczogc3RyaW5nW10gPSBbXTtcclxuICBkYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHVzZXJzOiBhbnk7XHJcbiAgZ29hbEluZGV4OiBhbnk7XHJcbiAgd29ya3NwYWNlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHByb2plY3RTZWFyY2hSZXN1bHRzOiBhbnk7XHJcbiAgZGVsYXlUaW1lSW5wdXQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgbWVudXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgd29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICB3aWRnZXRzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHNlYXJjaFRhc2tzOiBTZWFyY2hUYXNrVHlwZU1vZGVsO1xyXG4gIGxvYWRpbmdTZWFyY2hNZW51RGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlZmF1bHREYXNoYm9hcmRJZDogc3RyaW5nO1xyXG4gIHNlYXJjaEJ5SWQ6IGJvb2xlYW47XHJcbiAgc2VhcmNoQnlUZXh0OiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlczogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcnNzOiBSZWNlbnRTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChXSU5ET1cpIHByaXZhdGUgd2luZG93OiBXaW5kb3csXHJcbiAgICBwcml2YXRlIGdvb2dsZUFuYWx5dGljc1NlcnZpY2U6IEdvb2dsZUFuYWx5dGljc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICAvL3RoaXMub25Gb2N1cygpO1xyXG5cclxuICAgIC8vIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgLy8gdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplV29ya3NwYWNlRm9ybSgpO1xyXG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICBpZiAodGhpcy5sb2NhdGlvbi5wYXRoKCkgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy53aWRnZXRTZXJ2aWNlLnNlbGVjdGVkV29ya3NwYWNlLnN1YnNjcmliZShpZCA9PiB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBpZDtcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgLy8gICAucGlwZShcclxuICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgLy8gICAgIG9mVHlwZShBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLkdldENvbXBhbnlUaGVtZUNvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKCgpID0+IHtcclxuICAgIC8vdGhpcy50aGVtZU1vZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VGhlbWVNb2RlbCkpO1xyXG4gICAgLy90aGlzLnRoZW1lTW9kZWwkLnN1YnNjcmliZSh4ID0+IHRoaXMudGhlbWVNb2RlbCA9IHgpO1xyXG4gICAgLy8gdGhpcy5nZXRUaGVtZSgpO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcblxyXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XHJcblxyXG4gICAgLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgIC8vIC8vIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgIC8vIC8vIGlmICh0aGlzLnRoZW1lTW9kZWwgJiYgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlUaGVtZUlkICE9PSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiKSB7XHJcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsKTtcclxuICAgIC8vIC8vIH1cclxuICAgIC8vIC8vIGVsc2Uge1xyXG4gICAgLy8gLy8gICB2YXIgdGhlbWVNb2RlbCA9IG5ldyBUaGVtZU1vZGVsKClcclxuICAgIC8vIC8vICAgdGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCA9IFwiMDkyOUQzNUEtMzU3My00QjA2LTkzRkItQzdENDZBQUZBOTE4XCI7XHJcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvID0gXCJhc3NldHMvaW1hZ2VzL0xvZ28tZmF2aWNvbi5wbmdcIjtcclxuICAgIC8vIC8vICAgLy8gdGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28gPSBcImFzc2V0cy9pbWFnZXMvTWFpbi1Mb2dvLnBuZ1wiO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lTW9kZWwgPSB0aGVtZU1vZGVsO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZU1vZGVsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAvLyAvLyAvL3RoaXMuY2hhbmdlRmF2SWNvbigpO1xyXG4gICAgLy8gLy8gdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAvL3RoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gLnN1YnNjcmliZSgpO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKFdvcmtzcGFjZXNBY3Rpb25UeXBlcy5Mb2FkV29ya3NwYWNlQnlJZENvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgIHZhciB3b3Jrc3BhY2VzTGlzdCA9IGRhdGEuc2VhcmNoV29ya3NwYWNlc1N1Y2Nlc3M7XHJcbiAgICAvLyAgICAgICB0aGlzLmRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vICAgICAgIC8vIHRoaXMuY2xvc2VBZGRXb3Jrc3BhY2VEaWFsb2coKTtcclxuICAgIC8vICAgICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgaWYgKHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy53b3Jrc3BhY2VzLnB1c2god29ya3NwYWNlc0xpc3RbMF0pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAvLyAgICAgICAgIHRoaXMub3Blbk5ld0Rhc2hib2FyZC5lbWl0KHdvcmtzcGFjZXNMaXN0WzBdLndvcmtzcGFjZUlkKVxyXG4gICAgLy8gICAgICAgfVxyXG5cclxuICAgIC8vICAgICB9KVxyXG4gICAgLy8gICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIC8vdGhpcy5nZXRBbGxQcm9qZWN0cygpO1xyXG5cclxuICAgIHRoaXMuZGVsYXlUaW1lSW5wdXQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDIwMDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLlNlYXJjaEl0ZW0odmFsdWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZSgpIHtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFRoZW1lcygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlUaGVtZScsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICB0aGlzLnNpdGVVcmwgPSByZXNwb25zZS5kYXRhLnJlZ2lzdHJlclNpdGVBZGRyZXNzO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWFpbkxvZ287XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHJlc3BvbnNlLmRhdGEuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAgICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnEnLCBbXSlcclxuICBrZXlPcGVuRXZlbnQoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5vbkZvY3VzKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5tJywgW10pXHJcbiAga2V5Q2xvc2VFdmVudCgpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5iJywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IHRydWVcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC55JywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlJZCgpIHtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2VcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IHRydWU7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Mb2NhbFRpbWUodGltZSkge1xyXG4gICAgdmFyIHV0Y0RhdGUgPSBtb21lbnQudXRjKHRpbWUpLmZvcm1hdCgpO1xyXG4gICAgdmFyIGxvY2FsRGF0ZSA9IG1vbWVudC51dGModXRjRGF0ZSkubG9jYWwoKS5mb3JtYXQoKTtcclxuICAgIHJldHVybiBsb2NhbERhdGU7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV29ya3NwYWNlRm9ybSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSWRzID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgIHdvcmtzcGFjZU5hbWU6IG5ldyBGb3JtQ29udHJvbChudWxsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgc2VsZWN0ZWRSb2xlczogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICBdKVxyXG4gICAgICApLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgZWRpdFJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSksXHJcbiAgICAgIGRlbGV0ZVJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcclxuXHJcbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCgpKTtcclxuICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xyXG4gICAgLy8gdmFyIGRhc2hib2FyZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcykpO1xyXG4gICAgLy8gaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gZGFzaGJvYXJkcztcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcclxuICAgIC8vIGlmIChtZW51SXRlbXMgJiYgbWVudUl0ZW1zICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbXM7XHJcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcclxuICAgIC8vIGlmICh3aWRnZXRzICYmIHdpZGdldHMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMgPSB3aWRnZXRzO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdmFyIHJlY2VudFNlYXJjaGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzKSk7XHJcbiAgICAvLyBpZiAocmVjZW50U2VhcmNoZXMgJiYgcmVjZW50U2VhcmNoZXMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KCk7XHJcbiAgICAvLyAgdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIHRoaXMuZ2V0Q29tcGFueVNldHRpbmdzKCk7XHJcbiAgICB0aGlzLm1lbnVJdGVtcyQgPSB0aGlzLnN0b3JlLnBpcGUoXHJcbiAgICAgIHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDdXJyZW50QWN0aXZlTWVudUNhdGVnb3J5TWVudUl0ZW1zKSxcclxuICAgICAgdGFwKG1lbnVMaXN0ID0+IGNvbnNvbGUubG9nKG1lbnVMaXN0KSlcclxuICAgICk7XHJcbiAgICAvLyB0aGlzLm1lbnVJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgLy8gICB2YXIgYSA9IHg7XHJcbiAgICAvLyAgIHZhciBiID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuXHJcbiAgICAvLyAgIC8vdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyAgIC8vdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgLy8gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XHJcblxyXG4gICAgLy8gdGhpcy5jdXN0YXBwID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIkN1c3RvbSBhcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL2N1c3RvbS1hcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuZm9ybXMgPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiRm9ybXNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL3ZpZXctZm9ybXNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIC8vICAgbmFtZTogXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9lbnRpdHlyb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnJvbGVDb25maWd1cmF0aW9uID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIlJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdDdXN0b20gYXBwbGljYXRpb25zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5jdXN0YXBwKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnRm9ybXMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmZvcm1zKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Rm9ybXMgfSkpOyAgICAvLyAvL3RoaXMucm91dGUudXJsLnN1YnNjcmliZSgodXJsKSA9PiB0aGlzLnVybCA9IHVybC50b1N0cmluZygpKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0Zvcm1zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5mb3Jtcyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvbicpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMucHJvamVjdFJvbGVDb25maWd1cmF0aW9uKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Um9sZXMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5yb2xlQ29uZmlndXJhdGlvbik7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgIC8vIHRoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgLy90aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgLy90aGlzLmdldEFsbEVtcGxveWVlcygpO1xyXG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XHJcbiAgICAvLyB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAvLyBpZih0aGlzLml0ZW1zLmxlbmd0aD4wKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMudG9vbHMubGVuZ3RoPjApIHtcclxuICAgIC8vICAgdGhpcy50PTA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMud29ya3NwYWNlcy5sZW5ndGg+MCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9dGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgLy8gfSAgXHJcblxyXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gXy5kZWJvdW5jZSh0aGlzLlNlYXJjaEl0ZW0sIDEwMDApO1xyXG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5JbmZvKGluZm9Qb3BPdmVyKSB7XHJcbiAgICBpbmZvUG9wT3Zlci5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0QWxsUHJvamVjdHMoKSB7XHJcbiAgLy8gICBjb25zdCBwcm9qZWN0U2VhcmNoUmVzdWx0ID0gbmV3IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcclxuICAvLyAgIHByb2plY3RTZWFyY2hSZXN1bHQuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlLnNlYXJjaFByb2plY3RzKHByb2plY3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcclxuICAvLyAgICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSByZXNwb25zZS5kYXRhO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gcmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlO1xyXG4gIC8vICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSBbXTtcclxuICAvLyAgICAgICB0aGlzLnRvYXN0ci5lcnJvcih0aGlzLnZhbGlkYXRpb25NZXNzYWdlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIGdldENvbXBhbnlTZXR0aW5ncygpIHtcclxuICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XHJcbiAgICBpZiAoYnVnQm9hcmRSZXN1bHQgJiYgYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRTZWFyY2hEYXRhKCkge1xyXG4gICAgdmFyIG1lbnVJdGVtcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMpKVxyXG4gICAgaWYgKG1lbnVJdGVtcyAmJiBtZW51SXRlbXMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgdmFyIHdpZGdldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cykpO1xyXG4gICAgaWYgKHdpZGdldHMgJiYgd2lkZ2V0cyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XHJcbiAgICB9XHJcbiAgICB2YXIgcmVjZW50U2VhcmNoZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMpKTtcclxuICAgIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLmFsbHNlYXJjaGVzID0gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlY2VudFNlYXJjaGVzO1xyXG4gICAgfVxyXG4gIH1cclxuICB0cmFuc2xhdGVhcHBsaWNhdGlvbm5hbWUoaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBsb2NhbHZhcmlhYmxlID0gaXRlbS50cmltKCk7XHJcbiAgICB2YXIgbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQVBQLlwiICsgbG9jYWx2YXJpYWJsZSk7XHJcbiAgICBpZiAobmFtZS5pbmRleE9mKFwiQVBQLlwiKSAhPSAtMSkge1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoQnlJZCAmJiAhdGhpcy5zZWFyY2hCeVRleHQpIHtcclxuICAgICAgdmFyIHJldHJpZXZlRGFzaGJvYXJkczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgIHZhciBkYXNoYm9hcmRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKTtcclxuICAgICAgaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgICAgIHJldHJpZXZlRGFzaGJvYXJkcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSBKU09OLnBhcnNlKGRhc2hib2FyZHMpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AuZmlsdGVyKFxyXG4gICAgICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICAgICAgaXRlbS53b3Jrc3BhY2VOYW1lXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCEodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2spICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrKSkgPT0gdHJ1ZSkpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KHRydWUpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaE1lbnVEYXRhKHJldHJpZXZlRGFzaGJvYXJkcylcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53b3Jrc3BhY2VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSByZXMuZGF0YS53b3Jrc3BhY2VzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndvcmtzcGFjZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSB0aGlzLndvcmtzcGFjZXM7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuZGVmYXVsdERhc2hib2FyZCA9IHRoaXMud29ya3NwYWNlcy5maW5kKGkgPT4gaS5pc0RlZmF1bHQgPT0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53aWRnZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHJlcy5kYXRhLndpZGdldHMuc29ydCgoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lbnVJdGVtcykge1xyXG4gICAgICAgICAgICAgICAgLy8gdmFyIGFwcGxpY2F0aW9ucyA9IHJlcy5kYXRhLm1lbnVJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeSAmJlxyXG4gICAgICAgICAgICAgICAgLy8gICAgIE1lbnVDYXRlZ29yaWVzLk1haW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeS50b0xvd2VyQ2FzZSgpID09PSBNZW51Q2F0ZWdvcmllcy5NYWluLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC8vICAgKTtcclxuICAgICAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0gcmVzLmRhdGEubWVudUl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMsIEpTT04uc3RyaW5naWZ5KHRoaXMubWVudUl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlcy5kYXRhLnJlY2VudFNlYXJjaDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2VhcmNoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCwgdHJ1ZSk7XHJcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMpICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAvLyAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIHJvdXRlckFjdGl2ZSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmRcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgZGFzaGJvYXJkSWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAoZGFzaGJvYXJkSWQgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndvcmtzcGFjZXMuZmluZEluZGV4KGkgPT4gaS53b3Jrc3BhY2VJZCA9PSBkYXNoYm9hcmRJZCk7XHJcbiAgICAgICAgdGhpcy53cyA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgd2lkZ2V0SWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAod2lkZ2V0SWQgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndpZGdldHMuZmluZEluZGV4KGkgPT4gaS53aWRnZXRJZCA9PSB3aWRnZXRJZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy53ZCA9IGluZGV4O1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgaW5kZXhScyA9IHRoaXMucmVjZW50U2VhcmNoZXMuZmluZEluZGV4KGkgPT4gaS5pdGVtSWQgPT0gd2lkZ2V0SWQpXHJcbiAgICAgICAgICB0aGlzLnJzID0gaW5kZXhScztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaSA9PiB0aGlzLnJvdXRlcy51cmwgPT0gXCIvXCIgKyBpLnN0YXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFdvcmtzcGFjZXNMaXN0KCkge1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHZhciB3b3Jrc3BhY2VsaXN0ID0gbmV3IFdvcmtzcGFjZUxpc3QoKTtcclxuICAgIHdvcmtzcGFjZWxpc3Qud29ya3NwYWNlSWQgPSBcIm51bGxcIjtcclxuICAgIHdvcmtzcGFjZWxpc3QuaXNIaWRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXb3Jrc3BhY2VMaXN0KHdvcmtzcGFjZWxpc3QpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IHRoaXMud29ya3NwYWNlcztcclxuICAgICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRXb3Jrc3BhY2VzTGlzdFRyaWdnZXJlZCh0aGlzLndvcmtzcGFjZWxpc3QpKTtcclxuICB9O1xyXG5cclxuICBvcGVuQXBwcygpIHtcclxuICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImFwcC1zdG9yZS93aWRnZXRzXCJdKTtcclxuICB9XHJcblxyXG4gIGxvYWRXaWRnZXRzTGlzdChzZWFyY2hUZXh0LCBzdG9yZSA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy53aWRnZXQgPSBuZXcgV2lkZ2V0TGlzdCgpO1xyXG4gICAgdGhpcy53aWRnZXQud2lkZ2V0SWQgPSBcIm51bGxcIjtcclxuICAgIHRoaXMud2lkZ2V0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMud2lkZ2V0LnBhZ2VOdW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQucGFnZVNpemUgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XHJcbiAgICB0aGlzLndpZGdldC5pc0Zhdm91cml0ZVdpZGdldCA9IHRydWU7XHJcbiAgICBpZiAoc2VhcmNoVGV4dClcclxuICAgICAgdGhpcy53aWRnZXQuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XHJcblxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldFdpZGdldHNCYXNlZE9uVXNlcih0aGlzLndpZGdldCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSBbXTtcclxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSByZXN1bHQuZGF0YS5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICAgICAgaWYgKHN0b3JlKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbEVtcGxveWVlcygpIHtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgICBsZXQgZW1wbG95ZWVTcGVudFRpbWUgPSBuZXcgRW1wbG95ZWVMaXN0SW5wdXQoKTtcclxuICAgIGVtcGxveWVlU3BlbnRUaW1lLnNvcnREaXJlY3Rpb25Bc2MgPSB0cnVlO1xyXG4gICAgZW1wbG95ZWVTcGVudFRpbWUuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5ockRhc2hib2FyU2VydmljZS5HZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVTcGVudFRpbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgIC8vICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSByZXN1bHQuZGF0YTtcclxuICAgIC8vICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcclxuICAgIC8vICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgLy8gICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PiAoeC51c2VySWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuXHJcbiAgICBjb25zdCBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQgPSBuZXcgRW1wbG95ZWVMaXN0TW9kZWwoKTtcclxuICAgIGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVMaXN0U2VhcmNoUmVzdWx0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XHJcbiAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT4gKHgudXNlcklkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAvLyAgIHRoaXMuZSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gIC8vICAgbGV0IG91dFNpZGVDbGljayA9ICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsKCk9PntcclxuICAvLyAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgLy8gfSk7XHJcbiAgLy8gfVxyXG5cclxuICBPcGVuTWVudUl0ZW1zKG9wZW5NZW51UG9wVXApIHtcclxuICAgIG9wZW5NZW51UG9wVXAub3BlblBvcG92ZXIoKTtcclxuICB9XHJcblxyXG4gIG9wZW5MZXZlbDJNZW51KGxpbmssIGV2ZW50KSB7XHJcbiAgICB0aGlzLnN0YXRlTHZsMSA9IGxpbms7XHJcbiAgICB0aGlzLnN1YkxldmVscyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgb3BlbkxldmVsM01lbnUobGluazEsIGxpbmsyLCBldmVudCkge1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMSA9IGxpbmsxO1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMiA9IGxpbmsyO1xyXG4gICAgdGhpcy5zdWJMZXZlbHNGb3JMZXZlbDIgPSBldmVudDtcclxuICB9XHJcblxyXG4gIGdldEFsbE1lbnVJdGVtcygpIHtcclxuICAgIHRoaXMubWVudXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImxpdmVzL3dlbGNvbWVcIik7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoTWVudUl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucnNzLmdldFNlYXJjaE1lbnVJdGVtcyh7IHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoVGV4dCwgc2VhcmNoVW5pcXVlSWQ6IG51bGwgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJzID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB1c2VycztcclxuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoKHg6IGFueSkgPT4gKHguaXRlbUlkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Qcm9qZWN0U2VsZWN0KGl0ZW0sIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNlYXJjaEl0ZW0oZXZlbnQpIHtcclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICB2YXIgZWxlbWVudCA9XHJcbiAgICAgICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpO1xyXG4gICAgZWxlbWVudCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIHZhciBlbGVtID1cclxuICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIik7XHJcbiAgICBlbGVtID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIGVtcCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpO1xyXG4gICAgZW1wID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIHdpZGdldCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpO1xyXG4gICAgd2lkZ2V0ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlYXJjaE1lbnVJdGVtcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5tZW51LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2UgJiYgaXRlbS50eXBlICE9IFwiZHJvcERvd25cIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWRtaW5Ub29scyA/IHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICAvL3RoaXMubG9hZFdpZGdldHNMaXN0KGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID8gdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyAodGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT5cclxuICAgICAgKCh4LmZ1bGxOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSlcclxuICAgICAgICB8fCAoeC5lbXBsb3llZU51bWJlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXHJcbiAgICAgICAgfHwgKHguc3VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpKVxyXG4gICAgICApKSA6IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgIC8vICAgaXRlbSA9PlxyXG4gICAgICAvLyAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgLy8gKSA6IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApIDogbnVsbDtcclxuXHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgJiYgZXZlbnQudGFyZ2V0LnZhbHVlLnNlYXJjaCgnLScpID4gMCkge1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaEdvYWxUYXNrcyhldmVudC50YXJnZXQudmFsdWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGlmICghKCh0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcykgfHwgKHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB8fCAodGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB8fCAodGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSkpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgLy8gICBjb25zdCB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAgPSBuZXcgVXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XHJcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnBhZ2VTaXplID0gMTAwMDtcclxuICAgICAgLy8gICB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAuc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcblxyXG4gICAgICAvLyAgLy8gaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoVXNlclN0b3JpZXModXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIC8vICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAvLyAgICAgICBsZXQgY29tcGFueVNldHRpbmdzTW9kZWwgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gICAgICAgICB2YXIgdXNlclN0b3JpZXNMaXN0ID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q29tcGFueVNldHRpbmdzKSk7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgICAvLyAgICAgICAgIGxldCBidWdCb2FyZFJlc3VsdCA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5LnRyaW0oKSA9PSBcIkVuYWJsZUJ1Z0JvYXJkXCIpO1xyXG4gICAgICAvLyAgICAgICAgIGlmIChidWdCb2FyZFJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlQnVnQm9hcmQpIHtcclxuICAgICAgLy8gICAgICAgICAgIHVzZXJTdG9yaWVzTGlzdCA9IHVzZXJTdG9yaWVzTGlzdC5tYXAoKHgpID0+IHguaXNCdWcgPT0gZmFsc2UpO1xyXG4gICAgICAvLyAgICAgICAgIH1cclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gdXNlclN0b3JpZXNMaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxTaG9ydE5hbWU6IGl0ZW0uZ29hbFNob3J0TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnByb2plY3ROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnRJZDogaXRlbS5zcHJpbnRJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgc3ByaW50TmFtZTogaXRlbS5zcHJpbnROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlJZDogaXRlbS51c2VyU3RvcnlJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5TmFtZTogaXRlbS51c2VyU3RvcnlOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlTdGF0dXNOYW1lOiBpdGVtLnVzZXJTdG9yeVN0YXR1c05hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVR5cGVOYW1lOiBpdGVtLnVzZXJTdG9yeVR5cGVOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlVbmlxdWVOYW1lOiBpdGVtLnVzZXJTdG9yeVVuaXF1ZU5hbWVcclxuICAgICAgLy8gICAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgLy8gfVxyXG5cclxuICAgICAgLy8gICBsZXQgc2VhcmNoR29hbHMgPSBuZXcgR29hbFNlYXJjaENyaXRlcmlhQXBpSW5wdXRNb2RlbCgpO1xyXG4gICAgICAvLyAgIHNlYXJjaEdvYWxzLnNlYXJjaFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIC8vICAgLy8ucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG4gICAgICAvLyAgIC8vaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICB0aGlzLnVzZXJTZXJ2aWNlLnNlYXJjaEdvYWxzKHNlYXJjaEdvYWxzKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsSWQ6IGl0ZW0uZ29hbElkLFxyXG4gICAgICAvLyAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsU2hvcnROYW1lOiBpdGVtLmdvYWxTaG9ydE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsVW5pcXVlTmFtZTogaXRlbS5nb2FsVW5pcXVlTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5wcm9qZWN0TmFtZVxyXG4gICAgICAvLyAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgfSk7XHJcblxyXG4gICAgICAvLyAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gICAgIH1cclxuXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gLy99XHJcblxyXG4gICAgICAvLyBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkgJiYgISh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApICYmICEodGhpcy53aWRnZXRzLmxlbmd0aCA+IDApICYmICEodGhpcy50b29scy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53b3Jrc3BhY2VzICYmXHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMud2lkZ2V0cyAmJlxyXG4gICAgICAgIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJlxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJlxyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubWVudUl0ZW0pIHtcclxuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbVxyXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xyXG4gICAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgICAgLy90aGlzLmVtcGxveWVlTGlzdCA9ICh0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCAmJiB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gW107XHJcbiAgICAgIC8vIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIC8vIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zWzBdIDogbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID09IFwiXCIgPyAodGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkKSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlU2VhcmNoKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXHJcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gKGEubWVudS50b0xvd2VyQ2FzZSgpID4gYi5tZW51LnRvTG93ZXJDYXNlKCkgPyAxIDogLTEpKTtcclxuICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XHJcbiAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA6IFtdO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZShldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiBudWxsLCBzZWFyY2hVbmlxdWVJZDogdGhpcy5zZWFyY2hUZXh0IH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1JvdXRlKHJlcy5kYXRhWzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdHaXZlbiBJZCBpcyBub3QgdmFsaWQsIHBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaWQgdG8gbmF2aWdhdGUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICghcmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGl0ZW0pIHtcclxuICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvUm91dGUoaXRlbSkge1xyXG4gICAgdmFyIG5hbWU7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgfHwgdGhpcy5zZWFyY2hCeUlkKSB7XHJcbiAgICAgIGlmIChpdGVtLml0ZW1UeXBlICYmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8IChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAvL3RoaXMuSW5zZXJ0U2VhcmNoKGl0ZW0udW5pcXVlbk5hbWUpO1xyXG4gICAgICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9qZWN0SWQgPT0gaXRlbS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgaXRlbS5pdGVtSWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCBpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChpdGVtLm1lbnUpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ubWVudTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0uc3RhdGVdKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtLmlkKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2UgaWYgKGl0ZW0ucGVybWlzc2lvbikge1xyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIC8vICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgLy8gICBuYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgLy8gICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlKTtcclxuICAgIC8vICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0ubGlua10pO1xyXG4gICAgLy8gfSBcclxuICAgIGVsc2UgaWYgKGl0ZW0ud29ya3NwYWNlSWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ud29ya3NwYWNlTmFtZTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW0ud29ya3NwYWNlSWQpO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaXRlbS53aWRnZXRJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICBuYW1lID0gaXRlbS53aWRnZXROYW1lO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbS53aWRnZXRJZCk7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcChpdGVtKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNlYXJjaFJlY2VudEl0ZW0oaXRlbSwgZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEluc2VydFNlYXJjaChuYW1lLCByZWNlbnRTZWFyY2hUeXBlLCBpZCkge1xyXG4gICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogbmFtZSwgcmVjZW50U2VhcmNoVHlwZTogcmVjZW50U2VhcmNoVHlwZSwgaXRlbUlkOiBpZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKG5hbWUpXHJcbiAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCBuYW1lKSlcclxuICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KG5hbWUpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBTZWFyY2hSZWNlbnRJdGVtKHNlYXJjaCwgZXZlbnQpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLm1lbnUpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLm1lbnUudG9Mb3dlckNhc2UoKSA9PSBzZWFyY2gucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgICAgaXRlbS5sZW5ndGggPiAwID8gdGhpcy5uYXZpZ2F0ZShldmVudCwgaXRlbVswXSkgOiBudWxsXHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoXHJcbiAgICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCBzZWFyY2guaXRlbUlkXVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1JZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICBcIi9kYXNoYm9hcmQvcHJvZmlsZS9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNZW51KGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEgJiYgZXZlbnQud29ya3NwYWNlSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGV2ZW50LndvcmtzcGFjZUlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gZXZlbnQud29ya3NwYWNlSWQ7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC53b3Jrc3BhY2VOYW1lO1xyXG4gICAgICB0aGlzLnJzc1xyXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBldmVudC53b3Jrc3BhY2VOYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCwgaXRlbUlkOiBldmVudC53b3Jrc3BhY2VJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMoZXZlbnQud29ya3NwYWNlTmFtZSlcclxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcclxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKGV2ZW50LndvcmtzcGFjZU5hbWUpLFxyXG4gICAgICAgICAgICAvLyAgICAgICAxXHJcbiAgICAgICAgICAgIC8vICAgICApLFxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgZXZlbnQud29ya3NwYWNlTmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQoZXZlbnQud29ya3NwYWNlTmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEVtcGxveWVlKGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBldmVudC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBldmVudC53b3Jrc3BhY2VJZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlID0gZXZlbnQuaXRlbUlkO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1OYW1lID0gZXZlbnQuaXRlbU5hbWU7XHJcbiAgICAgIHRoaXMucnNzXHJcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGV2ZW50Lml0ZW1OYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtSWQ6IGV2ZW50Lml0ZW1JZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFkaW1uVG9vbChsaW5rLCBldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtsaW5rXSk7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogaXRlbS5tZW51LCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLm1lbnUsIGl0ZW1JZDogaXRlbS5pZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhuYW1lKVxyXG4gICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxyXG4gICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChuYW1lKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIE9uU2VsZWN0KHdpZGdldCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9BcHAod2lkZ2V0KTtcclxuICAgICAgdGhpcy5yc3NcclxuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogd2lkZ2V0LndpZGdldE5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtSWQ6IHdpZGdldC53aWRnZXRJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMod2lkZ2V0LndpZGdldE5hbWUpXHJcbiAgICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoXHJcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZih3aWRnZXQud2lkZ2V0TmFtZSksXHJcbiAgICAgICAgICAgIC8vICAgICAgIDFcclxuICAgICAgICAgICAgLy8gICAgICksXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCB3aWRnZXQud2lkZ2V0TmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQod2lkZ2V0LndpZGdldE5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0UmVjZW50U2VhcmNoZXMoKSB7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFJlZGlyZWN0VG9BcHAod2lkZ2V0KSB7XHJcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcclxuICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCB3aWRnZXQud2lkZ2V0SWRdXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBPbkdvYWxTZWxlY3QoZ29hbCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9Hb2FsKGdvYWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3RUb0dvYWwoZ29hbCkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSBnb2FsLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKGdvYWwuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGdvYWwuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgZ29hbC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgZ29hbC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuICAvLyAgfVxyXG5cclxuICBPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSB1c2VyU3RvcnkucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAodXNlclN0b3J5Lml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2godXNlclN0b3J5Lml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIHVzZXJTdG9yeS5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHVzZXJTdG9yeS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgdXNlclN0b3J5Lml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbUlkXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcbiAgLy8gfVxyXG5cclxuICBTZXQoKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA8IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA8IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMudXNlcnMrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPCB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd0Rvd25FdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcclxuICAgICkge1xyXG4gICAgICAvL3RoaXMubWVudUVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxCeSgwLCAxMDApO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMud3MgPCB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MrKztcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCArPSA0MTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA8IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgKz0gNDg7XHJcbiAgICAgIHRoaXMud2QrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA8IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzIDwgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy51c2VycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA8IDgpIHtcclxuICAgICAgdGhpcy5ycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud2QgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMFxyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gOCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiA4ICYmIHRoaXMucnMgPCA4KSB7XHJcbiAgICAvLyAgICAgdGhpcy5ycysrO1xyXG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgLy8gICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGVsc2UgaWYgKHRoaXMucnMgIT09IG51bGwgJiYgdGhpcy5ycyAhPT0gdW5kZWZpbmVkICYmICh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCkgLSAxID4gdGhpcy5ycyAmJiB0aGlzLnJzIDwgOCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMrKztcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgfVxyXG4gIGFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dVcEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dVcEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgPT0gdGhpcy53b3Jrc3BhY2VzWzBdLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJlxyXG4gICAgICB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgLT0gNDE7XHJcbiAgICAgIHRoaXMud3MtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3aWRnZXRzICAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wIC09IDQ4O1xyXG4gICAgICB0aGlzLndkLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCA9PSB0aGlzLndpZGdldHNbMF0ud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcclxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlcyAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcclxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gV0kvQnVnICAgICAgICAgTkVFRCBUTyBETyBcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLnVzZXJzID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLnVzZXJzLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSBnb2FsL3NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBldHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPiAwKSB7XHJcbiAgICAgIHRoaXMucnMtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndkID0gODtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnBlcm1pc3Npb24gJiYgdGhpcy50ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJzID4gMCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMtLTtcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dMZWZ0RXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd29ya3NwYWNlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vZnJvbSB3aWRnZXRzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIGVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93UmlnaHRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dSaWdodEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dSaWdodEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd2lkZ2V0c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBHb2FsL1NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKVxyXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbldvcmtzcGFjZUZvcm0oKSB7XHJcbiAgICB0aGlzLmFkZFdvcmtTcGFjZVBvcE92ZXIub3BlbigpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5nZXRBbGxSb2xlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUm9sZXMoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0YWxsUm9sZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93biA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICB0aGlzLnJvbGVzRHJvcERvd24uZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcC5yb2xlSWQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBwLnJvbGVJZCA9IGlkO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIGNvbXBhcmVFZGl0U2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XHJcbiAgY29tcGFyZURlbGV0ZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIHVwc2VydFdvcmtzcGFjZSgpIHsgfVxyXG4gIHRvZ2dsZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICB0b2dnbGVFZGl0QWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxyXG4gIHRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICBjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpIHsgfVxyXG59XHJcbiIsIjxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwidmlzaWJsZXNcIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVzXCIgZnhIaWRlLmd0LXhzIGZ4U2hvdz5cclxuICA8bWF0LWljb24gY2xhc3M9XCJuZXdNZW51XCI+bWVudTwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48ZGl2IGZ4RmxleCBjbGFzcz1cIm5ld0xvZ28gZGVmYXVsdC1iZyB0b3AtbG9nby1iZyBuZXdtaW5pbG9nbyB6b29tLWltYWdlLWhvdmVyIGN1c3RvbS1oZWFkZXItaWNvbi1tb2JpbGVcIiBmeEhpZGUuZ3QteHMgZnhTaG93PlxyXG4gIDxpbWcgc3JjPVwie3tjb21wYW55TWluaUxvZ299fVwiIGFsdD1cIlwiIGlkPVwibWluaS1sb2dvLXRvcGJhclwiIHN0eWxlPVwid2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7XCJcclxuICAgIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XHJcbjwvZGl2PlxyXG48ZGl2IGZ4RmxleCBjbGFzcz1cIm5ld0xvZ28gIHRvcC1sb2dvLWJnIGFwcHMtYnV0dG9uIHpvb20taW1hZ2UtaG92ZXIgY3VzdG9tLWhlYWRlci1pY29uXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgZnhIaWRlIGZ4U2hvdy5ndC14cz5cclxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1haW5Mb2dvfX1cIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtsZWZ0OiAyMHB4O3Bvc2l0aW9uOiByZWxhdGl2ZTtcIiBpZD1cIm1haW4tbG9nby10b3BiYXJcIlxyXG4gICAgY2xhc3M9XCJpbWctaGVpZ2h0LW1haW4tbG9nby10b3BiYXJcIiAoY2xpY2spPVwiZ2V0QWxsTWVudUl0ZW1zKClcIiAvPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gXHJcbjxtYXQtbWVudSAjbWVudXM9XCJtYXRNZW51XCIgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZihtZW51SXRlbXMkIHwgYXN5bmMpXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZHJvcERvd24nXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGV2ZWxUd29NZW51XCIgKG1vdXNlb3Zlcik9XCJvcGVuTGV2ZWwyTWVudShpdGVtLnN0YXRlLGl0ZW0uc3ViKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPnt7IGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdsaW5rJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtLnN0YXRlIH19XCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuXHJcbjxtYXQtbWVudSAjbGV2ZWxUd29NZW51PVwibWF0TWVudVwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW1MdmwyIG9mIHN1YkxldmVsc1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW1MdmwyLnR5cGUgPT09ICdkcm9wRG93bidcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJsZXZlbFRocmVlTWVudVwiXHJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJvcGVuTGV2ZWwzTWVudShzdGF0ZUx2bDEsaXRlbUx2bDIuc3RhdGUsaXRlbS5zdWIpXCI+XHJcbiAgICAgICAge3sgaXRlbUx2bDIubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbUx2bDIudHlwZSA9PSAnYXBwbGljYXRpb25saW5rJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtTHZsMi5zdGF0ZSB9fVwiPlxyXG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW1MdmwyLnR5cGUgPT0gJ2xpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7c3RhdGVMdmwxfX0ve3sgaXRlbUx2bDIuc3RhdGUgfX1cIj5cclxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuXHJcbjxtYXQtbWVudSAjbGV2ZWxUaHJlZU1lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbUx2bDMgb2Ygc3ViTGV2ZWxzRm9yTGV2ZWwyXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBsZXZlbDNMaW5rMSB9fS97eyBsZXZlbDNMaW5rMiB9fS97e2l0ZW1MdmwzLnN0YXRlfX1cIj5cclxuICAgICAge3sgaXRlbUx2bDMubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT4gLS0+XHJcblxyXG48bWF0LW1lbnUgI21lbnVzPVwibWF0TWVudVwiIHlQb3NpdGlvbj1cImJlbG93XCIgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICBzdHlsZT1cImhlaWdodDphdXRvXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaycgfHwgaXRlbS50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIiAoY2xpY2spPVwic2VsZWN0TWVudShpdGVtLCRldmVudClcIlxyXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPnt7IGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG5cclxuPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcclxubGVmdDogOTAlXCIgY2xhc3M9XCJzdG9yZS1pY29tIG1hdC1pY29uLWJ1dHRvbiBzdG9yZS1pY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfRHJhZ0FwcHNcIlxyXG4gIFtuZ0NsYXNzXT1cInRoaXMucm91dGVzLnVybC5pbmNsdWRlcygnL2FwcC1zdG9yZS93aWRnZXRzJykgPyAnaWNvbl9hY3RpdmVfY2xhc3MnIDogJydcIj5cclxuICA8IS0tIDxmYS1pY29uIGljb249XCJzdG9yZVwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcclxuICAgIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiPjwvZmEtaWNvbj4gLS0+XHJcbiAgPGZhLWljb24gaWNvbj1cInN0b3JlXCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcclxuICAgIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0aGVtZS1uYXZiYXItaWNvbi1jb2xvciBzdG9yZS1pY29uLWZhXCI+PC9mYS1pY29uPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJTZWFyY2hCb3ggZHJvcGRvd25cIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1wiPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBpbnB1dC1ncm91cC1hZGRvblwiICpuZ0lmPVwic2VhcmNoQnlUZXh0XCI+QCAmbmJzcDs8L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJtYXQtY29sb3ItYWNjZW50IGlucHV0LWdyb3VwLWFkZG9uXCIgKm5nSWY9XCJzZWFyY2hCeUlkXCI+IyAmbmJzcDs8L3NwYW4+XHJcbiAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJTZWFyY2hCb3gtaW5wdXQgZHJvcGJ0blwiIHBsYWNlaG9sZGVyPVwie3sgJ0FQUC5TVEFSVEhFUkVPUkNMSUNLQ09OVFJPTCtRJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgIFtjbGFzcy5oaWRlLXBsYWNlaG9sZGVyXT1cInNlYXJjaEJ5VGV4dCB8fCBzZWFyY2hCeUlkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgI2VsZW1lbnQgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcclxuICAgIChpbnB1dCk9XCJTZWFyY2hJdGVtKCRldmVudClcIiAoY2xpY2spPVwiU2VhcmNoSXRlbSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIlNldCgpO1wiXHJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJuYXZpZ2F0ZSgkZXZlbnQsIGl0ZW1DbGlja2VkKVwiIChrZXlkb3duLmFycm93ZG93bik9XCJhcnJvd0Rvd25FdmVudCgpXCJcclxuICAgIChrZXlkb3duLmFycm93dXApPVwiYXJyb3dVcEV2ZW50KClcIiAoa2V5ZG93bi5hcnJvd2xlZnQpPVwiYXJyb3dMZWZ0RXZlbnQoKVwiIChrZXlkb3duLmFycm93cmlnaHQpPVwiYXJyb3dSaWdodEV2ZW50KClcIj5cclxuXHJcbiAgPGJ1dHRvbiBjbGFzcz1cIlNlYXJjaEJveC1idXR0b25cIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY2xvc2VfaWNvbl9zZWFyY2hcIj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGV4dFwiIGNsYXNzPVwiaWNvbi1idXR0b24gbXItMDVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXJcIj5cclxuICAgICAgICBjbG9zZTwvbWF0LWljb24+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJTZWFyY2hCb3gtaWNvbiBpY29uLWNvbG9yIG10LWxnLW4yIG1yLTA1IGluZm8tY2xhc3MgaW5mby1pY29uLWN1c3RvbVwiIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cInBcIlxyXG4gICAgICAjaW5mb1BvcE92ZXI9XCJzYXRQb3BvdmVyQW5jaG9yXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5JbmZvKGluZm9Qb3BPdmVyKVwiPmluZm88L21hdC1pY29uPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwiU2VhcmNoQm94LWljb24gaWNvbi1jb2xvciBtdC1sZy1uMiBzZWFyY2gtaWNvbi1jdXN0b21cIiBjb2xvcj1cInByaW1hcnlcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50IGRyb3Bkb3duLWNvbnRlbnQtbmF2YmFyIHNlYXJjaC1kcm9wZG93bi1jdXN0b20tbW9kYWxcIiBbbmdDbGFzc109XCJ7J2QtYmxvY2snIDogZGlzcGxheSwgICdkLW5vbmUnIDogIWRpc3BsYXl9XCI+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICpuZ0lmPVwibG9hZGluZ1NlYXJjaE1lbnVEYXRhIHx8IHJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzIHx8IHdpZGdldHNmZXRjaEluUHJvZ3Jlc3NcIj5cclxuICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93c2VsZWN0IGN1c3RvbS1yb3ctc2VsZWN0b3JcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtbmV4dCBwbC0wNSBjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtY29udGFpbmVyLW1haW5cIiAqbmdJZj1cIml0ZW1zICYmIChpdGVtcy5sZW5ndGg+MCkgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZX19PC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXIgY3VzdG9tLXNlYXJjaC1tb2RhbC1hcHBzLWhlYWRlclwiPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1maWxlLXRleHQgdy00IGgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNMTUgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjdaXCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTQgMnY0YTIgMiAwIDAgMCAyIDJoNFwiPjwvcGF0aD48cGF0aCBkPVwiTTEwIDlIOFwiPjwvcGF0aD48cGF0aCBkPVwiTTE2IDEzSDhcIj48L3BhdGg+PHBhdGggZD1cIk0xNiAxN0g4XCI+PC9wYXRoPjwvc3ZnPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtaGVhZGVyLXRleHRcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgaWQ9XCJzdHlsZS0xXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1hcHBzLWNvbnRhaW5lclwiPiAtLT5cclxuICAgICAgICA8ZGl2IGlkPVwic3R5bGUtMVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcyAmJiBpdGVtcy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4O1wiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJyNmMWY1ZjknIDogJ3doaXRlJ1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1hcHBzLW1haW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdsaW5rJyB8fCBpdGVtLnR5cGUgPT0gJ2FwcGxpY2F0aW9ubGluaydcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtLnN0YXRlIH19XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWFwcHMtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiXHJcbiAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic2VsZWN0QWRpbW5Ub29sKGl0ZW0uc3RhdGUsICRldmVudCwgaXRlbSlcIiByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgICAgICAgICAgICAgIHRydWV9XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyB0cmFuc2xhdGVhcHBsaWNhdGlvbm5hbWUoaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tY29sb3IgY3VzdG9tLXNlYXJjaC1tb2RhbC1hcHBzLWljb25cIiBbbmdDbGFzc109XCJzZWxlY3RlZFJvd0luZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwidHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0ubWVudSkgfCAgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtYXBwcy10ZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBwbC0wNVwiICpuZ0lmPVwiIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTAgY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyLW1haW5cIiAqbmdJZj1cIndvcmtzcGFjZXMgJiYgKHdvcmtzcGFjZXMubGVuZ3RoPjApXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJsdWNpZGUgbHVjaWRlLWxheW91dC1kYXNoYm9hcmQgdy00IGgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxyZWN0IHdpZHRoPVwiN1wiIGhlaWdodD1cIjlcIiB4PVwiM1wiIHk9XCIzXCIgcng9XCIxXCI+PC9yZWN0PjxyZWN0IHdpZHRoPVwiN1wiIGhlaWdodD1cIjVcIiB4PVwiMTRcIiB5PVwiM1wiIHJ4PVwiMVwiPjwvcmVjdD48cmVjdCB3aWR0aD1cIjdcIiBoZWlnaHQ9XCI5XCIgeD1cIjE0XCIgeT1cIjEyXCIgcng9XCIxXCI+PC9yZWN0PjxyZWN0IHdpZHRoPVwiN1wiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCIxNlwiIHJ4PVwiMVwiPjwvcmVjdD48L3N2Zz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1oZWFkZXItdGV4dFwiPnt7ICdTSEVMTC5EQVNIQk9BUkRTJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1zcXVhcmVcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQWNjZXNzX2ZlYXR1cmVfQWRkRGFzaGJvYXJkXCIgbWF0VG9vbHRpcD1cInt7ICdBUFAuQUREREFTSEJPQVJEJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiaW5pdGlhbGl6ZVdvcmtzcGFjZUZvcm0oKTtvcGVuV29ya3NwYWNlRm9ybSgpO1wiIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciBjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1oZWFkZXItYWRkLWljb25cIlxyXG4gICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImFkZFdvcmtzcGFjZVwiPlxyXG4gICAgICAgICAgICA8L2ZhLWljb24+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIDxkaXYgaWQ9XCJzdHlsZS0yXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1kYXNoYm9hcmQtY29udGFpbmVyXCI+IC0tPlxyXG4gICAgICAgICAgPGRpdiBpZD1cInN0eWxlLTJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtzcGFjZXMgJiYgd29ya3NwYWNlcy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdjIG9mIHdvcmtzcGFjZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid3MgPT0gaSA/ICcjZjFmNWY5JyA6ICd3aGl0ZSdcIiBjbGFzcz1cInNjcm9sbCBjdXN0b20tc2VhcmNoLW1vZGFsLWRhc2hib2FyZC1tYWluXCIgI3dvcmtzcGFjZUVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKG1vdXNlZG93bik9XCJzZWxlY3RNZW51KHdjLCRldmVudClcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIndzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9Vcmwod2Mud29ya3NwYWNlSWQpXCJcclxuICAgICAgICAgICAgICAgICAgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQve3sgd2Mud29ya3NwYWNlSWQgfX1cIiByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7d2Mud29ya3NwYWNlTmFtZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtbGF5b3V0LWRhc2hib2FyZCB3LTQgaC00XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiOVwiIHg9XCIzXCIgeT1cIjNcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNVwiIHg9XCIxNFwiIHk9XCIzXCIgcng9XCIxXCI+PC9yZWN0PjxyZWN0IHdpZHRoPVwiN1wiIGhlaWdodD1cIjlcIiB4PVwiMTRcIiB5PVwiMTJcIiByeD1cIjFcIj48L3JlY3Q+PHJlY3Qgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiNVwiIHg9XCIzXCIgeT1cIjE2XCIgcng9XCIxXCI+PC9yZWN0Pjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIndjLndvcmtzcGFjZU5hbWUgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dCBcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtZGFzaGJvYXJkLXRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIiAqbmdJZj1cIndpZGdldHMgJiYgd2lkZ2V0cy5sZW5ndGg+MCAgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkZBVk9VUklURUFQUFMnIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIiBpZD1cInN0eWxlLTNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid2QgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgICAgIHRydWV9XCIgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzL3t7IHdpZGdldC53aWRnZXRJZCB9fVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2QgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIiAobW91c2Vkb3duKT1cIk9uU2VsZWN0KHdpZGdldCwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7d2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwid2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiICpuZ0lmPVwicHJvamVjdExpc3QgJiYgcHJvamVjdExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+UHJvamVjdHM8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsXCIgaWQ9XCJzdHlsZS03XCJcclxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2plY3Qgb2YgcHJvamVjdExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJwcm9qZWN0SW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwicHJvamVjdEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCJcclxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUHJvamVjdFNlbGVjdChwcm9qZWN0LCRldmVudClcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3twcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInByb2plY3QuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiXHJcbiAgICAgICAgKm5nSWY9XCJ1c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCIgKm5nSWY9XCJpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJQlVHJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiICpuZ0lmPVwiIWlzRW5hYmxlQnVnQm9hcmRcIj57eyAnU0hFTEwuV0knfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdXNlclN0b3J5IG9mIHVzZXJTdG9yeVNlYXJjaExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ1c2VycyA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgICB0cnVlfVwiIFtuZ0NsYXNzXT1cInVzZXJzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e3VzZXJTdG9yeS5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ1c2VyU3RvcnkuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIlxyXG4gICAgICAgICpuZ0lmPVwiZ29hbFNlYXJjaExpc3QgJiYgZ29hbFNlYXJjaExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkdPQUxTUFJJTlQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic3R5bGUtNlwiXHJcbiAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBnb2FsIG9mIGdvYWxTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ29hbEluZGV4ID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6XHJcbiAgICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwiZ29hbEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPbkdvYWxTZWxlY3QoZ29hbCwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7Z29hbC5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnb2FsLml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtYXBwcyBtbC0wXCJcclxuICAgICAgICAqbmdJZj1cIihlbXBsb3llZUxpc3QgJiYgZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmIHNlYXJjaFRleHQgJiYgc2VhcmNoQnlUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPkVtcGxveWVlczwvZGl2PlxyXG4gICAgICAgIDxkaXYgaWQ9XCJzdHlsZS00XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVMaXN0OyBsZXQgaSA9IGluZGV4XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiICN3b3Jrc3BhY2VFbGVtZW50PlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKG1vdXNlZG93bik9XCJzZWxlY3RFbXBsb3llZShlbXBsb3llZSwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkL3Byb2ZpbGUve3sgZW1wbG95ZWUuaXRlbUlkIH19L292ZXJ2aWV3XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ZW1wbG95ZWUuaXRlbU5hbWV9fVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtYXZhdGFyIFtuYW1lXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnNcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IGVtcGxveWVlLml0ZW1OYW1lIH19XCIgW3NyY109XCJlbXBsb3llZS5wcm9maWxlSW1hZ2UgfCBmZXRjaFNpemVkQW5kQ2FjaGVkSW1hZ2U6ICcyMCc6JydcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCIgKGNsaWNrKT1cInByb2ZpbGVQYWdlKGVtcGxveWVlLnVzZXJJZCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtYXZhdGFyPiBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uc2VsZWN0LWFwcHMgbWwtMCBjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtY29udGFpbmVyLW1haW5cIlxyXG4gICAgICAgICpuZ0lmPVwicmVjZW50U2VhcmNoZXMgJiYgKHJlY2VudFNlYXJjaGVzLmxlbmd0aD4wKSAgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyIGN1c3RvbS1zZWFyY2gtbW9kYWwtcmVjZW50cy1oZWFkZXJcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtY2xvY2sgdy00IGgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVwiMTIgNiAxMiAxMiAxNiAxNFwiPjwvcG9seWxpbmU+PC9zdmc+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtcmVjZW50cy1oZWFkZXItdGV4dFwiPnt7ICdTSEVMTC5SRUNFTlRTRUFSQ0hTJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudFwiIGNsYXNzPVwiY3VzdG9tLXNlYXJjaC1tb2RhbC1yZWNlbnRzLWNvbnRhaW5lclwiPiAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtcmVjZW50cy1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlYXJjaCBvZiByZWNlbnRTZWFyY2hlcyB8IHNsaWNlOjA6OSBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnMgPT0gaSA/ICcjZjFmNWY5JyA6ICd3aGl0ZSdcIiBjbGFzcz1cInNjcm9sbCBjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtbWFpblwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtYnRuXCIgW25nQ2xhc3NdPVwicnMgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic2VhcmNoVGV4dD1zZWFyY2gucmVjZW50U2VhcmNoO1NlYXJjaFJlY2VudEl0ZW0oc2VhcmNoLCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tzZWFyY2gucmVjZW50U2VhcmNoIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0gXHJcbiAgICAgICAgICAgICAgKHt7IGNvbnZlcnRUb0xvY2FsVGltZShzZWFyY2guY3JlYXRlZERhdGVUaW1lKSB8IHRpbWVhZ28gfX0pXCI+XHJcbiAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwibHVjaWRlIGx1Y2lkZS1jbG9jayB3LTQgaC00IHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVwiMTIgNiAxMiAxMiAxNiAxNFwiPjwvcG9seWxpbmU+PC9zdmc+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJzZWFyY2gucmVjZW50U2VhcmNoIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIiBjbGFzcz1cImN1c3RvbS1zZWFyY2gtbW9kYWwtcmVjZW50cy10ZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tc2VhcmNoLW1vZGFsLXJlY2VudHMtdGltZS10ZXh0XCI+KHt7IGNvbnZlcnRUb0xvY2FsVGltZShzZWFyY2guY3JlYXRlZERhdGVUaW1lKSB8IHRpbWVhZ28gfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBpbi1oZWFkZXIgXCIgKm5nSWY9XCIhc2VhcmNoVGV4dCAmJiBzZWFyY2hCeUlkXCI+XHJcbiAgICAgIFBsZWFzZSBlbnRlciB1bmlxdWUgaWQgYW5kIGNsaWNrIGVudGVyIGZvciBuYXZpZ2F0aW5nIHRvIGNvcnJlc3BpbmcgcGFnZVxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBpbi1oZWFkZXIgXCIgKm5nSWY9XCIhc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIiA+XHJcbiAgICBQbGVhc2UgZW50ZXIgdGV4dCB0byByZXRyZWl2ZSBkYXRhIGJ5IGZpbHRlcmluZ1xyXG4gIDwvZGl2PiAtLT5cclxuICBcclxuXHJcbiAgPHNhdC1wb3BvdmVyIGJhY2tkcm9wQ2xhc3M9XCJiYWNrZHJvcC1jb2xvclwiIGhhc0JhY2tkcm9wICNhZGRXb3Jrc3BhY2UgdmVydGljYWxBbGlnbj1cImJlbG93XCIgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCJcclxuICAgIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmaWx0ZXItZGF0YSBwLTBcIj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZS10ZXh0IG1hdC1iZy1wcmltYXJ5IHAtMDUgbWItMVwiPlxyXG4gICAgICAgICAge3sgJ0FQUC5BREREQVNIQk9BUkRUSVRMRScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3b3Jrc3BhY2VGb3JtXCIgbm92YWxpZGF0ZSAoc3VibWl0KT1cIndvcmtzcGFjZUZvcm0udmFsaWQgJiYgdXBzZXJ0V29ya3NwYWNlKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7ICdIUk1BTkFHQU1FTlQuTkFNRScgfCB0cmFuc2xhdGV9fSpcIiBmb3JtQ29udHJvbE5hbWU9XCJ3b3Jrc3BhY2VOYW1lXCIgLz5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS50b3VjaGVkIFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FQUC5EQVNIQk9BUkROQU1FUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkRBU0hCT0FSRE5BTUVMRU5HVEhFWENFRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiByb3dzPVwiMlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdDT01QQU5ZU0VUVElOR1MuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnZGVzY3JpcHRpb24nKS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkNVU1RPTUFQUERFU0NSSVBUSU9OTUFYTEVOR1RIRVJST1InIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkUm9sZXNcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLlZJRVdST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZSByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicm9sZXMucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGVzIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsU2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvbGVzUGVyT25lKGFsbFNlbGVjdGVkLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlcy5yb2xlTmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCdzZWxlY3RlZFJvbGVzJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3NlbGVjdGVkUm9sZXMnKS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLlNFTEVDVEFOWVJPTEUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJlZGl0Um9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRWRpdFNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLkVESVRST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZT5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxFZGl0U2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZUVkaXRBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnUEVSTUlTU0lPTk1BTkFHRU1FTlQuU0VMRUNUQUxMJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlLnJvbGVJZFwiICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsRWRpdFNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFZGl0Um9sZXNQZXJPbmUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGVsZXRlUm9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRGVsZXRlU2VsZWN0ZWRSb2xlc0ZuXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuREVMRVRFUk9MRVMnIHwgdHJhbnNsYXRlIH19XCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAjYWxsRGVsZXRlU2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKVwiIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxEZWxldGVTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGVsZXRlUm9sZXNQZXJPbmUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBzZXJ0V29ya3NwYWNlKClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhd29ya3NwYWNlRm9ybS52YWxpZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJkYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj4ge3sgJ1NBVkUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtci0wNVwiIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj4ge3sgJ0NBTkNFTCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9zYXQtcG9wb3Zlcj5cclxuXHJcblxyXG4gIDxzYXQtcG9wb3ZlciAjcCBoYXNCYWNrZHJvcCBbaW50ZXJhY3RpdmVDbG9zZV09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImFib3ZlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC13cmFwcGVyXCIgc3R5bGU9XCIgYmFja2dyb3VuZDogI2ZmZjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xyXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgcGFkZGluZzogMTBweCAxNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLDAsMCwwLjEyKTtcIj5cclxuICAgICAgPHRhYmxlPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZD5DdHJsICsgUTogPC90ZD5cclxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxyXG4gICAgICAgICAgPHRkPiB7eyAnU0hFTEwuVE9PUEVOU0VBUkNITUVOVScgfCB0cmFuc2xhdGV9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGQ+Q3RybCArIEI6IDwvdGQ+XHJcbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cclxuICAgICAgICAgIDx0ZD4ge3sgJ1NIRUxMLlRPT1BFTkdPQUxTQU5EVVNFUlMnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkPkN0cmwgKyBZOiA8L3RkPlxyXG4gICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT1NFQVJDSEJZSUQnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkPkN0cmwgKyBNOiA8L3RkPlxyXG4gICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT0NMT1NFTUVOVScgfCB0cmFuc2xhdGV9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2F0LXBvcG92ZXI+XHJcblxyXG4gIDxtYXQtc3Bpbm5lciAqbmdJZj1cInNlYXJjaEJ5VGV4dExvYWRpbmcgJiYgZGlzcGxheVwiIGNsYXNzPVwic3Bpbm5lci1jbGFzc1wiIFtkaWFtZXRlcl09XCIxMDBcIj48L21hdC1zcGlubmVyPiJdfQ==
|
|
2462
|
+
MenuComponent.ɵfac = function MenuComponent_Factory(t) { return new (t || MenuComponent)(i0.ɵɵdirectiveInject(i1.Store), i0.ɵɵdirectiveInject(i2.CookieService), i0.ɵɵdirectiveInject(i3.Router), i0.ɵɵdirectiveInject(i4.ToastrService), i0.ɵɵdirectiveInject(i5.TranslateService), i0.ɵɵdirectiveInject(i6.AuthenticationService), i0.ɵɵdirectiveInject(i3.ActivatedRoute), i0.ɵɵdirectiveInject(i7.MatDialog), i0.ɵɵdirectiveInject(i8.RecentSearchService), i0.ɵɵdirectiveInject(i9.Location), i0.ɵɵdirectiveInject(i10.ThemeService), i0.ɵɵdirectiveInject(i11.Actions), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(WINDOW), i0.ɵɵdirectiveInject(i12.GoogleAnalyticsService), i0.ɵɵdirectiveInject(i13.CommonService)); };
|
|
2463
|
+
MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent, selectors: [["app-menu"]], viewQuery: function MenuComponent_Query(rf, ctx) { if (rf & 1) {
|
|
2464
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
2465
|
+
i0.ɵɵviewQuery(_c1, 5);
|
|
2466
|
+
i0.ɵɵviewQuery(_c2, 5);
|
|
2467
|
+
i0.ɵɵviewQuery(_c3, 5);
|
|
2468
|
+
i0.ɵɵviewQuery(_c4, 5);
|
|
2469
|
+
i0.ɵɵviewQuery(_c5, 5);
|
|
2470
|
+
i0.ɵɵviewQuery(_c6, 5);
|
|
2471
|
+
i0.ɵɵviewQuery(_c7, 5);
|
|
2472
|
+
i0.ɵɵviewQuery(_c8, 5);
|
|
2473
|
+
i0.ɵɵviewQuery(_c9, 5);
|
|
2474
|
+
} if (rf & 2) {
|
|
2475
|
+
let _t;
|
|
2476
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuTrigger = _t.first);
|
|
2477
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.element = _t.first);
|
|
2478
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.workspaceElement = _t.first);
|
|
2479
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuElement = _t.first);
|
|
2480
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addWorkSpacePopOver = _t.first);
|
|
2481
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allSelected = _t.first);
|
|
2482
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allEditSelected = _t.first);
|
|
2483
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.allDeleteSelected = _t.first);
|
|
2484
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.infoPopOver = _t.first);
|
|
2485
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.openMenuPopOver = _t);
|
|
2486
|
+
} }, hostBindings: function MenuComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
2487
|
+
i0.ɵɵlistener("keydown.control.q", function MenuComponent_keydown_control_q_HostBindingHandler() { return ctx.keyOpenEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.m", function MenuComponent_keydown_control_m_HostBindingHandler() { return ctx.keyCloseEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.b", function MenuComponent_keydown_control_b_HostBindingHandler() { return ctx.remoteSearchByText(); }, false, i0.ɵɵresolveDocument)("keydown.control.y", function MenuComponent_keydown_control_y_HostBindingHandler() { return ctx.remoteSearchById(); }, false, i0.ɵɵresolveDocument);
|
|
2488
|
+
} }, inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 7, consts: [["type", "submit", "mat-icon-button", "", "fxHide.gt-xs", "", "fxShow", "", 1, "visibles", 3, "matMenuTriggerFor"], [1, "newMenu"], ["yPosition", "below", 1, "filter-panel", 2, "height", "auto", 3, "click"], ["menus", "matMenu"], [4, "ngFor", "ngForOf"], [1, "home-icon", "mat-icon-button", 2, "position", "relative", "left", "88%"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", 2, "width", "40px", "height", "40px", "display", "flex", "align-items", "center", "justify-content", "center", 3, "matTooltip", "routerLink"], [2, "font-size", "28px", "line-height", "1", "background", "linear-gradient(90deg,#5de0e6,#004aad)", "-webkit-background-clip", "text", "-webkit-text-fill-color", "transparent", "background-clip", "text", "text-fill-color", "transparent"], ["style", "position: relative; left:90%", "class", "store-icom mat-icon-button", 3, "ngClass", 4, "ngIf"], [4, "ngIf"], ["mat-menu-item", "", "routerLinkActive", "item-active", 3, "routerLink", "click"], [1, "store-icom", "mat-icon-button", 2, "position", "relative", "left", "90%", 3, "ngClass"], ["mat-icon-button", "", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", 2, "width", "40px", "height", "40px", "display", "flex", "align-items", "center", "justify-content", "center", 3, "matTooltip", "click"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2489
|
+
i0.ɵɵelementStart(0, "button", 0);
|
|
2490
|
+
i0.ɵɵelementStart(1, "mat-icon", 1);
|
|
2491
|
+
i0.ɵɵtext(2, "menu");
|
|
2492
|
+
i0.ɵɵelementEnd();
|
|
2493
|
+
i0.ɵɵelementEnd();
|
|
2494
|
+
i0.ɵɵelementStart(3, "mat-menu", 2, 3);
|
|
2495
|
+
i0.ɵɵlistener("click", function MenuComponent_Template_mat_menu_click_3_listener($event) { return $event.stopPropagation(); });
|
|
2496
|
+
i0.ɵɵtemplate(5, MenuComponent_div_5_Template, 2, 1, "div", 4);
|
|
2497
|
+
i0.ɵɵelementEnd();
|
|
2498
|
+
i0.ɵɵelementStart(6, "div", 5);
|
|
2499
|
+
i0.ɵɵelementStart(7, "button", 6);
|
|
2500
|
+
i0.ɵɵpipe(8, "translate");
|
|
2501
|
+
i0.ɵɵelementStart(9, "mat-icon", 7);
|
|
2502
|
+
i0.ɵɵtext(10, " home ");
|
|
2503
|
+
i0.ɵɵelementEnd();
|
|
2504
|
+
i0.ɵɵelementEnd();
|
|
2505
|
+
i0.ɵɵelementEnd();
|
|
2506
|
+
i0.ɵɵtemplate(11, MenuComponent_div_11_Template, 5, 4, "div", 8);
|
|
2507
|
+
} if (rf & 2) {
|
|
2508
|
+
const _r0 = i0.ɵɵreference(4);
|
|
2509
|
+
i0.ɵɵproperty("matMenuTriggerFor", _r0);
|
|
2510
|
+
i0.ɵɵadvance(5);
|
|
2511
|
+
i0.ɵɵproperty("ngForOf", ctx.items);
|
|
2512
|
+
i0.ɵɵadvance(2);
|
|
2513
|
+
i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(8, 5, "HOME"));
|
|
2514
|
+
i0.ɵɵproperty("routerLink", "/dashboard-management");
|
|
2515
|
+
i0.ɵɵadvance(4);
|
|
2516
|
+
i0.ɵɵproperty("ngIf", ctx.canAccess_feature_DragApps);
|
|
2517
|
+
} }, directives: [i14.MatButton, i15.DefaultShowHideDirective, i16.MatMenuTrigger, i17.MatIcon, i16.MatMenu, i9.NgForOf, i18.MatTooltip, i3.RouterLink, i9.NgIf, i16.MatMenuItem, i3.RouterLinkActive, i9.NgClass, i15.DefaultClassDirective], pipes: [i5.TranslatePipe, i19.SoftLabelPipe], encapsulation: 2 });
|
|
2518
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuComponent, [{
|
|
2519
|
+
type: Component,
|
|
2520
|
+
args: [{
|
|
2521
|
+
selector: "app-menu",
|
|
2522
|
+
templateUrl: "./menu.component.html"
|
|
2523
|
+
}]
|
|
2524
|
+
}], function () { return [{ type: i1.Store }, { type: i2.CookieService }, { type: i3.Router }, { type: i4.ToastrService }, { type: i5.TranslateService }, { type: i6.AuthenticationService }, { type: i3.ActivatedRoute }, { type: i7.MatDialog }, { type: i8.RecentSearchService }, { type: i9.Location }, { type: i10.ThemeService }, { type: i11.Actions }, { type: i0.ChangeDetectorRef }, { type: Window, decorators: [{
|
|
2525
|
+
type: Inject,
|
|
2526
|
+
args: [WINDOW]
|
|
2527
|
+
}] }, { type: i12.GoogleAnalyticsService }, { type: i13.CommonService }]; }, { openMenuPopOver: [{
|
|
2528
|
+
type: ViewChildren,
|
|
2529
|
+
args: ["openMenuPopUp"]
|
|
2530
|
+
}], menuTrigger: [{
|
|
2531
|
+
type: ViewChild,
|
|
2532
|
+
args: ["menuTrigger"]
|
|
2533
|
+
}], element: [{
|
|
2534
|
+
type: ViewChild,
|
|
2535
|
+
args: ["element"]
|
|
2536
|
+
}], workspaceElement: [{
|
|
2537
|
+
type: ViewChild,
|
|
2538
|
+
args: ["workspaceElement"]
|
|
2539
|
+
}], menuElement: [{
|
|
2540
|
+
type: ViewChild,
|
|
2541
|
+
args: ["menuElement"]
|
|
2542
|
+
}], addWorkSpacePopOver: [{
|
|
2543
|
+
type: ViewChild,
|
|
2544
|
+
args: ["addWorkspace"]
|
|
2545
|
+
}], allSelected: [{
|
|
2546
|
+
type: ViewChild,
|
|
2547
|
+
args: ["allSelected"]
|
|
2548
|
+
}], allEditSelected: [{
|
|
2549
|
+
type: ViewChild,
|
|
2550
|
+
args: ["allEditSelected"]
|
|
2551
|
+
}], allDeleteSelected: [{
|
|
2552
|
+
type: ViewChild,
|
|
2553
|
+
args: ["allDeleteSelected"]
|
|
2554
|
+
}], infoPopOver: [{
|
|
2555
|
+
type: ViewChild,
|
|
2556
|
+
args: ['infoPopOver']
|
|
2557
|
+
}], isOpened: [{
|
|
2558
|
+
type: Output
|
|
2559
|
+
}], openNewDashboard: [{
|
|
2560
|
+
type: Output
|
|
2561
|
+
}], reloadAll: [{
|
|
2562
|
+
type: Input,
|
|
2563
|
+
args: ["reload"]
|
|
2564
|
+
}], keyOpenEvent: [{
|
|
2565
|
+
type: HostListener,
|
|
2566
|
+
args: ['document:keydown.control.q', []]
|
|
2567
|
+
}], keyCloseEvent: [{
|
|
2568
|
+
type: HostListener,
|
|
2569
|
+
args: ['document:keydown.control.m', []]
|
|
2570
|
+
}], remoteSearchByText: [{
|
|
2571
|
+
type: HostListener,
|
|
2572
|
+
args: ['document:keydown.control.b', []]
|
|
2573
|
+
}], remoteSearchById: [{
|
|
2574
|
+
type: HostListener,
|
|
2575
|
+
args: ['document:keydown.control.y', []]
|
|
2576
|
+
}] }); })();
|
|
2577
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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LENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNySCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ2hHO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDM0csSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRCxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlB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QUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDOUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ2xILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7U0FDaEc7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLElBQUksY0FBYyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzlJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFD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QUFZO21CQUFDLGVBQWU7WUFDSCxXQUFXO2tCQUFwQyxTQUFTO21CQUFDLGFBQWE7WUFDRixPQUFPO2tCQUE1QixTQUFTO21CQUFDLFNBQVM7WUFDVyxnQkFBZ0I7a0JBQTlDLFNBQVM7bUJBQUMsa0JBQWtCO1lBQ0gsV0FBVztrQkFBcEMsU0FBUzttQkFBQyxhQUFhO1lBQ0csbUJBQW1CO2tCQUE3QyxTQUFTO21CQUFDLGNBQWM7WUFDUyxXQUFXO2tCQUE1QyxTQUFTO21CQUFDLGFBQWE7WUFDYyxlQUFlO2tCQUFwRCxTQUFTO21CQUFDLGlCQUFpQjtZQUNZLGlCQUFpQjtrQkFBeEQsU0FBUzttQkFBQyxtQkFBbUI7WUFDSixXQUFXO2tCQUFwQyxTQUFTO21CQUFDLGFBQWE7WUFDZCxRQUFRO2tCQUFqQixNQUFNO1lBQ0csZ0JBQWdCO2tCQUF6QixNQUFNO1lBd0VILFNBQVM7a0JBRFosS0FBSzttQkFBQyxRQUFRO1lBaUxmLFlBQVk7a0JBRFgsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFO1lBVzlDLGFBQWE7a0JBRFosWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFO1lBVzlDLGtCQUFrQjtrQkFEakIsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFO1lBVTlDLGdCQUFnQjtrQkFEZixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZHJlbiwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBPbkluaXQsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgU3RvcmUsIHNlbGVjdCB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG4vLyBpbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCJhcHAvc2hhcmVkL3N0b3JlL3JlZHVjZXJzL21lbnVpdGVtcy5yZWR1Y2Vyc1wiO1xyXG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gXCIuLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgKiBhcyBzaGFyZWRNb2R1bGVSZWR1Y2VycyBmcm9tIFwiLi8uLi8uLi9zdG9yZS9yZWR1Y2Vycy9pbmRleFwiO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvbWVudWl0ZW1zLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSBcIm5neC1jb29raWUtc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcclxuaW1wb3J0IHsgUmVjZW50U2VhcmNoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9yZWNlbnRTZWFyY2guc2VydmljZVwiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLCBHZXRDb21wYW55VGhlbWVUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9hdXRoZW50aWNhdGlvbi5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IG9mVHlwZSwgQWN0aW9ucyB9IGZyb20gXCJAbmdyeC9lZmZlY3RzXCI7XHJcbmltcG9ydCB7IFNlYXJjaFRhc2tUeXBlIH0gZnJvbSBcIi4vc2VhcmNoVGFzay5lbnVtXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNhdFBvcG92ZXIgfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tdXNlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlUHJvcGVydGllcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvbG9jYWxzdG9yYWdlLXByb3BlcnRpZXMnO1xyXG5pbXBvcnQgeyBFbXBsb3llZUxpc3RNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9lbXBsb3llZSc7XHJcbmltcG9ydCB7IEVtcGxveWVlTGlzdElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtcGxveWVlLUxpc3QnO1xyXG5pbXBvcnQgeyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbXBvbmVudHMvY29tcG9uZW50YmFzZSc7XHJcbmltcG9ydCB7IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zb2Z0bGFiZWxzLW1vZGVsJztcclxuaW1wb3J0IHsgSU1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lNZW51SXRlbSc7XHJcbmltcG9ydCB7IFVzZXJTdG9yeSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyU3RvcnknO1xyXG5pbXBvcnQgeyBXaWRnZXRMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dpZGdldGxpc3QnO1xyXG5pbXBvcnQgeyBEcmFnZWRXaWRnZXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHJhZ2VkV2lkZ2V0JztcclxuaW1wb3J0IHsgV29ya3NwYWNlTGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy93b3Jrc3BhY2VMaXN0JztcclxuaW1wb3J0IHsgUmVjZW50U2VhcmNoTW9kZWwsIFNlYXJjaFRhc2tUeXBlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvUmVjZW50U2VhcmNoTW9kZWwnO1xyXG5pbXBvcnQgeyBUaGVtZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RoZW1lcy5tb2RlbCc7XHJcbmltcG9ydCB7IFdJTkRPVyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL3dpbmRvdy5oZWxwZXInO1xyXG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVDYXRlZ29yaWVzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL21lbnUtY2F0ZWdvcmllcyc7XHJcbmltcG9ydCB7IEZlYXR1cmVJZHMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2ZlYXR1cmUtaWRzJztcclxuaW1wb3J0ICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy9mb250YXdlc29tZS1pY29ucyc7XHJcbmltcG9ydCB7IFJlY2VudFNlYXJjaFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtL3JlY2VudFNlYXJjaFR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdHlsZSwgYW5pbWF0ZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2VcIjtcclxuXHJcbi8qKiBAZHluYW1pYyAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1lbnVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21lbnUuY29tcG9uZW50Lmh0bWxcIlxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgZXh0ZW5kcyBDdXN0b21BcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBbeDogc3RyaW5nXTogYW55O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFwib3Blbk1lbnVQb3BVcFwiKSBvcGVuTWVudVBvcE92ZXI7XHJcbiAgQFZpZXdDaGlsZChcIm1lbnVUcmlnZ2VyXCIpIG1lbnVUcmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcclxuICBAVmlld0NoaWxkKFwiZWxlbWVudFwiKSBlbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJ3b3Jrc3BhY2VFbGVtZW50XCIpIHdvcmtzcGFjZUVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcIm1lbnVFbGVtZW50XCIpIG1lbnVFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJhZGRXb3Jrc3BhY2VcIikgYWRkV29ya1NwYWNlUG9wT3ZlcjogU2F0UG9wb3ZlcjtcclxuICBAVmlld0NoaWxkKFwiYWxsU2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxTZWxlY3RlZDogTWF0T3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoXCJhbGxFZGl0U2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxFZGl0U2VsZWN0ZWQ6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKFwiYWxsRGVsZXRlU2VsZWN0ZWRcIikgcHJpdmF0ZSBhbGxEZWxldGVTZWxlY3RlZDogTWF0T3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoJ2luZm9Qb3BPdmVyJykgaW5mb1BvcE92ZXI6IFRlbXBsYXRlUmVmPGFueT5cclxuICBAT3V0cHV0KCkgaXNPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgb3Blbk5ld0Rhc2hib2FyZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGU6IEVsZW1lbnQ7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xyXG4gIGZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc29mdExhYmVsczogU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsW107XHJcbiAgcHVibGljIG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8SU1lbnVJdGVtW10+O1xyXG4gIHVzZXJTdG9yaWVzTGlzdCQ6IE9ic2VydmFibGU8VXNlclN0b3J5W10+O1xyXG4gIG1lbnVJdGVtOiBJTWVudUl0ZW1bXTtcclxuICBpdGVtcyA9IFtdO1xyXG4gIG1lbnVJdGVtTmFtZTogc3RyaW5nID0gXCJcIjtcclxuICB3aWRnZXRzOiBXaWRnZXRMaXN0W107XHJcbiAgb3JpZ2luYWxXaWRnZXRzOiBXaWRnZXRMaXN0W107XHJcbiAgc2VsZWN0ZWRMaXN0OiBEcmFnZWRXaWRnZXRbXTtcclxuICB3aWRnZXQ6IFdpZGdldExpc3Q7XHJcbiAgc2VsZWN0ZWRBcHBzOiBhbnk7XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWREYXNoYm9hcmQ6IGFueTtcclxuICBkZWZhdWx0RGFzaGJvYXJkOiBhbnk7XHJcbiAgc3ViTGV2ZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHN0YXRlTHZsMTogc3RyaW5nO1xyXG4gIGxldmVsM0xpbmsxOiBzdHJpbmc7XHJcbiAgbGV2ZWwzTGluazI6IHN0cmluZztcclxuICBzdWJMZXZlbHNGb3JMZXZlbDI6IHN0cmluZztcclxuICBjb21wYW55TWFpbkxvZ286IHN0cmluZztcclxuICBjb21wYW55TWluaUxvZ286IHN0cmluZztcclxuICByb2xlc0Ryb3BEb3duOiBhbnlbXTtcclxuICB3b3Jrc3BhY2VzTGlzdCQ6IE9ic2VydmFibGU8V29ya3NwYWNlTGlzdFtdPjtcclxuICB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VMaXN0W107XHJcbiAgd29ya3NwYWNlc0Zvckxvb3A6IGFueTtcclxuICBkaXNwbGF5OiBib29sZWFuO1xyXG4gIGFkbWluVG9vbHM6IGFueSA9IFtdO1xyXG4gIHRvb2xzOiBhbnk7XHJcbiAgc2VsZWN0ZWRSb3dJbmRleDogYW55O1xyXG4gIGl0ZW1DbGlja2VkOiBhbnk7XHJcbiAgdDogYW55O1xyXG4gIHdkOiBhbnk7XHJcbiAgd3M6IGFueTtcclxuICByczogYW55O1xyXG4gIGFsbHNlYXJjaGVzOiBSZWNlbnRTZWFyY2hNb2RlbFtdID0gW107XHJcbiAgcmVjZW50U2VhcmNoZXM6IFJlY2VudFNlYXJjaE1vZGVsW10gPSBbXTtcclxuICBwcm9qZWN0Um9sZVRleHQ6IHN0cmluZyA9IFwiUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb25cIjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9uczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm06IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyQ6IE9ic2VydmFibGU8Qm9vbGVhbj5cclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJDogT2JzZXJ2YWJsZTxCb29sZWFuPlxyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XHJcbiAgY29tcGFueVNldHRpbmdzTU9kZWwkOiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBkaXNhYmxlV29ya3NwYWNlID0gZmFsc2U7XHJcbiAgZGlzYWJsZVdvcmtzcGFjZURlbGV0ZSA9IGZhbHNlO1xyXG4gIGRpc2FibGVXb3Jrc3BhY2VoaWRlID0gZmFsc2U7XHJcbiAgZm9ybXM6IGFueTtcclxuICBjdXN0YXBwOiBhbnk7XHJcbiAgcHJvamVjdFJvbGVDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgcm9sZUNvbmZpZ3VyYXRpb246IGFueTtcclxuICB0aGVtZU1vZGVsOiBUaGVtZU1vZGVsO1xyXG4gIGVtcGxveWVlTGlzdDogYW55W10gPSBbXTtcclxuICB0aGVtZU1vZGVsJDogT2JzZXJ2YWJsZTxUaGVtZU1vZGVsPjtcclxuICB0aGVtZUJhc2VDb2xvcjogc3RyaW5nO1xyXG4gIHNlbGVjdGVkRW1wbG95ZWU6IHN0cmluZztcclxuICBsb2FkZWRFbXBsb3llZUxpc3Q6IEVtcGxveWVlTGlzdE1vZGVsW10gPSBbXTtcclxuICBzZWxlY3RlZEVtcGxveWVlSW5kZXg6IG51bWJlciA9IG51bGw7XHJcbiAgdmlld0VtcGxveWVlUGVybWlzc2lvbjogYm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHM6IEJvb2xlYW47XHJcbiAgcHJvamVjdExpc3Q6IGFueSA9IFtdO1xyXG4gIHByb2plY3RJbmRleDogYW55O1xyXG4gIHNlYXJjaEJ5VGV4dExvYWRpbmc6IGJvb2xlYW47XHJcbiAgQElucHV0KFwicmVsb2FkXCIpXHJcbiAgc2V0IHJlbG9hZEFsbChkYXRhOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLmFkbWluVG9vbHMgPSBbXTtcclxuICAgICAgdGhpcy50b29scyA9IFtdO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBuZ0Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIHVzZXJTdG9yeUxpc3Q6IGFueSA9IFtdO1xyXG4gIHVzZXJTdG9yeVNlYXJjaExpc3Q6IGFueSA9IFtdO1xyXG4gIGdvYWxTZWFyY2hMaXN0OiBhbnkgPSBbXTtcclxuICBpc0VuYWJsZUJ1Z0JvYXJkOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkUm9sZUlkczogc3RyaW5nW10gPSBbXTtcclxuICBkYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHVzZXJzOiBhbnk7XHJcbiAgZ29hbEluZGV4OiBhbnk7XHJcbiAgd29ya3NwYWNlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHByb2plY3RTZWFyY2hSZXN1bHRzOiBhbnk7XHJcbiAgZGVsYXlUaW1lSW5wdXQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgbWVudXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgd29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICB3aWRnZXRzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHNlYXJjaFRhc2tzOiBTZWFyY2hUYXNrVHlwZU1vZGVsO1xyXG4gIGxvYWRpbmdTZWFyY2hNZW51RGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlZmF1bHREYXNoYm9hcmRJZDogc3RyaW5nO1xyXG4gIHNlYXJjaEJ5SWQ6IGJvb2xlYW47XHJcbiAgc2VhcmNoQnlUZXh0OiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8U3RhdGU+LFxyXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlczogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcnNzOiBSZWNlbnRTZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25VcGRhdGVzJDogQWN0aW9ucyxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChXSU5ET1cpIHByaXZhdGUgd2luZG93OiBXaW5kb3csXHJcbiAgICBwcml2YXRlIGdvb2dsZUFuYWx5dGljc1NlcnZpY2U6IEdvb2dsZUFuYWx5dGljc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICAvL3RoaXMub25Gb2N1cygpO1xyXG5cclxuICAgIC8vIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgLy8gdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplV29ya3NwYWNlRm9ybSgpO1xyXG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICBpZiAodGhpcy5sb2NhdGlvbi5wYXRoKCkgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy53aWRnZXRTZXJ2aWNlLnNlbGVjdGVkV29ya3NwYWNlLnN1YnNjcmliZShpZCA9PiB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBpZDtcclxuICAgIC8vIH0pO1xyXG4gICAgLy8gdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgLy8gICAucGlwZShcclxuICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgLy8gICAgIG9mVHlwZShBdXRoZW50aWNhdGlvbkFjdGlvblR5cGVzLkdldENvbXBhbnlUaGVtZUNvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKCgpID0+IHtcclxuICAgIC8vdGhpcy50aGVtZU1vZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0VGhlbWVNb2RlbCkpO1xyXG4gICAgLy90aGlzLnRoZW1lTW9kZWwkLnN1YnNjcmliZSh4ID0+IHRoaXMudGhlbWVNb2RlbCA9IHgpO1xyXG4gICAgLy8gdGhpcy5nZXRUaGVtZSgpO1xyXG4gICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcbiAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcblxyXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XHJcblxyXG4gICAgY29uc3QgZmF2aWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hvcnRjdXQtZmF2LWljb25cIik7XHJcbiAgICBpZiAoZmF2aWNvbikge1xyXG4gICAgICBmYXZpY29uLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgIC8vIC8vIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgIC8vIC8vIGlmICh0aGlzLnRoZW1lTW9kZWwgJiYgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlUaGVtZUlkICE9PSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiKSB7XHJcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsKTtcclxuICAgIC8vIC8vIH1cclxuICAgIC8vIC8vIGVsc2Uge1xyXG4gICAgLy8gLy8gICB2YXIgdGhlbWVNb2RlbCA9IG5ldyBUaGVtZU1vZGVsKClcclxuICAgIC8vIC8vICAgdGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCA9IFwiMDkyOUQzNUEtMzU3My00QjA2LTkzRkItQzdENDZBQUZBOTE4XCI7XHJcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvID0gXCJhc3NldHMvaW1hZ2VzL0xvZ28tZmF2aWNvbi5wbmdcIjtcclxuICAgIC8vIC8vICAgLy8gdGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28gPSBcImFzc2V0cy9pbWFnZXMvTWFpbi1Mb2dvLnBuZ1wiO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lTW9kZWwgPSB0aGVtZU1vZGVsO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZU1vZGVsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAvLyAvLyAvL3RoaXMuY2hhbmdlRmF2SWNvbigpO1xyXG4gICAgLy8gLy8gdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAvL3RoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gLnN1YnNjcmliZSgpO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKFdvcmtzcGFjZXNBY3Rpb25UeXBlcy5Mb2FkV29ya3NwYWNlQnlJZENvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgIHZhciB3b3Jrc3BhY2VzTGlzdCA9IGRhdGEuc2VhcmNoV29ya3NwYWNlc1N1Y2Nlc3M7XHJcbiAgICAvLyAgICAgICB0aGlzLmRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vICAgICAgIC8vIHRoaXMuY2xvc2VBZGRXb3Jrc3BhY2VEaWFsb2coKTtcclxuICAgIC8vICAgICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgaWYgKHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy53b3Jrc3BhY2VzLnB1c2god29ya3NwYWNlc0xpc3RbMF0pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAvLyAgICAgICAgIHRoaXMub3Blbk5ld0Rhc2hib2FyZC5lbWl0KHdvcmtzcGFjZXNMaXN0WzBdLndvcmtzcGFjZUlkKVxyXG4gICAgLy8gICAgICAgfVxyXG5cclxuICAgIC8vICAgICB9KVxyXG4gICAgLy8gICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIC8vdGhpcy5nZXRBbGxQcm9qZWN0cygpO1xyXG5cclxuICAgIHRoaXMuZGVsYXlUaW1lSW5wdXQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDIwMDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLlNlYXJjaEl0ZW0odmFsdWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZSgpIHtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFRoZW1lcygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlUaGVtZScsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICB0aGlzLnNpdGVVcmwgPSByZXNwb25zZS5kYXRhLnJlZ2lzdHJlclNpdGVBZGRyZXNzO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWFpbkxvZ287XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHJlc3BvbnNlLmRhdGEuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAgICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnEnLCBbXSlcclxuICBrZXlPcGVuRXZlbnQoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5vbkZvY3VzKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5tJywgW10pXHJcbiAga2V5Q2xvc2VFdmVudCgpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5iJywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IHRydWVcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC55JywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlJZCgpIHtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2VcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IHRydWU7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Mb2NhbFRpbWUodGltZSkge1xyXG4gICAgdmFyIHV0Y0RhdGUgPSBtb21lbnQudXRjKHRpbWUpLmZvcm1hdCgpO1xyXG4gICAgdmFyIGxvY2FsRGF0ZSA9IG1vbWVudC51dGModXRjRGF0ZSkubG9jYWwoKS5mb3JtYXQoKTtcclxuICAgIHJldHVybiBsb2NhbERhdGU7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV29ya3NwYWNlRm9ybSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSWRzID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgIHdvcmtzcGFjZU5hbWU6IG5ldyBGb3JtQ29udHJvbChudWxsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgc2VsZWN0ZWRSb2xlczogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICBdKVxyXG4gICAgICApLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgZWRpdFJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSksXHJcbiAgICAgIGRlbGV0ZVJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcclxuXHJcbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCgpKTtcclxuICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xyXG4gICAgLy8gdmFyIGRhc2hib2FyZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcykpO1xyXG4gICAgLy8gaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gZGFzaGJvYXJkcztcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcclxuICAgIC8vIGlmIChtZW51SXRlbXMgJiYgbWVudUl0ZW1zICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbXM7XHJcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcclxuICAgIC8vIGlmICh3aWRnZXRzICYmIHdpZGdldHMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMgPSB3aWRnZXRzO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdmFyIHJlY2VudFNlYXJjaGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzKSk7XHJcbiAgICAvLyBpZiAocmVjZW50U2VhcmNoZXMgJiYgcmVjZW50U2VhcmNoZXMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KCk7XHJcbiAgICAvLyAgdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIHRoaXMuZ2V0Q29tcGFueVNldHRpbmdzKCk7XHJcbiAgICB0aGlzLm1lbnVJdGVtcyQgPSB0aGlzLnN0b3JlLnBpcGUoXHJcbiAgICAgIHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDdXJyZW50QWN0aXZlTWVudUNhdGVnb3J5TWVudUl0ZW1zKSxcclxuICAgICAgdGFwKG1lbnVMaXN0ID0+IGNvbnNvbGUubG9nKG1lbnVMaXN0KSlcclxuICAgICk7XHJcbiAgICAvLyB0aGlzLm1lbnVJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgLy8gICB2YXIgYSA9IHg7XHJcbiAgICAvLyAgIHZhciBiID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuXHJcbiAgICAvLyAgIC8vdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyAgIC8vdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgLy8gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XHJcblxyXG4gICAgLy8gdGhpcy5jdXN0YXBwID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIkN1c3RvbSBhcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL2N1c3RvbS1hcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuZm9ybXMgPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiRm9ybXNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL3ZpZXctZm9ybXNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIC8vICAgbmFtZTogXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9lbnRpdHlyb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnJvbGVDb25maWd1cmF0aW9uID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIlJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdDdXN0b20gYXBwbGljYXRpb25zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5jdXN0YXBwKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnRm9ybXMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmZvcm1zKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Rm9ybXMgfSkpOyAgICAvLyAvL3RoaXMucm91dGUudXJsLnN1YnNjcmliZSgodXJsKSA9PiB0aGlzLnVybCA9IHVybC50b1N0cmluZygpKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0Zvcm1zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5mb3Jtcyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvbicpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMucHJvamVjdFJvbGVDb25maWd1cmF0aW9uKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Um9sZXMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5yb2xlQ29uZmlndXJhdGlvbik7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgIC8vIHRoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgLy90aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgLy90aGlzLmdldEFsbEVtcGxveWVlcygpO1xyXG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XHJcbiAgICAvLyB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAvLyBpZih0aGlzLml0ZW1zLmxlbmd0aD4wKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMudG9vbHMubGVuZ3RoPjApIHtcclxuICAgIC8vICAgdGhpcy50PTA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMud29ya3NwYWNlcy5sZW5ndGg+MCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9dGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgLy8gfSAgXHJcblxyXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gXy5kZWJvdW5jZSh0aGlzLlNlYXJjaEl0ZW0sIDEwMDApO1xyXG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5JbmZvKGluZm9Qb3BPdmVyKSB7XHJcbiAgICBpbmZvUG9wT3Zlci5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0QWxsUHJvamVjdHMoKSB7XHJcbiAgLy8gICBjb25zdCBwcm9qZWN0U2VhcmNoUmVzdWx0ID0gbmV3IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcclxuICAvLyAgIHByb2plY3RTZWFyY2hSZXN1bHQuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlLnNlYXJjaFByb2plY3RzKHByb2plY3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcclxuICAvLyAgICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSByZXNwb25zZS5kYXRhO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gcmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlO1xyXG4gIC8vICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSBbXTtcclxuICAvLyAgICAgICB0aGlzLnRvYXN0ci5lcnJvcih0aGlzLnZhbGlkYXRpb25NZXNzYWdlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIGdldENvbXBhbnlTZXR0aW5ncygpIHtcclxuICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XHJcbiAgICBpZiAoYnVnQm9hcmRSZXN1bHQgJiYgYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRTZWFyY2hEYXRhKCkge1xyXG4gICAgdmFyIG1lbnVJdGVtcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMpKVxyXG4gICAgaWYgKG1lbnVJdGVtcyAmJiBtZW51SXRlbXMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgdmFyIHdpZGdldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cykpO1xyXG4gICAgaWYgKHdpZGdldHMgJiYgd2lkZ2V0cyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XHJcbiAgICB9XHJcbiAgICB2YXIgcmVjZW50U2VhcmNoZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMpKTtcclxuICAgIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLmFsbHNlYXJjaGVzID0gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlY2VudFNlYXJjaGVzO1xyXG4gICAgfVxyXG4gIH1cclxuICB0cmFuc2xhdGVhcHBsaWNhdGlvbm5hbWUoaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBsb2NhbHZhcmlhYmxlID0gaXRlbS50cmltKCk7XHJcbiAgICB2YXIgbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQVBQLlwiICsgbG9jYWx2YXJpYWJsZSk7XHJcbiAgICBpZiAobmFtZS5pbmRleE9mKFwiQVBQLlwiKSAhPSAtMSkge1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoQnlJZCAmJiAhdGhpcy5zZWFyY2hCeVRleHQpIHtcclxuICAgICAgdmFyIHJldHJpZXZlRGFzaGJvYXJkczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgIHZhciBkYXNoYm9hcmRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKTtcclxuICAgICAgaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgICAgIHJldHJpZXZlRGFzaGJvYXJkcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSBKU09OLnBhcnNlKGRhc2hib2FyZHMpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AuZmlsdGVyKFxyXG4gICAgICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICAgICAgaXRlbS53b3Jrc3BhY2VOYW1lXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCEodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2spICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrKSkgPT0gdHJ1ZSkpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KHRydWUpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaE1lbnVEYXRhKHJldHJpZXZlRGFzaGJvYXJkcylcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53b3Jrc3BhY2VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSByZXMuZGF0YS53b3Jrc3BhY2VzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndvcmtzcGFjZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSB0aGlzLndvcmtzcGFjZXM7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuZGVmYXVsdERhc2hib2FyZCA9IHRoaXMud29ya3NwYWNlcy5maW5kKGkgPT4gaS5pc0RlZmF1bHQgPT0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53aWRnZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHJlcy5kYXRhLndpZGdldHMuc29ydCgoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lbnVJdGVtcykge1xyXG4gICAgICAgICAgICAgICAgLy8gdmFyIGFwcGxpY2F0aW9ucyA9IHJlcy5kYXRhLm1lbnVJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeSAmJlxyXG4gICAgICAgICAgICAgICAgLy8gICAgIE1lbnVDYXRlZ29yaWVzLk1haW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeS50b0xvd2VyQ2FzZSgpID09PSBNZW51Q2F0ZWdvcmllcy5NYWluLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC8vICAgKTtcclxuICAgICAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0gcmVzLmRhdGEubWVudUl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMsIEpTT04uc3RyaW5naWZ5KHRoaXMubWVudUl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlcy5kYXRhLnJlY2VudFNlYXJjaDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2VhcmNoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCwgdHJ1ZSk7XHJcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMpICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAvLyAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIHJvdXRlckFjdGl2ZSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmRcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgZGFzaGJvYXJkSWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAoZGFzaGJvYXJkSWQgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndvcmtzcGFjZXMuZmluZEluZGV4KGkgPT4gaS53b3Jrc3BhY2VJZCA9PSBkYXNoYm9hcmRJZCk7XHJcbiAgICAgICAgdGhpcy53cyA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgd2lkZ2V0SWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAod2lkZ2V0SWQgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndpZGdldHMuZmluZEluZGV4KGkgPT4gaS53aWRnZXRJZCA9PSB3aWRnZXRJZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy53ZCA9IGluZGV4O1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgaW5kZXhScyA9IHRoaXMucmVjZW50U2VhcmNoZXMuZmluZEluZGV4KGkgPT4gaS5pdGVtSWQgPT0gd2lkZ2V0SWQpXHJcbiAgICAgICAgICB0aGlzLnJzID0gaW5kZXhScztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaSA9PiB0aGlzLnJvdXRlcy51cmwgPT0gXCIvXCIgKyBpLnN0YXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFdvcmtzcGFjZXNMaXN0KCkge1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHZhciB3b3Jrc3BhY2VsaXN0ID0gbmV3IFdvcmtzcGFjZUxpc3QoKTtcclxuICAgIHdvcmtzcGFjZWxpc3Qud29ya3NwYWNlSWQgPSBcIm51bGxcIjtcclxuICAgIHdvcmtzcGFjZWxpc3QuaXNIaWRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXb3Jrc3BhY2VMaXN0KHdvcmtzcGFjZWxpc3QpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IHRoaXMud29ya3NwYWNlcztcclxuICAgICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRXb3Jrc3BhY2VzTGlzdFRyaWdnZXJlZCh0aGlzLndvcmtzcGFjZWxpc3QpKTtcclxuICB9O1xyXG5cclxuICBvcGVuQXBwcygpIHtcclxuICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImFwcC1zdG9yZS93aWRnZXRzXCJdKTtcclxuICB9XHJcblxyXG4gIGxvYWRXaWRnZXRzTGlzdChzZWFyY2hUZXh0LCBzdG9yZSA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy53aWRnZXQgPSBuZXcgV2lkZ2V0TGlzdCgpO1xyXG4gICAgdGhpcy53aWRnZXQud2lkZ2V0SWQgPSBcIm51bGxcIjtcclxuICAgIHRoaXMud2lkZ2V0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMud2lkZ2V0LnBhZ2VOdW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQucGFnZVNpemUgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XHJcbiAgICB0aGlzLndpZGdldC5pc0Zhdm91cml0ZVdpZGdldCA9IHRydWU7XHJcbiAgICBpZiAoc2VhcmNoVGV4dClcclxuICAgICAgdGhpcy53aWRnZXQuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XHJcblxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldFdpZGdldHNCYXNlZE9uVXNlcih0aGlzLndpZGdldCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSBbXTtcclxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSByZXN1bHQuZGF0YS5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICAgICAgaWYgKHN0b3JlKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbEVtcGxveWVlcygpIHtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgICBsZXQgZW1wbG95ZWVTcGVudFRpbWUgPSBuZXcgRW1wbG95ZWVMaXN0SW5wdXQoKTtcclxuICAgIGVtcGxveWVlU3BlbnRUaW1lLnNvcnREaXJlY3Rpb25Bc2MgPSB0cnVlO1xyXG4gICAgZW1wbG95ZWVTcGVudFRpbWUuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5ockRhc2hib2FyU2VydmljZS5HZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVTcGVudFRpbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgIC8vICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSByZXN1bHQuZGF0YTtcclxuICAgIC8vICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcclxuICAgIC8vICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgLy8gICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PiAoeC51c2VySWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuXHJcbiAgICBjb25zdCBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQgPSBuZXcgRW1wbG95ZWVMaXN0TW9kZWwoKTtcclxuICAgIGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVMaXN0U2VhcmNoUmVzdWx0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XHJcbiAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT4gKHgudXNlcklkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAvLyAgIHRoaXMuZSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gIC8vICAgbGV0IG91dFNpZGVDbGljayA9ICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsKCk9PntcclxuICAvLyAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgLy8gfSk7XHJcbiAgLy8gfVxyXG5cclxuICBPcGVuTWVudUl0ZW1zKG9wZW5NZW51UG9wVXApIHtcclxuICAgIG9wZW5NZW51UG9wVXAub3BlblBvcG92ZXIoKTtcclxuICB9XHJcblxyXG4gIG9wZW5MZXZlbDJNZW51KGxpbmssIGV2ZW50KSB7XHJcbiAgICB0aGlzLnN0YXRlTHZsMSA9IGxpbms7XHJcbiAgICB0aGlzLnN1YkxldmVscyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgb3BlbkxldmVsM01lbnUobGluazEsIGxpbmsyLCBldmVudCkge1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMSA9IGxpbmsxO1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMiA9IGxpbmsyO1xyXG4gICAgdGhpcy5zdWJMZXZlbHNGb3JMZXZlbDIgPSBldmVudDtcclxuICB9XHJcblxyXG4gIGdldEFsbE1lbnVJdGVtcygpIHtcclxuICAgIHRoaXMubWVudXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImxpdmVzL3dlbGNvbWVcIik7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoTWVudUl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucnNzLmdldFNlYXJjaE1lbnVJdGVtcyh7IHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoVGV4dCwgc2VhcmNoVW5pcXVlSWQ6IG51bGwgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJzID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB1c2VycztcclxuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoKHg6IGFueSkgPT4gKHguaXRlbUlkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Qcm9qZWN0U2VsZWN0KGl0ZW0sIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNlYXJjaEl0ZW0oZXZlbnQpIHtcclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICB2YXIgZWxlbWVudCA9XHJcbiAgICAgICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpO1xyXG4gICAgZWxlbWVudCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIHZhciBlbGVtID1cclxuICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIik7XHJcbiAgICBlbGVtID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIGVtcCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpO1xyXG4gICAgZW1wID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIHdpZGdldCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpO1xyXG4gICAgd2lkZ2V0ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlYXJjaE1lbnVJdGVtcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5tZW51LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2UgJiYgaXRlbS50eXBlICE9IFwiZHJvcERvd25cIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWRtaW5Ub29scyA/IHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICAvL3RoaXMubG9hZFdpZGdldHNMaXN0KGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID8gdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyAodGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT5cclxuICAgICAgKCh4LmZ1bGxOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSlcclxuICAgICAgICB8fCAoeC5lbXBsb3llZU51bWJlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXHJcbiAgICAgICAgfHwgKHguc3VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpKVxyXG4gICAgICApKSA6IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgIC8vICAgaXRlbSA9PlxyXG4gICAgICAvLyAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgLy8gKSA6IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApIDogbnVsbDtcclxuXHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgJiYgZXZlbnQudGFyZ2V0LnZhbHVlLnNlYXJjaCgnLScpID4gMCkge1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaEdvYWxUYXNrcyhldmVudC50YXJnZXQudmFsdWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGlmICghKCh0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcykgfHwgKHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB8fCAodGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB8fCAodGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSkpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgLy8gICBjb25zdCB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAgPSBuZXcgVXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XHJcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnBhZ2VTaXplID0gMTAwMDtcclxuICAgICAgLy8gICB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAuc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcblxyXG4gICAgICAvLyAgLy8gaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoVXNlclN0b3JpZXModXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIC8vICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAvLyAgICAgICBsZXQgY29tcGFueVNldHRpbmdzTW9kZWwgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gICAgICAgICB2YXIgdXNlclN0b3JpZXNMaXN0ID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q29tcGFueVNldHRpbmdzKSk7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgICAvLyAgICAgICAgIGxldCBidWdCb2FyZFJlc3VsdCA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5LnRyaW0oKSA9PSBcIkVuYWJsZUJ1Z0JvYXJkXCIpO1xyXG4gICAgICAvLyAgICAgICAgIGlmIChidWdCb2FyZFJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlQnVnQm9hcmQpIHtcclxuICAgICAgLy8gICAgICAgICAgIHVzZXJTdG9yaWVzTGlzdCA9IHVzZXJTdG9yaWVzTGlzdC5tYXAoKHgpID0+IHguaXNCdWcgPT0gZmFsc2UpO1xyXG4gICAgICAvLyAgICAgICAgIH1cclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gdXNlclN0b3JpZXNMaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxTaG9ydE5hbWU6IGl0ZW0uZ29hbFNob3J0TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnByb2plY3ROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnRJZDogaXRlbS5zcHJpbnRJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgc3ByaW50TmFtZTogaXRlbS5zcHJpbnROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlJZDogaXRlbS51c2VyU3RvcnlJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5TmFtZTogaXRlbS51c2VyU3RvcnlOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlTdGF0dXNOYW1lOiBpdGVtLnVzZXJTdG9yeVN0YXR1c05hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVR5cGVOYW1lOiBpdGVtLnVzZXJTdG9yeVR5cGVOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlVbmlxdWVOYW1lOiBpdGVtLnVzZXJTdG9yeVVuaXF1ZU5hbWVcclxuICAgICAgLy8gICAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgLy8gfVxyXG5cclxuICAgICAgLy8gICBsZXQgc2VhcmNoR29hbHMgPSBuZXcgR29hbFNlYXJjaENyaXRlcmlhQXBpSW5wdXRNb2RlbCgpO1xyXG4gICAgICAvLyAgIHNlYXJjaEdvYWxzLnNlYXJjaFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIC8vICAgLy8ucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG4gICAgICAvLyAgIC8vaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICB0aGlzLnVzZXJTZXJ2aWNlLnNlYXJjaEdvYWxzKHNlYXJjaEdvYWxzKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsSWQ6IGl0ZW0uZ29hbElkLFxyXG4gICAgICAvLyAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsU2hvcnROYW1lOiBpdGVtLmdvYWxTaG9ydE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsVW5pcXVlTmFtZTogaXRlbS5nb2FsVW5pcXVlTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5wcm9qZWN0TmFtZVxyXG4gICAgICAvLyAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgfSk7XHJcblxyXG4gICAgICAvLyAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gICAgIH1cclxuXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gLy99XHJcblxyXG4gICAgICAvLyBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkgJiYgISh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApICYmICEodGhpcy53aWRnZXRzLmxlbmd0aCA+IDApICYmICEodGhpcy50b29scy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53b3Jrc3BhY2VzICYmXHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMud2lkZ2V0cyAmJlxyXG4gICAgICAgIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJlxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJlxyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubWVudUl0ZW0pIHtcclxuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbVxyXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xyXG4gICAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgICAgLy90aGlzLmVtcGxveWVlTGlzdCA9ICh0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCAmJiB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gW107XHJcbiAgICAgIC8vIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIC8vIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zWzBdIDogbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID09IFwiXCIgPyAodGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkKSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlU2VhcmNoKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXHJcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gKGEubWVudS50b0xvd2VyQ2FzZSgpID4gYi5tZW51LnRvTG93ZXJDYXNlKCkgPyAxIDogLTEpKTtcclxuICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XHJcbiAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA6IFtdO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZShldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiBudWxsLCBzZWFyY2hVbmlxdWVJZDogdGhpcy5zZWFyY2hUZXh0IH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1JvdXRlKHJlcy5kYXRhWzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdHaXZlbiBJZCBpcyBub3QgdmFsaWQsIHBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaWQgdG8gbmF2aWdhdGUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICghcmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGl0ZW0pIHtcclxuICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvUm91dGUoaXRlbSkge1xyXG4gICAgdmFyIG5hbWU7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgfHwgdGhpcy5zZWFyY2hCeUlkKSB7XHJcbiAgICAgIGlmIChpdGVtLml0ZW1UeXBlICYmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8IChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAvL3RoaXMuSW5zZXJ0U2VhcmNoKGl0ZW0udW5pcXVlbk5hbWUpO1xyXG4gICAgICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9qZWN0SWQgPT0gaXRlbS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgaXRlbS5pdGVtSWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCBpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChpdGVtLm1lbnUpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ubWVudTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0uc3RhdGVdKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtLmlkKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2UgaWYgKGl0ZW0ucGVybWlzc2lvbikge1xyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIC8vICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgLy8gICBuYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgLy8gICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlKTtcclxuICAgIC8vICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0ubGlua10pO1xyXG4gICAgLy8gfSBcclxuICAgIGVsc2UgaWYgKGl0ZW0ud29ya3NwYWNlSWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ud29ya3NwYWNlTmFtZTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW0ud29ya3NwYWNlSWQpO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaXRlbS53aWRnZXRJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICBuYW1lID0gaXRlbS53aWRnZXROYW1lO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbS53aWRnZXRJZCk7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcChpdGVtKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNlYXJjaFJlY2VudEl0ZW0oaXRlbSwgZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEluc2VydFNlYXJjaChuYW1lLCByZWNlbnRTZWFyY2hUeXBlLCBpZCkge1xyXG4gICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogbmFtZSwgcmVjZW50U2VhcmNoVHlwZTogcmVjZW50U2VhcmNoVHlwZSwgaXRlbUlkOiBpZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKG5hbWUpXHJcbiAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCBuYW1lKSlcclxuICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KG5hbWUpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBTZWFyY2hSZWNlbnRJdGVtKHNlYXJjaCwgZXZlbnQpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLm1lbnUpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLm1lbnUudG9Mb3dlckNhc2UoKSA9PSBzZWFyY2gucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgICAgaXRlbS5sZW5ndGggPiAwID8gdGhpcy5uYXZpZ2F0ZShldmVudCwgaXRlbVswXSkgOiBudWxsXHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoXHJcbiAgICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCBzZWFyY2guaXRlbUlkXVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1JZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICBcIi9kYXNoYm9hcmQvcHJvZmlsZS9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNZW51KGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEgJiYgZXZlbnQud29ya3NwYWNlSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGV2ZW50LndvcmtzcGFjZUlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gZXZlbnQud29ya3NwYWNlSWQ7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC53b3Jrc3BhY2VOYW1lO1xyXG4gICAgICB0aGlzLnJzc1xyXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBldmVudC53b3Jrc3BhY2VOYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCwgaXRlbUlkOiBldmVudC53b3Jrc3BhY2VJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMoZXZlbnQud29ya3NwYWNlTmFtZSlcclxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcclxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKGV2ZW50LndvcmtzcGFjZU5hbWUpLFxyXG4gICAgICAgICAgICAvLyAgICAgICAxXHJcbiAgICAgICAgICAgIC8vICAgICApLFxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgZXZlbnQud29ya3NwYWNlTmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQoZXZlbnQud29ya3NwYWNlTmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEVtcGxveWVlKGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBldmVudC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBldmVudC53b3Jrc3BhY2VJZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlID0gZXZlbnQuaXRlbUlkO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1OYW1lID0gZXZlbnQuaXRlbU5hbWU7XHJcbiAgICAgIHRoaXMucnNzXHJcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGV2ZW50Lml0ZW1OYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtSWQ6IGV2ZW50Lml0ZW1JZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFkaW1uVG9vbChsaW5rLCBldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtsaW5rXSk7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogaXRlbS5tZW51LCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLm1lbnUsIGl0ZW1JZDogaXRlbS5pZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhuYW1lKVxyXG4gICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxyXG4gICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChuYW1lKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIE9uU2VsZWN0KHdpZGdldCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9BcHAod2lkZ2V0KTtcclxuICAgICAgdGhpcy5yc3NcclxuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogd2lkZ2V0LndpZGdldE5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtSWQ6IHdpZGdldC53aWRnZXRJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMod2lkZ2V0LndpZGdldE5hbWUpXHJcbiAgICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoXHJcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZih3aWRnZXQud2lkZ2V0TmFtZSksXHJcbiAgICAgICAgICAgIC8vICAgICAgIDFcclxuICAgICAgICAgICAgLy8gICAgICksXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCB3aWRnZXQud2lkZ2V0TmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQod2lkZ2V0LndpZGdldE5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0UmVjZW50U2VhcmNoZXMoKSB7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFJlZGlyZWN0VG9BcHAod2lkZ2V0KSB7XHJcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcclxuICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCB3aWRnZXQud2lkZ2V0SWRdXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBPbkdvYWxTZWxlY3QoZ29hbCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9Hb2FsKGdvYWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3RUb0dvYWwoZ29hbCkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSBnb2FsLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKGdvYWwuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGdvYWwuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgZ29hbC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgZ29hbC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuICAvLyAgfVxyXG5cclxuICBPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSB1c2VyU3RvcnkucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAodXNlclN0b3J5Lml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2godXNlclN0b3J5Lml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIHVzZXJTdG9yeS5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHVzZXJTdG9yeS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgdXNlclN0b3J5Lml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbUlkXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcbiAgLy8gfVxyXG5cclxuICBTZXQoKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA8IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA8IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMudXNlcnMrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPCB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd0Rvd25FdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcclxuICAgICkge1xyXG4gICAgICAvL3RoaXMubWVudUVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxCeSgwLCAxMDApO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMud3MgPCB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MrKztcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCArPSA0MTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA8IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgKz0gNDg7XHJcbiAgICAgIHRoaXMud2QrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA8IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzIDwgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy51c2VycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA8IDgpIHtcclxuICAgICAgdGhpcy5ycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud2QgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMFxyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gOCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiA4ICYmIHRoaXMucnMgPCA4KSB7XHJcbiAgICAvLyAgICAgdGhpcy5ycysrO1xyXG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgLy8gICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGVsc2UgaWYgKHRoaXMucnMgIT09IG51bGwgJiYgdGhpcy5ycyAhPT0gdW5kZWZpbmVkICYmICh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCkgLSAxID4gdGhpcy5ycyAmJiB0aGlzLnJzIDwgOCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMrKztcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgfVxyXG4gIGFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dVcEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dVcEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgPT0gdGhpcy53b3Jrc3BhY2VzWzBdLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJlxyXG4gICAgICB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgLT0gNDE7XHJcbiAgICAgIHRoaXMud3MtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3aWRnZXRzICAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wIC09IDQ4O1xyXG4gICAgICB0aGlzLndkLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCA9PSB0aGlzLndpZGdldHNbMF0ud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcclxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlcyAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcclxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gV0kvQnVnICAgICAgICAgTkVFRCBUTyBETyBcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLnVzZXJzID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLnVzZXJzLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSBnb2FsL3NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBldHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPiAwKSB7XHJcbiAgICAgIHRoaXMucnMtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndkID0gODtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnBlcm1pc3Npb24gJiYgdGhpcy50ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJzID4gMCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMtLTtcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dMZWZ0RXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd29ya3NwYWNlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vZnJvbSB3aWRnZXRzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIGVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93UmlnaHRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dSaWdodEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dSaWdodEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd2lkZ2V0c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBHb2FsL1NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKVxyXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbldvcmtzcGFjZUZvcm0oKSB7XHJcbiAgICB0aGlzLmFkZFdvcmtTcGFjZVBvcE92ZXIub3BlbigpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5nZXRBbGxSb2xlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUm9sZXMoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0YWxsUm9sZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93biA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICB0aGlzLnJvbGVzRHJvcERvd24uZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcC5yb2xlSWQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBwLnJvbGVJZCA9IGlkO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIGNvbXBhcmVFZGl0U2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XHJcbiAgY29tcGFyZURlbGV0ZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIHVwc2VydFdvcmtzcGFjZSgpIHsgfVxyXG4gIHRvZ2dsZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICB0b2dnbGVFZGl0QWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxyXG4gIHRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICBjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpIHsgfVxyXG59XHJcbiIsIjwhLS0gTW9iaWxlIG1lbnUgYnV0dG9uIC0tPlxyXG48YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cInZpc2libGVzXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51c1wiIGZ4SGlkZS5ndC14cyBmeFNob3c+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwibmV3TWVudVwiPm1lbnU8L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjwhLS0gTW9iaWxlIGxvZ28gKG9wdGlvbmFsLCBrZXB0IGNvbW1lbnRlZCBvdXQpIC0tPlxyXG5cclxuPCEtLSBNZW51IGRyb3Bkb3duIC0tPlxyXG48bWF0LW1lbnUgI21lbnVzPVwibWF0TWVudVwiIHlQb3NpdGlvbj1cImJlbG93XCIgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICBzdHlsZT1cImhlaWdodDphdXRvXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PSAnbGluaycgfHwgaXRlbS50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIiAoY2xpY2spPVwic2VsZWN0TWVudShpdGVtLCRldmVudClcIlxyXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPlxyXG4gICAgICAgIHt7IGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuPCEtLSDinIUgSG9tZSBJY29uIC0tPlxyXG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0Ojg4JVwiIGNsYXNzPVwiaG9tZS1pY29uIG1hdC1pY29uLWJ1dHRvblwiPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ0hPTUUnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgW3JvdXRlckxpbmtdPVwiJy9kYXNoYm9hcmQtbWFuYWdlbWVudCdcIiBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgY3Vyc29yLXBvaW50ZXIgdGhlbWUtbmF2YmFyLWljb24tY29sb3JcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDo0MHB4OyBoZWlnaHQ6NDBweDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7XCI+XHJcbiAgICA8bWF0LWljb24gc3R5bGU9XCJcclxuICAgICAgZm9udC1zaXplOjI4cHg7IFxyXG4gICAgICBsaW5lLWhlaWdodDoxO1xyXG4gICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZywjNWRlMGU2LCMwMDRhYWQpO1xyXG4gICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O1xyXG4gICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcclxuICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7XHJcbiAgICAgIHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgaG9tZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48IS0tIEFwcCBzdG9yZSBpY29uIC0tPlxyXG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OjkwJVwiIGNsYXNzPVwic3RvcmUtaWNvbSBtYXQtaWNvbi1idXR0b25cIiAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0RyYWdBcHBzXCJcclxuICBbbmdDbGFzc109XCJ0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoJy9hcHAtc3RvcmUvd2lkZ2V0cycpID8gJ2ljb25fYWN0aXZlX2NsYXNzJyA6ICcnXCI+XHJcblxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAoY2xpY2spPVwib3BlbkFwcHMoKVwiIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiXHJcbiAgICBzdHlsZT1cIndpZHRoOjQwcHg7IGhlaWdodDo0MHB4OyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjtcIj5cclxuXHJcbiAgICA8bWF0LWljb24gc3R5bGU9XCJcclxuICAgICAgZm9udC1zaXplOjI4cHg7IFxyXG4gICAgICBsaW5lLWhlaWdodDoxO1xyXG4gICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZywjNWRlMGU2LCMwMDRhYWQpO1xyXG4gICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDp0ZXh0O1xyXG4gICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcclxuICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQ7XHJcbiAgICAgIHRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDtcIj5cclxuICAgICAgc3RvcmVcclxuICAgIDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PiJdfQ==
|