@c8y/ngx-components 1020.33.1 → 1020.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth-configuration/sso-configuration/sso-configuration.model.d.ts +2 -0
- package/auth-configuration/sso-configuration/sso-configuration.model.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/sso-configuration.service.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts +5 -0
- package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts +7 -0
- package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/aad-configuration-mapper.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/aad.model.d.ts +1 -0
- package/auth-configuration/sso-configuration/templates/aad.model.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/custom-configuration-mapper.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/custom.model.d.ts +1 -0
- package/auth-configuration/sso-configuration/templates/custom.model.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/templates/key-cloak.model.d.ts +1 -0
- package/auth-configuration/sso-configuration/templates/key-cloak.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.component.d.ts +4 -0
- package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +2 -32
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts +2 -0
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/core/dynamic-component/dynamic-component.model.d.ts +135 -1
- package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
- package/core/dynamic-forms/typeahead/typeahead.type.component.d.ts.map +1 -1
- package/core/product-experience/gainsight.service.d.ts +1 -0
- package/core/product-experience/gainsight.service.d.ts.map +1 -1
- package/core/select/typeahead.component.d.ts.map +1 -1
- package/esm2022/auth-configuration/sso-configuration/sso-configuration.model.mjs +1 -1
- package/esm2022/auth-configuration/sso-configuration/sso-configuration.service.mjs +5 -3
- package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +25 -11
- package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +18 -8
- package/esm2022/auth-configuration/sso-configuration/templates/aad-configuration-mapper.mjs +5 -3
- package/esm2022/auth-configuration/sso-configuration/templates/aad-template.component.mjs +3 -3
- package/esm2022/auth-configuration/sso-configuration/templates/aad.model.mjs +1 -1
- package/esm2022/auth-configuration/sso-configuration/templates/custom-configuration-mapper.mjs +5 -3
- package/esm2022/auth-configuration/sso-configuration/templates/custom-template.component.mjs +3 -3
- package/esm2022/auth-configuration/sso-configuration/templates/custom.model.mjs +1 -1
- package/esm2022/auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.mjs +5 -3
- package/esm2022/auth-configuration/sso-configuration/templates/key-cloak-template.component.mjs +3 -3
- package/esm2022/auth-configuration/sso-configuration/templates/key-cloak.model.mjs +1 -1
- package/esm2022/context-dashboard/context-dashboard.component.mjs +85 -23
- package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +42 -11
- package/esm2022/core/dynamic-component/dynamic-component.model.mjs +28 -1
- package/esm2022/core/dynamic-forms/typeahead/typeahead.type.component.mjs +2 -3
- package/esm2022/core/product-experience/gainsight.service.mjs +15 -1
- package/esm2022/core/select/typeahead.component.mjs +9 -4
- package/esm2022/repository/firmware/list/add-firmware-patch-modal.component.mjs +3 -3
- package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +2 -2
- package/esm2022/widgets/cockpit/index.mjs +1 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +3 -3
- package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +3 -3
- package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +3 -3
- package/esm2022/widgets/definitions/applications/index.mjs +3 -3
- package/esm2022/widgets/definitions/cockpit-legacy-welcome/index.mjs +3 -3
- package/esm2022/widgets/definitions/cockpit-welcome/index.mjs +3 -3
- package/esm2022/widgets/definitions/device-control-message/index.mjs +3 -3
- package/esm2022/widgets/definitions/device-management-welcome/index.mjs +1 -1
- package/esm2022/widgets/definitions/help-and-service/index.mjs +3 -3
- package/esm2022/widgets/definitions/image/index.mjs +3 -3
- package/esm2022/widgets/definitions/info-gauge/index.mjs +3 -3
- package/esm2022/widgets/definitions/kpi/index.mjs +3 -3
- package/esm2022/widgets/definitions/map/index.mjs +3 -3
- package/esm2022/widgets/definitions/markdown/index.mjs +3 -3
- package/esm2022/widgets/definitions/three-d-rotation/index.mjs +3 -3
- package/esm2022/widgets/device-management/index.mjs +1 -1
- package/esm2022/widgets/widgets.module.mjs +3 -3
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +118 -86
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +123 -31
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -2
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +49 -4
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +46 -12
- package/locales/en.po +7 -7
- package/locales/es.po +40 -12
- package/locales/fr.po +40 -12
- package/locales/ja_JP.po +43 -12
- package/locales/locales.pot +35 -14
- package/locales/nl.po +40 -12
- package/locales/pl.po +40 -12
- package/locales/pt_BR.po +40 -12
- package/package.json +1 -1
- package/widgets/cockpit/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/applications/index.d.ts.map +1 -1
- package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
- package/widgets/definitions/device-management-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
- package/widgets/definitions/image/index.d.ts.map +1 -1
- package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/kpi/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/definitions/markdown/index.d.ts.map +1 -1
- package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
- package/widgets/device-management/index.d.ts.map +1 -1
- package/widgets/widgets.module.d.ts +2 -2
- package/widgets/widgets.module.d.ts.map +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
1
2
|
import { Component, HostBinding, HostListener, Inject, Input, Renderer2, ViewChild } from '@angular/core';
|
|
2
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
-
import { ActionBarService, AlertService, DashboardChildChange, GainsightService, gettext, ModalService, Status, WidgetsDashboardComponent } from '@c8y/ngx-components';
|
|
4
|
+
import { ActionBarService, AlertService, DashboardChildChange, GainsightService, gettext, memoize, ModalService, Status, WidgetsDashboardComponent } from '@c8y/ngx-components';
|
|
4
5
|
import { TranslateService } from '@ngx-translate/core';
|
|
5
6
|
import { cloneDeep, every, findIndex, kebabCase, keyBy, omit, some } from 'lodash-es';
|
|
6
7
|
import { BsModalService } from 'ngx-bootstrap/modal';
|
|
@@ -219,14 +220,7 @@ export class ContextDashboardComponent {
|
|
|
219
220
|
const route = this.route.parent.snapshot.url.map(segment => segment.path).join('/');
|
|
220
221
|
this.router.navigateByUrl(route);
|
|
221
222
|
}
|
|
222
|
-
this.
|
|
223
|
-
component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DELETE_DASHBOARD,
|
|
224
|
-
action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,
|
|
225
|
-
name: this.dashboard.name,
|
|
226
|
-
id: this.mo.id,
|
|
227
|
-
dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
|
|
228
|
-
context: this.contextDashboardService.getContextForGS(this.context)
|
|
229
|
-
});
|
|
223
|
+
await this.onDeleteGSEvent();
|
|
230
224
|
}
|
|
231
225
|
get isDeviceTypeDashboard() {
|
|
232
226
|
return !!this.dashboard?.deviceType;
|
|
@@ -413,18 +407,7 @@ export class ContextDashboardComponent {
|
|
|
413
407
|
this.dashboardDetails.show(false);
|
|
414
408
|
}
|
|
415
409
|
else {
|
|
416
|
-
this.
|
|
417
|
-
? PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS
|
|
418
|
-
: PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
|
|
419
|
-
component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_VIEW,
|
|
420
|
-
action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.LOAD,
|
|
421
|
-
name: this.dashboard.name,
|
|
422
|
-
id: this.mo.id,
|
|
423
|
-
dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
|
|
424
|
-
context: this.isReport
|
|
425
|
-
? PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
|
|
426
|
-
: this.contextDashboardService.getContextForGS(this.context)
|
|
427
|
-
});
|
|
410
|
+
await this.onLoadGSEvent();
|
|
428
411
|
}
|
|
429
412
|
}
|
|
430
413
|
async dashboardPreview(layoutChanges) {
|
|
@@ -585,9 +568,88 @@ export class ContextDashboardComponent {
|
|
|
585
568
|
}
|
|
586
569
|
return historyDescription;
|
|
587
570
|
}
|
|
571
|
+
async onDeleteGSEvent() {
|
|
572
|
+
const parentName = await this.convertStringToHash(this.context?.name);
|
|
573
|
+
const dashboardName = await this.convertStringToHash(this.dashboard?.name);
|
|
574
|
+
this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
|
|
575
|
+
component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DELETE_DASHBOARD,
|
|
576
|
+
action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.DELETE,
|
|
577
|
+
name: dashboardName,
|
|
578
|
+
id: this.mo.id,
|
|
579
|
+
nameId: `${dashboardName}_${this.mo.id}`,
|
|
580
|
+
parentAssetId: this.context?.id ? this.context.id : 'noContext',
|
|
581
|
+
parentAssetName: this.context?.id ? parentName : 'noContext',
|
|
582
|
+
parentAssetType: this.context?.id ? this.context.type : 'noContext',
|
|
583
|
+
parentAssetNameId: this.context?.id ? `${parentName}_${this.context.id}` : 'noContext',
|
|
584
|
+
parentAssetNameDashboardName: this.context?.id
|
|
585
|
+
? `${parentName}_${dashboardName}`
|
|
586
|
+
: 'noContext',
|
|
587
|
+
parentAssetIdDashboardId: this.context?.id ? `${this.context.id}_${this.mo.id}` : 'noContext',
|
|
588
|
+
parentAssetNameDashboardId: this.context?.id ? `${parentName}_${this.mo.id}` : 'noContext',
|
|
589
|
+
parentAssetNameIdDashboardNameId: this.context?.id
|
|
590
|
+
? `${parentName}_${this.context.id}_${dashboardName}_${this.mo.id}`
|
|
591
|
+
: 'noContext',
|
|
592
|
+
dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
|
|
593
|
+
context: this.contextDashboardService.getContextForGS(this.context)
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
async onLoadGSEvent() {
|
|
597
|
+
const parentName = await this.convertStringToHash(this.context?.name);
|
|
598
|
+
const dashboardName = (await this.convertStringToHash(this.dashboard?.name)) ??
|
|
599
|
+
this.extractDefaultDashboardName(this.mo) ??
|
|
600
|
+
'none';
|
|
601
|
+
this.gainsightService.triggerEvent(this.isReport
|
|
602
|
+
? PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.REPORTS
|
|
603
|
+
: PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
|
|
604
|
+
component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_VIEW,
|
|
605
|
+
action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.LOAD,
|
|
606
|
+
name: dashboardName,
|
|
607
|
+
id: this.mo.id,
|
|
608
|
+
nameId: `${dashboardName}_${this.mo.id}`,
|
|
609
|
+
parentAssetId: this.context?.id ? this.context.id : 'noContext',
|
|
610
|
+
parentAssetName: this.context?.id ? parentName : 'noContext',
|
|
611
|
+
parentAssetType: this.context?.id ? this.context.type : 'noContext',
|
|
612
|
+
parentAssetNameId: this.context?.id ? `${parentName}_${this.context.id}` : 'noContext',
|
|
613
|
+
parentAssetNameDashboardName: this.context?.id
|
|
614
|
+
? `${parentName}_${dashboardName}`
|
|
615
|
+
: 'noContext',
|
|
616
|
+
parentAssetIdDashboardId: this.context?.id
|
|
617
|
+
? `${this.context.id}_${this.mo.id}`
|
|
618
|
+
: 'noContext',
|
|
619
|
+
parentAssetNameDashboardId: this.context?.id ? `${parentName}_${this.mo.id}` : 'noContext',
|
|
620
|
+
parentAssetNameIdDashboardNameId: this.context?.id
|
|
621
|
+
? `${parentName}_${this.context.id}_${dashboardName}_${this.mo.id}`
|
|
622
|
+
: 'noContext',
|
|
623
|
+
dashboardType: this.dashboard.deviceType ? this.dashboard.deviceTypeValue : null,
|
|
624
|
+
context: this.isReport
|
|
625
|
+
? PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.REPORT
|
|
626
|
+
: this.contextDashboardService.getContextForGS(this.context)
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
extractDefaultDashboardName(obj) {
|
|
630
|
+
const nameKey = Object.keys(obj).find(key => key.startsWith('c8y_Dashboard!name!'));
|
|
631
|
+
if (nameKey) {
|
|
632
|
+
return nameKey.split('!').pop();
|
|
633
|
+
}
|
|
634
|
+
return null;
|
|
635
|
+
}
|
|
636
|
+
async convertStringToHash(str) {
|
|
637
|
+
if (!str) {
|
|
638
|
+
return null;
|
|
639
|
+
}
|
|
640
|
+
return (await this.gainsightService.shouldSendPiiData())
|
|
641
|
+
? str
|
|
642
|
+
: this.gainsightService.hashGroupName(str);
|
|
643
|
+
}
|
|
588
644
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ContextDashboardService }, { token: i3.AlertService }, { token: i0.Renderer2 }, { token: CONTEXT_DASHBOARD_CONFIG }, { token: i4.WidgetService }, { token: i5.BsModalService }, { token: i3.GainsightService }, { token: i3.ActionBarService }, { token: i6.TranslateService }, { token: i3.ModalService }, { token: i7.DashboardEditModeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
589
645
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: { name: "name", childrenClasses: "childrenClasses", context: "context", setTitle: "setTitle", defaultWidgets: "defaultWidgets", canCopy: "canCopy", canDelete: "canDelete", isLoading: "isLoading", breadcrumbSettings: "breadcrumbSettings", showContextHelpButton: "showContextHelpButton", translateWidgetTitle: "translateWidgetTitle", hideAvailability: "hideAvailability" }, host: { listeners: { "window:beforeunload": "beforeUnloadHandler($event)" }, properties: { "class": "this.class" }, styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, viewQueries: [{ propertyName: "dashboardDetails", first: true, predicate: DashboardDetailComponent, descendants: true, static: true }, { propertyName: "widgetsDashboard", first: true, predicate: WidgetsDashboardComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title *ngIf=\"title\">\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"10000\"\n *ngIf=\"dashboard?.deviceType && dashboard.deviceTypeValue\"\n>\n <button\n class=\"btn-clean btn-link\"\n popoverTitle=\"{{ 'Dashboard template' | translate }}\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dashboardTypePopoverRef\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n >\n <span class=\"tag tag--info text-12\">\n <span class=\"dashboard-template-marker\"></span>\n {{ dashboardTypeLabel | translate: { dashboardType: dashboard.deviceTypeValue } }}\n </span>\n </button>\n <ng-template #dashboardTypePopoverRef>\n <div\n [innerHTML]=\"dashboardTypePopover | translate: { dashboardType: dashboard.deviceTypeValue }\"\n ></div>\n </ng-template>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"-1\"\n *ngIf=\"defaultWidgets.length > 0\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset widgets' | translate }}\"\n type=\"button\"\n px-event=\"Reset dashboard\"\n (click)=\"restore()\"\n [disabled]=\"disabled || widgetsDashboard?.editMode\"\n data-cy=\"context-dashboard--button-reset-dashboard\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"reset\"\n ></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Reset widgets' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/cockpit/working-with-dashboards/#working-with-dashboards\"\n *ngIf=\"showContextHelpButton\"\n></c8y-help>\n\n<c8y-dashboard-detail\n class=\"d-contents\"\n [isReport]=\"isReport\"\n [dashboard]=\"dashboard\"\n [mo]=\"mo\"\n [context]=\"context\"\n [deviceType]=\"context?.type\"\n [hideAvailability]=\"hideAvailability\"\n (dashboardSaved)=\"reloadDashboard($event)\"\n (previewChanged)=\"dashboardPreview($event)\"\n></c8y-dashboard-detail>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [isCopyDisabled]=\"isCopyDisabled\"\n [settings]=\"{\n isLoading: isLoading,\n isDisabled: disabled,\n canDelete: canDelete && !!dashboard,\n translateWidgetTitle: dashboard?.translateWidgetTitle ?? translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard?.name || title : undefined,\n widgetMargin: dashboard?.widgetMargin,\n canCopy: canCopy && !!dashboard,\n defaultWidth: dashboard?.columns >= 24 ? 8 : 4,\n columns: dashboard?.columns || 12\n }\"\n [breadcrumb]=\"breadcrumbSettings\"\n [editModeButtons]=\"{\n undoButtonDisabled: editModeService.undoButtonDisabled,\n changeToUndoName: editModeService.changeToUndoName,\n redoButtonDisabled: !editModeService.redoStackLastItem,\n changeToRedoName: editModeService.redoStackLastItem?.name\n }\"\n (onChangeDashboard)=\"positionOrWidgetDimensionChange($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onSaveDashboard)=\"saveWidgetsToDashboard()\"\n (onCancelDashboard)=\"cancelEditMode()\"\n (revertChange)=\"revertChange($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"dashboardDetails.show(true)\"\n (onCopyDashboard)=\"copyDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n></c8y-widgets-dashboard>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i3.WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: ["widgets", "context", "contextDashboard", "settings", "isCopyDisabled", "breadcrumb", "editModeButtons"], outputs: ["onAddWidget", "onEditWidget", "onDeleteWidget", "onChangeDashboard", "onResize", "onEditDashboard", "onCopyDashboard", "onDeleteDashboard", "onChangeStart", "onChangeEnd", "onSaveDashboard", "onCancelDashboard", "revertChange"] }, { kind: "component", type: i3.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: i9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i10.DashboardDetailComponent, selector: "c8y-dashboard-detail", inputs: ["isReport", "deviceType", "context", "mo", "dashboard", "isNamedDashboard", "hideAvailability"], outputs: ["dashboardSaved", "previewChanged"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
|
|
590
646
|
}
|
|
647
|
+
__decorate([
|
|
648
|
+
memoize(),
|
|
649
|
+
__metadata("design:type", Function),
|
|
650
|
+
__metadata("design:paramtypes", [String]),
|
|
651
|
+
__metadata("design:returntype", Promise)
|
|
652
|
+
], ContextDashboardComponent.prototype, "convertStringToHash", null);
|
|
591
653
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextDashboardComponent, decorators: [{
|
|
592
654
|
type: Component,
|
|
593
655
|
args: [{ selector: 'c8y-context-dashboard', host: {
|
|
@@ -635,5 +697,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
635
697
|
}], beforeUnloadHandler: [{
|
|
636
698
|
type: HostListener,
|
|
637
699
|
args: ['window:beforeunload', ['$event']]
|
|
638
|
-
}] } });
|
|
639
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUdaLG9CQUFvQixFQUdwQixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFFWixNQUFNLEVBR04seUJBQXlCLEVBQzFCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUVMLHdCQUF3QixFQUl4Qiw2QkFBNkIsRUFHN0Isa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUN0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFN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QVZyQyxTQUFTOytCQUNFLHVCQUF1QixRQUUzQjt3QkFDSixLQUFLLEVBQUU7O0tBRU47d0JBQ0QsS0FBSyxFQUFFLDhCQUE4QjtxQkFDdEM7OzBCQStERSxNQUFNOzJCQUFDLHdCQUF3QjtpUUEzRGxDLElBQUk7c0JBREgsS0FBSztnQkFHTixlQUFlO3NCQURkLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS04sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sS0FBSztzQkFESixXQUFXO3VCQUFDLE9BQU87Z0JBR21DLGdCQUFnQjtzQkFBdEUsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXJELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE4Q2hELG1CQUFtQjtzQkFEeEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBY3Rpb25CYXJTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIEJyZWFkY3J1bWJJdGVtLFxuICBEYXNoYm9hcmRDaGFuZ2UsXG4gIERhc2hib2FyZENoaWxkQ2hhbmdlLFxuICBEYXNoYm9hcmRDaGlsZENvbXBvbmVudCxcbiAgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgUmV2ZXJ0Q2hhbmdlVHlwZSxcbiAgU3RhdHVzLFxuICBXaWRnZXQsXG4gIFdpZGdldENoYW5nZSxcbiAgV2lkZ2V0c0Rhc2hib2FyZENvbXBvbmVudFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZXZlcnksIGZpbmRJbmRleCwga2ViYWJDYXNlLCBrZXlCeSwgb21pdCwgc29tZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDYW5EZWFjdGl2YXRlQ29tcG9uZW50LFxuICBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcsXG4gIENvbnRleHREYXNoYm9hcmQsXG4gIENvbnRleHREYXNoYm9hcmRDb25maWcsXG4gIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LFxuICBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRSxcbiAgRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSxcbiAgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0UsXG4gIFdJREdFVF9IRUFERVJfQ0xBU1NFU1xufSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLm1vZGVsJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZERldGFpbENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29uZmlnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRFZGl0TW9kZVNlcnZpY2UgfSBmcm9tICcuL21lbWVudG8vZGFzaGJvYXJkLWVkaXQtbW9kZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgY29udGV4dCBkYXNoYm9hcmQgaXMgYSBkYXNoYm9hcmQgd2hpY2ggcmVzb2x2ZXMgaXQgZGF0YSBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQgKGRldmljZSBvciBncm91cClcbiAqIGl0IGlzIGRpc3BsYXllZCBvbi4gSXQgdXN1YWxseSB1c2VzIHRoZSByb3V0ZS5kYXRhIGZvciBpdCwgYnV0IHlvdSBjYW4gcGFzc1xuICogYSBkaWZmZXJlbnQgbWFuYWdlZE9iamVjdCB0byB0aGUgW21vXSBpbnB1dCBwYXJhbWV0ZXIgdG8gY2hhbmdlIHRoYXQgYmVoYXZpb3IuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jb250ZXh0LWRhc2hib2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICBzdHlsZTogYFxuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgYCxcbiAgICBjbGFzczogJ2Rhc2hib2FyZCBjOHktZ3JpZC1kYXNoYm9hcmQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDYW5EZWFjdGl2YXRlQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjaGlsZHJlbkNsYXNzZXMgPSAnJztcbiAgQElucHV0KClcbiAgY29udGV4dDogYW55O1xuICBASW5wdXQoKVxuICBzZXRUaXRsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGRlZmF1bHRXaWRnZXRzOiBXaWRnZXRbXSA9IFtdO1xuICBASW5wdXQoKVxuICBjYW5Db3B5ID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgY2FuRGVsZXRlID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgYnJlYWRjcnVtYlNldHRpbmdzOiBCcmVhZGNydW1iSXRlbTtcbiAgQElucHV0KClcbiAgc2hvd0NvbnRleHRIZWxwQnV0dG9uID0gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdG8gdHJhbnNsYXRlIHdpZGdldCB0aXRsZXMuIEhvd2V2ZXIsIGRhc2hib2FyZCdzIG93biBzZXR0aW5nIHRha2VzIHByZWNlZGVuY2UuIEl0IGRvZXMgbm90IG92ZXJyaWRlIGRhc2hib2FyZCdzIHNldHRpbmcgKi9cbiAgQElucHV0KCkgdHJhbnNsYXRlV2lkZ2V0VGl0bGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBIaWRlcyBkYXNoYm9hcmQgYXZhaWxhYmlsaXR5IHNlbGVjdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhpZGVBdmFpbGFiaWxpdHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgY2xhc3MgPSAnJztcblxuICBAVmlld0NoaWxkKERhc2hib2FyZERldGFpbENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgZGFzaGJvYXJkRGV0YWlsczogRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFdpZGdldHNEYXNoYm9hcmRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHdpZGdldHNEYXNoYm9hcmQ6IFdpZGdldHNEYXNoYm9hcmRDb21wb25lbnQ7XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5oYXNQZXJtaXNzaW9uVG9FZGl0RGFzaGJvYXJkIHx8ICF0aGlzLmRhc2hib2FyZERldGFpbHM/LmlzQ29sbGFwc2VkO1xuICB9XG5cbiAgd2lkZ2V0czogV2lkZ2V0W10gPSBbXTtcbiAgbW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmQ7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGlzQ29weURpc2FibGVkOiBib29sZWFuO1xuICBpc1JlcG9ydDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGFzaGJvYXJkVHlwZUxhYmVsID0gZ2V0dGV4dCgnRGFzaGJvYXJkIGZvciBcInt7IGRhc2hib2FyZFR5cGUgfX1cIicpO1xuICByZWFkb25seSBkYXNoYm9hcmRUeXBlUG9wb3ZlciA9IGdldHRleHQoYFxuICBUaGUgbGF5b3V0IGFuZCBjb25maWd1cmF0aW9uIG9mIHRoaXMgZGFzaGJvYXJkIGlzIHVzZWQgYnkgYWxsIG90aGVyIGFzc2V0cyBvZiBtb2RlbCB0eXBlXG4gIDxzdHJvbmc+e3sgZGFzaGJvYXJkVHlwZSB9fTwvc3Ryb25nPi4gQW55IGNoYW5nZXMgbWFkZSB0byB0aGlzIGRhc2hib2FyZCBpbnN0YW5jZSB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsXG4gIG90aGVyIGluc3RhbmNlcy5gKTtcbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogQ29udGV4dERhc2hib2FyZENvbmZpZyxcbiAgICBwcml2YXRlIHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25CYXJTZXJ2aWNlOiBBY3Rpb25CYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHVibGljIGVkaXRNb2RlU2VydmljZTogRGFzaGJvYXJkRWRpdE1vZGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5sb2FkQ29udGV4dERhc2hib2FyZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmxvYWROYW1lZERhc2hib2FyZCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIGFzeW5jIGJlZm9yZVVubG9hZEhhbmRsZXIoJGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkge1xuICAgIGNvbnN0IGNhbkRlYWN0aXZhdGUgPSBhd2FpdCB0aGlzLmNhbkRlYWN0aXZhdGUodHJ1ZSk7XG4gICAgaWYgKCFjYW5EZWFjdGl2YXRlKSB7XG4gICAgICAkZXZlbnQucmV0dXJuVmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdGhlIHdpZGdldFxuICAgKiBAcGFyYW0gd2lkZ2V0IFRoZSB3aWRnZXQgdG8gYXBwbHkgdGhlIGNvbnRleHQgdG8uXG4gICAqL1xuICBhcHBseURldmljZVRhcmdldCh3aWRnZXQpIHtcbiAgICBpZiAod2lkZ2V0LmNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIHdpZGdldC5jb25maWcuZGV2aWNlID0geyBpZDogdGhpcy5jb250ZXh0LmlkLCBuYW1lOiB0aGlzLmNvbnRleHQubmFtZSB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSByb3V0ZSBsaXN0ZW5lci5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogR3VhcmRzIGNvbXBvbmVudCBmcm9tIHVuaW50ZW5kZWQgbmF2aWdhdGlvbiBhd2F5IG9yIGNsb3NpbmcgdGFiIHdpdGhvdXQgc2F2aW5nIGNoYW5nZXMuXG4gICAqIE5hdmlnYXRpb24gY29udGludWVzIGlmIHRydWUgaXMgcmV0dXJuZWQsIGFuZCBuYXZpZ2F0aW9uIGlzIGNhbmNlbGxlZCBpZiByZXR1cm5lZCB2YWx1ZSBpcyBmYWxzZS5cbiAgICogQHBhcmFtIG9taXRDb25maXJtIE9taXRzIGNvbmZpcm0gY2FsbHMgaW5zaWRlIG1ldGhvZCBib2R5ICh3aXRob3V0IHRoaXMgcGFyYW0sIHdoZW4gbWV0aG9kIGlzIHVzZWQgaW5cbiAgICogb24gJ2JlZm9yZXVubG9hZCcgZXZlbnQgaGFuZGxlciwgZXJyb3IgaXMgdGhyb3duIGluIGNvbnNvbGUgYmVjYXVzZSBjb25maXJtIGlzIGJsb2NrZWQgYnkgYnJvd3NlciBhbnl3YXkgYW5kIHJldHVybnMgZmFsc2UpXG4gICAqL1xuICBhc3luYyBjYW5EZWFjdGl2YXRlKG9taXRDb25maXJtID0gZmFsc2UpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjYW5EZWFjdGl2YXRlID1cbiAgICAgIChhd2FpdCB0aGlzLmRhc2hib2FyZERldGFpbHMuY2FuRGVhY3RpdmF0ZShvbWl0Q29uZmlybSkpICYmXG4gICAgICAoYXdhaXQgdGhpcy53aWRnZXRzRGFzaGJvYXJkLmNhbkRlYWN0aXZhdGUob21pdENvbmZpcm0pKTtcblxuICAgIC8vIE5lZWRlZCBpbiBvcmRlciB0byByZXNldCBlZGl0IG1vZGUsIG90aGVyd2lzZSB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIGRhc2hib2FyZHMsIHRoZSBlZGl0IG1vZGUgaXMgc3RpbGwgZW5hYmxlZC5cbiAgICBpZiAoY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgYXdhaXQgdGhpcy5jYW5jZWxFZGl0TW9kZSh0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhbkRlYWN0aXZhdGU7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIGRhc2hib2FyZCB3aWRnZXRzIHRvIHRoZSBkZWZhdWx0IHdpZGdldHMuXG4gICAqL1xuICBhc3luYyByZXN0b3JlKCkge1xuICAgIGNvbnN0IG1lc2cgPSBnZXR0ZXh0KFxuICAgICAgJ1lvdSBhcmUgYWJvdXQgdG8gcmVzZXQgdGhlIHdpZGdldHMgb2YgdGhpcyBkYXNoYm9hcmQuIEFsbCBjaGFuZ2VzIHRvIHRoZSBkYXNoYm9hcmQgd2lkZ2V0cyB3aWxsIGdldCBsb3N0IGFuZCBjYW5ub3QgYmUgcmVjb3ZlcmVkLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPydcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShnZXR0ZXh0KCdSZXNldCB3aWRnZXRzJyksIG1lc2csIFN0YXR1cy5XQVJOSU5HLCB7XG4gICAgICAgIG9rOiBnZXR0ZXh0KCdSZXNldGBkYXNoYm9hcmRgJyksXG4gICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLm1hcFdpZGdldHModGhpcy5kZWZhdWx0V2lkZ2V0cyk7XG4gICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuaGlzdG9yeURlc2NyaXB0aW9uID0ge1xuICAgICAgICBjaGFuZ2VUeXBlOiAncmVzZXQnXG4gICAgICB9O1xuICAgICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGUodGhpcy5tbyk7XG4gICAgICBhd2FpdCB0aGlzLm9uTG9hZCgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE1ldGhvZCBjYWxsZWQgb24gZXZlcnkgd2lkZ2V0cyBkaW1lbnNpb25zIG9yIHBvc2l0aW9uIGNoYW5nZSBidXQgYWxzbyBmb3IgYWRkaW5nIG5ldyB3aWRnZXQgKGJlY2F1c2UgYWRkaW5nXG4gICAqIHdpZGdldCBjYXVzZXMgbGF5b3V0IGNoYW5nZXMpLiBJdCByZWNvZ25pemVzIHdoYXQgdHlwZSBvZiBjaGFuZ2UgaGFzIGJlZW4gZG9uZSBhbmQgdXBkYXRlcyBjdXJyZW50IHdpZGdldHMgc3RhdGVcbiAgICogYWNjb3JkaW5nbHkuXG4gICAqIEBwYXJhbSBjaGlsZCBDaGFuZ2Ugb2JqZWN0LlxuICAgKi9cbiAgcG9zaXRpb25PcldpZGdldERpbWVuc2lvbkNoYW5nZShjaGlsZDogRGFzaGJvYXJkQ2hpbGRDaGFuZ2UgfCBEYXNoYm9hcmRDaGFuZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKT8uY2hpbGRyZW4gfHwge307XG4gICAgY29uc3QgZGVzY3JpcHRpb25Qcm9wOiBrZXlvZiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSA9XG4gICAgICBjaGlsZC5jaGlsZHJlbi5sZW5ndGggPT09IE9iamVjdC52YWx1ZXMoY3VycmVudFN0YXRlKS5sZW5ndGggPyAnYXJyYW5nZW1lbnQnIDogJ2FkZGVkJztcbiAgICBsZXQgY2hhbmdlTmFtZTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZVsnbmFtZSddO1xuICAgIGxldCB3aWRnZXRzQ2hhbmdlZDogV2lkZ2V0W107XG4gICAgaWYgKGRlc2NyaXB0aW9uUHJvcCA9PT0gJ2FkZGVkJykge1xuICAgICAgY2hhbmdlTmFtZSA9IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLmFkZGVkO1xuICAgICAgY29uc3QgYWRkZWRXaWRnZXQgPSBjaGlsZC5jaGlsZHJlbi5maW5kKGMgPT4gIWN1cnJlbnRTdGF0ZVtjLmRhdGEuaWRdKTtcbiAgICAgIHdpZGdldHNDaGFuZ2VkID0gW2FkZGVkV2lkZ2V0LmRhdGFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGFuZ2VOYW1lID0gREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUuYXJyYW5nZW1lbnQ7XG4gICAgICB3aWRnZXRzQ2hhbmdlZCA9IGNoaWxkLmNoaWxkcmVuXG4gICAgICAgIC5tYXAoYyA9PiB7XG4gICAgICAgICAgY29uc3QgbGFzdFN0YXRlQ2hpbGQgPSBjdXJyZW50U3RhdGVbYy5kYXRhLmlkXTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjLnggIT0gbGFzdFN0YXRlQ2hpbGQuX3ggfHxcbiAgICAgICAgICAgIGMueSAhPSBsYXN0U3RhdGVDaGlsZC5feSB8fFxuICAgICAgICAgICAgYy53aWR0aCAhPSBsYXN0U3RhdGVDaGlsZC5fd2lkdGggfHxcbiAgICAgICAgICAgIGMuaGVpZ2h0ICE9IGxhc3RTdGF0ZUNoaWxkLl9oZWlnaHRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBjLmRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oY2hpbGQsIGNoYW5nZU5hbWUsIGRlc2NyaXB0aW9uUHJvcCwgd2lkZ2V0c0NoYW5nZWQpO1xuICB9XG5cbiAgYXN5bmMgcmV2ZXJ0Q2hhbmdlKHJldmVydFR5cGU6IFJldmVydENoYW5nZVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgZGFzaGJvYXJkQ2hpbGRyZW46IENvbnRleHREYXNoYm9hcmRbJ2NoaWxkcmVuJ107XG4gICAgaWYgKHJldmVydFR5cGUgPT09ICd1bmRvJykge1xuICAgICAgZGFzaGJvYXJkQ2hpbGRyZW4gPSB0aGlzLmVkaXRNb2RlU2VydmljZS51bmRvKCkuY2hpbGRyZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhc2hib2FyZENoaWxkcmVuID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UucmVkbygpLmNoaWxkcmVuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIGRhc2hib2FyZHMgY2hpbGRyZW4ncy4gVXNlZnVsIGZvciBwb3NpdGlvbiBjaGFuZ2VzIG9uIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBjaGlsZCBUaGUgY2hpbGQgdG8gY2hhbmdlLlxuICAgKiBAcGFyYW0gY2hhbmdlTmFtZSBOYW1lIG9mIHRoZSBjaGFuZ2UgdG8gaW5kaWNhdGUgaXQgb24gdW5kby9yZWRvIGJ1dHRvbi5cbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uUHJvcCBQcm9wZXJ0eSB0byBhZGQgdG8gZGFzaGJvYXJkIGNoYW5nZSBoaXN0b3J5LlxuICAgKiBAcGFyYW0gd2lkZ2V0c0NoYW5nZWQgTGlzdCBvZiBjaGFuZ2VkIHdpZGdldHMuXG4gICAqL1xuICB1cGRhdGVEYXNoYm9hcmRDaGlsZHJlbihcbiAgICBjaGlsZDogRGFzaGJvYXJkQ2hpbGRDaGFuZ2UgfCBEYXNoYm9hcmRDaGFuZ2UsXG4gICAgY2hhbmdlTmFtZTogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZVsnbmFtZSddLFxuICAgIGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGNoaWxkO1xuICAgIGNvbnN0IG1hcHBlZENoaWxkcmVuOiB7IFtpZDogc3RyaW5nXTogV2lkZ2V0IH0gPSBrZXlCeShcbiAgICAgIGNoaWxkcmVuLm1hcChjID0+IHRoaXMuY29tcG9uZW50VG9XaWRnZXQoYykpLFxuICAgICAgJ2lkJ1xuICAgICk7XG4gICAgdGhpcy5zZXROZXdTdGF0ZShcbiAgICAgIHsgbmFtZTogY2hhbmdlTmFtZSwgY2hpbGRyZW46IG1hcHBlZENoaWxkcmVuIH0sXG4gICAgICBkZXNjcmlwdGlvblByb3AsXG4gICAgICB3aWRnZXRzQ2hhbmdlZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIHRoZSBkYXNoYm9hcmQgYW5kIGN1cnJlbnQgY29udGV4dCB0byBhIGNsaXBib2FyZC5cbiAgICovXG4gIGFzeW5jIGNvcHlEYXNoYm9hcmQoKSB7XG4gICAgY29uc3Qgdmlld0NvbnRleHQgPSB0aGlzLnJvdXRlLnBhcmVudC5zbmFwc2hvdC5kYXRhPy5jb250ZXh0O1xuXG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5jb3B5Q2xpcGJvYXJkID0ge1xuICAgICAgZGFzaGJvYXJkSWQ6IHRoaXMubW8uaWQsXG4gICAgICBkYXNoYm9hcmQ6IGNsb25lRGVlcCh0aGlzLm1vLmM4eV9EYXNoYm9hcmQpLFxuICAgICAgY29udGV4dDogY2xvbmVEZWVwKHtcbiAgICAgICAgY29udGV4dDogdmlld0NvbnRleHQsXG4gICAgICAgIGNvbnRleHREYXRhOiB0aGlzLmNvbnRleHRcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGlmICh2aWV3Q29udGV4dCkge1xuICAgICAgY29uc3QgY3R4ID0gdmlld0NvbnRleHQuc3BsaXQoJy8nKS5zaGlmdCgpO1xuICAgICAgY29uc3QgbXNnID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICdEYXNoYm9hcmQgY29waWVkLiBOYXZpZ2F0ZSB0byB0aGUgZGVzaXJlZCB7eyBjdHggfX0gYW5kIHNlbGVjdCBcIlBhc3RlIGRhc2hib2FyZFwiJyxcbiAgICAgICAgeyBjdHggfVxuICAgICAgKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2Vzcyhtc2cpO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvbkJhclNlcnZpY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgY29tcGxldGUgZGFzaGJvYXJkIGFuZCBuYXZpZ2F0ZSBhd2F5LlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRGFzaGJvYXJkKCkge1xuICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZGVsZXRlKHRoaXMubW8pO1xuICAgIGlmICh0aGlzLnJvdXRlLnBhcmVudCkge1xuICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLnJvdXRlLnBhcmVudC5zbmFwc2hvdC51cmwubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoKS5qb2luKCcvJyk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKTtcbiAgICB9XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLCB7XG4gICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5ERUxFVEVfREFTSEJPQVJELFxuICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuREVMRVRFLFxuICAgICAgbmFtZTogdGhpcy5kYXNoYm9hcmQubmFtZSxcbiAgICAgIGlkOiB0aGlzLm1vLmlkLFxuICAgICAgZGFzaGJvYXJkVHlwZTogdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZSA/IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSA6IG51bGwsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldENvbnRleHRGb3JHUyh0aGlzLmNvbnRleHQpXG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNEZXZpY2VUeXBlRGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGFzaGJvYXJkPy5kZXZpY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVkaXRzIGEgd2lkZ2V0IG9uIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBjaGFuZ2UgVGhlIHdpZGdldCBjaGFuZ2UgZXZlbnQuXG4gICAqL1xuICBhc3luYyBlZGl0V2lkZ2V0KGNoYW5nZTogV2lkZ2V0Q2hhbmdlKSB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBjaGFuZ2Uuc291cmNlO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZS5nZXRXaWRnZXREZWZpbml0aW9uKFxuICAgICAgY2hhbmdlLndpZGdldC5uYW1lIHx8IGNoYW5nZS53aWRnZXQuY29tcG9uZW50SWRcbiAgICApO1xuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICB0aGlzLmFkZFdpZGdldCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmFkZFdpZGdldCh7XG4gICAgICAuLi5jb21wb25lbnQsXG4gICAgICBkYXRhOiB7IC4uLmNvbXBvbmVudC5kYXRhLCAuLi5jaGFuZ2Uud2lkZ2V0LCBfeDogeCwgX3k6IHksIF93aWR0aDogd2lkdGgsIF9oZWlnaHQ6IGhlaWdodCB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHdpZGdldCB0byB0aGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgRGVmaW5lIGEgc2VsZWN0ZWQgY29tcG9uZW50IHRvIHN3aXRjaCB0byBlZGl0IG1vZGUgZGlyZWN0bHkuXG4gICAqL1xuICBhc3luYyBhZGRXaWRnZXQoc2VsZWN0ZWQ/OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHBhcnRpYWxDbG9uZVNlbGVjdGVkID0gc2VsZWN0ZWRcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnNlbGVjdGVkLFxuICAgICAgICAgIGRhdGE6IGNsb25lRGVlcChzZWxlY3RlZC5kYXRhKVxuICAgICAgICB9XG4gICAgICA6IHNlbGVjdGVkO1xuXG4gICAgY29uc3QgYWN0aXZlQ29udGV4dCA9IHRoaXMuY29udGV4dC5jb250ZXh0RGF0YSA/IHRoaXMuY29udGV4dC5jb250ZXh0RGF0YSA6IHRoaXMuY29udGV4dDtcbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBhcnRpYWw8V2lkZ2V0Q29uZmlnQ29tcG9uZW50PiA9IHtcbiAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LmM4eV9SZXBvcnQgPyB7fSA6IGFjdGl2ZUNvbnRleHQsXG4gICAgICBzZWxlY3RlZDogcGFydGlhbENsb25lU2VsZWN0ZWRcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhXaWRnZXRDb25maWdDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzOiAnbW9kYWwtbGcnLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2VcbiAgICB9KS5jb250ZW50IGFzIFdpZGdldENvbmZpZ0NvbXBvbmVudDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXdXaWRnZXQgPSBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBpZiAoIXRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSB7fTtcbiAgICAgIH1cbiAgICAgIG5ld1dpZGdldC5jbGFzc2VzID0gdGhpcy5tZXJnZVdpZGdldENsYXNzZXMobmV3V2lkZ2V0KTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlV2lkZ2V0KG5ld1dpZGdldCk7XG4gICAgICAvLyBOZXcgc3RhdGUgaW4gZWRpdCBtb2RlIGlzIGFkZGVkIG9ubHkgZm9yIHdpZGdldCB1cGRhdGUuIFdoZW4gYWRkaW5nIHdpZGdldCwgbGF5b3V0IGNoYW5nZSBpcyBhbHdheXMgdHJpZ2dlcmVkLFxuICAgICAgLy8gc28gaXQncyBlYXNpZXIgdG8gc2V0IG5ldyBzdGF0ZSBvbiBsYXlvdXQgY2hhbmdlIG9ubHlcbiAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHtcbiAgICAgICAgICAuLi50aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKS5jaGlsZHJlbixcbiAgICAgICAgICBbbmV3V2lkZ2V0LmlkXTogbmV3V2lkZ2V0XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0TmV3U3RhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUuY29uZmlnLFxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICB9LFxuICAgICAgICAgICdjb25maWcnLFxuICAgICAgICAgIFtuZXdXaWRnZXRdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVXaWRnZXRzVG9EYXNoYm9hcmQoKSB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UuZ2V0Q3VycmVudFN0YXRlKCk7XG4gICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0gY3VycmVudFN0YXRlLmNoaWxkcmVuO1xuXG4gICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9IHtcbiAgICAgIGNoYW5nZVR5cGU6ICd1cGRhdGUnLFxuICAgICAgd2lkZ2V0Q2hhbmdlczogdGhpcy5tYXBTdGF0ZVRvSGlzdG9yeURlc2NyaXB0aW9uKGN1cnJlbnRTdGF0ZS5jaGFuZ2VIaXN0b3J5KVxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGUodGhpcy5tbyk7XG4gICAgdGhpcy5lZGl0TW9kZVNlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLmVkaXRNb2RlU2VydmljZS5pbml0KHtcbiAgICAgIG5hbWU6IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLmluaXRpYWwsXG4gICAgICBjaGlsZHJlbjogdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuLFxuICAgICAgY2hhbmdlSGlzdG9yeToge31cbiAgICB9KTtcbiAgICB0aGlzLmlzQ29weURpc2FibGVkID0gIXRoaXMuY2FuQ29weURhc2hib2FyZCgpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsRWRpdE1vZGUob25EZWFjdGl2YXRlID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXNoYm9hcmRDaGlsZHJlbiA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLnJlc2V0KCk7XG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZC5oaXN0b3J5RGVzY3JpcHRpb24gPSB7fTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRzRGFzaGJvYXJkLmVkaXRNb2RlID0gZmFsc2U7XG4gICAgaWYgKCFvbkRlYWN0aXZhdGUpIHtcbiAgICAgIC8vIHdoZW4gc2V0V2lkZ2V0cyBpcyBjYWxsZWQgZHVyaW5nIG5hdmlnYXRpb24gZnJvbSBkZXZpY2UgdG8gZGV2aWNlLCBuYXZpZ2F0aW9uIGZhaWxzXG4gICAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4uY2hpbGRyZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgd2lkZ2V0IG9yIGFkZHMgYSBuZXcgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb25cbiAgICogdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIHdpZGdldCBUaGUgbmV3IHdpZGdldFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlV2lkZ2V0KHdpZGdldCkge1xuICAgIGNvbnN0IGluZGV4ID0gZmluZEluZGV4KHRoaXMud2lkZ2V0cywgeyBpZDogd2lkZ2V0LmlkIH0pO1xuICAgIGNvbnN0IGlzTmV3ID0gaW5kZXggPT09IC0xO1xuICAgIGNvbnN0IG1hcHBlZFdpZGdldCA9IGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KTtcbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5wdXNoKG1hcHBlZFdpZGdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5zcGxpY2UoaW5kZXgsIDEsIG1hcHBlZFdpZGdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSB3aWRnZXQgYW5kIHJlYXJyYW5nZXMgdGhlIHJlbWFpbmluZyBvbmVzXG4gICAqIGlmIG5lY2Vzc2FyeS5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlV2lkZ2V0KGNoYW5nZTogV2lkZ2V0Q2hhbmdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgd2lkZ2V0LCBzb3VyY2UgfSA9IGNoYW5nZTtcbiAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLndpZGdldHMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gd2lkZ2V0LmlkKTtcbiAgICAgIHRoaXMud2lkZ2V0cy5zcGxpY2UodGhpcy53aWRnZXRzLmluZGV4T2YocmVtb3ZlZCksIDEpO1xuXG4gICAgICBjb25zdCB7IGRhc2hib2FyZCB9ID0gc291cmNlO1xuICAgICAgZGFzaGJvYXJkLmNoaWxkcmVuID0gZGFzaGJvYXJkLmNoaWxkcmVuLmZpbHRlcihjID0+IGMuZGF0YS5pZCAhPT0gd2lkZ2V0LmlkKTtcblxuICAgICAgLy8gdXNpbmcgc2V0VGltZW91dCB0byBnaXZlIHRoZSBjb21wb25lbnQgdGhlIGNoYW5jZSB0byByZW1vdmUgaXQuXG4gICAgICBjb25zdCBzbGVlcCA9IHRpbWVvdXQgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpKTtcbiAgICAgIGF3YWl0IHNsZWVwKDApO1xuXG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBEYXNoYm9hcmRDaGlsZENoYW5nZShzb3VyY2UpO1xuICAgICAgY2hpbGQuY29sbGFwc2VVcEFsbCgpO1xuICAgICAgdGhpcy51cGRhdGVEYXNoYm9hcmRDaGlsZHJlbihjaGlsZCwgREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUucmVtb3ZlZCwgJ3JlbW92ZWQnLCBbXG4gICAgICAgIHdpZGdldFxuICAgICAgXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJhZ2dlZC1lbGVtZW50XG4gICAqICh3aGljaCBpcyBhdHRhY2hlZCB0byB0aGUgYm9keSkgaGFzIHRoZSByaWdodCBzdHlsaW5nLlxuICAgKi9cbiAgYWRkRGFzaGJvYXJkQ2xhc3NUb0JvZHkoKSB7XG4gICAgdGhpcy5jbGFzcy5zcGxpdCgnICcpLmZvckVhY2goY3NzQ2xhc3MgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCBjc3NDbGFzcyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyYWdnZWQtZWxlbWVudFxuICAgKiAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIGJvZHkpIGhhcyB0aGUgcmlnaHQgc3R5bGluZy5cbiAgICovXG4gIHJlbW92ZURhc2hib2FyZENsYXNzRnJvbUJvZHkoKSB7XG4gICAgdGhpcy5jbGFzcy5zcGxpdCgnICcpLmZvckVhY2goY3NzQ2xhc3MgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCBjc3NDbGFzcyk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvbkxvYWQodHJhY2tFeHBlcmllbmNlPzogYm9vbGVhbikge1xuICAgIHRoaXMuaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCA9IHRoaXMuZGFzaGJvYXJkXG4gICAgICA/IGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY2FuRWRpdERhc2hib2FyZCh0aGlzLm1vKVxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLmNhbkNvcHkgPVxuICAgICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZURhc2hib2FyZCh0aGlzLm1vKSB8fFxuICAgICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZVR5cGUodGhpcy5tbykgfHxcbiAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNHcm91cERhc2hib2FyZCh0aGlzLm1vKTtcbiAgICBjb25zdCBkYXNoYm9hcmRDaGlsZHJlbjogQ29udGV4dERhc2hib2FyZFsnY2hpbGRyZW4nXSA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZD8uY2hpbGRyZW5cbiAgICApO1xuICAgIGNvbnN0IGRhc2hib2FyZENsYXNzZXMgPSB7XG4gICAgICAnYzh5LWdyaWQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIGRhc2hib2FyZDogdHJ1ZSxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkPy5jbGFzc2VzXG4gICAgfTtcbiAgICB0aGlzLmlzQ29weURpc2FibGVkID0gdGhpcy5kYXNoYm9hcmQgPyAhdGhpcy5jYW5Db3B5RGFzaGJvYXJkKCkgOiB0cnVlO1xuICAgIHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmluaXQoe1xuICAgICAgbmFtZTogZ2V0dGV4dCgnSW5pdGlhbCBzdGF0ZScpLFxuICAgICAgY2hpbGRyZW46IGRhc2hib2FyZENoaWxkcmVuLFxuICAgICAgY2hhbmdlSGlzdG9yeToge31cbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4sIHRyYWNrRXhwZXJpZW5jZSk7XG4gICAgdGhpcy5jbGFzcyA9IE9iamVjdC5rZXlzKGRhc2hib2FyZENsYXNzZXMpLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5pc1JlcG9ydCkge1xuICAgICAgdGhpcy5hZGRSZXBvcnREYXNoYm9hcmRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5kYXNoYm9hcmREZXRhaWxzLnNob3coZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICB0aGlzLmlzUmVwb3J0XG4gICAgICAgICAgPyBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5SRVBPUlRTXG4gICAgICAgICAgOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTVBPTkVOVFMuREFTSEJPQVJEX1ZJRVcsXG4gICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuTE9BRCxcbiAgICAgICAgICBuYW1lOiB0aGlzLmRhc2hib2FyZC5uYW1lLFxuICAgICAgICAgIGlkOiB0aGlzLm1vLmlkLFxuICAgICAgICAgIGRhc2hib2FyZFR5cGU6IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGUgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgOiBudWxsLFxuICAgICAgICAgIGNvbnRleHQ6IHRoaXMuaXNSZXBvcnRcbiAgICAgICAgICAgID8gUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULlJFUE9SVFxuICAgICAgICAgICAgOiB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldENvbnRleHRGb3JHUyh0aGlzLmNvbnRleHQpXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGFzaGJvYXJkUHJldmlldyhsYXlvdXRDaGFuZ2VzOiBDb250ZXh0RGFzaGJvYXJkKSB7XG4gICAgaWYgKGxheW91dENoYW5nZXM/LmNsYXNzZXMpIHtcbiAgICAgIGNvbnN0IGRhc2hib2FyZENsYXNzZXMgPSB7XG4gICAgICAgICdjOHktZ3JpZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgICBkYXNoYm9hcmQ6IHRydWUsXG4gICAgICAgIC4uLmxheW91dENoYW5nZXMuY2xhc3Nlc1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2xhc3MgPSBPYmplY3Qua2V5cyhkYXNoYm9hcmRDbGFzc2VzKS5qb2luKCcgJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcyxcbiAgICAgICAgLi4ubGF5b3V0Q2hhbmdlcy53aWRnZXRDbGFzc2VzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbG9hZERhc2hib2FyZChkYXNoYm9hcmRNbzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLmRhc2hib2FyZCA9IGRhc2hib2FyZE1vLmM4eV9EYXNoYm9hcmQ7XG4gICAgdGhpcy5tbyA9IGRhc2hib2FyZE1vO1xuICAgIGF3YWl0IHRoaXMub25Mb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFdpZGdldHMoXG4gICAgZGFzaGJvYXJkQ2hpbGRyZW46IENvbnRleHREYXNoYm9hcmRbJ2NoaWxkcmVuJ10sXG4gICAgdHJhY2tFeHBlcmllbmNlID0gZmFsc2VcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNEZXZpY2VUeXBlID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZVR5cGUodGhpcy5tbyk7XG4gICAgdGhpcy53aWRnZXRzID0gYXdhaXQgUHJvbWlzZS5hbGw8V2lkZ2V0PihcbiAgICAgIE9iamVjdC52YWx1ZXMoZGFzaGJvYXJkQ2hpbGRyZW4gfHwge30pLm1hcCh3aWRnZXQgPT4ge1xuICAgICAgICB3aWRnZXQuY2xhc3NlcyA9IHRoaXMubWVyZ2VXaWRnZXRDbGFzc2VzKHdpZGdldCk7XG4gICAgICAgIGlmIChpc0RldmljZVR5cGUpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RGV2aWNlVGFyZ2V0KHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYWNrRXhwZXJpZW5jZSkge1xuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoJ2xvYWRXaWRnZXQnLCB7XG4gICAgICAgICAgICB3aWRnZXROYW1lOiB3aWRnZXQuY29tcG9uZW50SWQgfHwgd2lkZ2V0Lm5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRTZXJ2aWNlLm1hcExlZ2FjeSh3aWRnZXQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQ29udGV4dERhc2hib2FyZCgpIHtcbiAgICB0aGlzLmRhdGFTdWIgPSB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKCh7IGRhc2hib2FyZCwgaXNSZXBvcnQgfSkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YS5jb250ZXh0RGF0YSB8fCB7fTtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmNvbnRleHQ/Lm5hbWU7XG4gICAgICB0aGlzLm1vID0gZGFzaGJvYXJkO1xuICAgICAgdGhpcy5kYXNoYm9hcmQgPSB0aGlzLm1vLmM4eV9EYXNoYm9hcmQ7XG4gICAgICB0aGlzLmlzUmVwb3J0ID0gaXNSZXBvcnQgfHwgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc1JlcG9ydCh0aGlzLm1vKTtcbiAgICAgIGlmICh0aGlzLmlzUmVwb3J0ICYmIHRoaXMuZGFzaGJvYXJkICYmICF0aGlzLmRhc2hib2FyZD8ubmFtZSkge1xuICAgICAgICB0aGlzLmRhc2hib2FyZC5uYW1lID0gdGhpcy50aXRsZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzUmVwb3J0ICYmIHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLmM4eV9Jc05hdmlnYXRvck5vZGUgPSB0aGlzLmNvbnRleHQuYzh5X0lzTmF2aWdhdG9yTm9kZTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF0Y2hTZW5zb3JQaG9uZURhc2hib2FyZCh0aGlzLmRhc2hib2FyZCwgdGhpcy5tby5vd25lciwgdGhpcy5jb250ZXh0Py50eXBlKTtcbiAgICAgIHRoaXMub25Mb2FkKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIGVuYWJsZSB0cmFuc2xhdGlvbiBmb3Igd2lkZ2V0cyB3aXRoaW4gdGhlIGRhc2hib2FyZCwgdGhlIFwidHJhbnNsYXRlV2lkZ2V0VGl0bGVcIiBmbGFnIG11c3QgYmUgZW5hYmxlZC5cbiAgICogVGhlIHByb3BlcnR5IG5lZWRzIHRvIGJlIHBhdGNoZWQsIGFzIHRoZSBcIlNlbnNvciBBcHBcIiBkb2VzIG5vdCBwcm92aWRlIHRoaXMgc2V0dGluZy5cbiAgICovXG4gIHByaXZhdGUgcGF0Y2hTZW5zb3JQaG9uZURhc2hib2FyZChkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmQsIG93bmVyOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSAnYzh5X1NlbnNvclBob25lJyAmJiBvd25lcj8uaW5jbHVkZXMoJ2RldmljZV9waG9uZScpKSB7XG4gICAgICBkYXNoYm9hcmQudHJhbnNsYXRlV2lkZ2V0VGl0bGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5hbWVkRGFzaGJvYXJkKCkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2VcbiAgICAgIC5nZXROYW1lZERhc2hib2FyZE9yQ3JlYXRlKHRoaXMubmFtZSwgdGhpcy5kZWZhdWx0V2lkZ2V0cywgdGhpcy5jb250ZXh0KVxuICAgICAgLnN1YnNjcmliZShtbyA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuY29udGV4dCB8fCB7fTtcbiAgICAgICAgdGhpcy5tbyA9IG1vO1xuICAgICAgICB0aGlzLmRhc2hib2FyZCA9IHRoaXMubW8uYzh5X0Rhc2hib2FyZDtcbiAgICAgICAgdGhpcy5vbkxvYWQodHJ1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VXaWRnZXRDbGFzc2VzKHdpZGdldDogV2lkZ2V0KTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4ge1xuICAgIGNvbnN0IGhhc0hlYWRlckNsYXNzID0gV0lER0VUX0hFQURFUl9DTEFTU0VTLmZpbmQoXG4gICAgICBlbCA9PiB3aWRnZXQuY2xhc3NlcyAmJiB3aWRnZXQuY2xhc3Nlc1tlbC5jbGFzc11cbiAgICApO1xuICAgIGNvbnN0IHdpZGdldENsYXNzZXMgPSBoYXNIZWFkZXJDbGFzc1xuICAgICAgPyB7IC4uLndpZGdldC5jbGFzc2VzIH1cbiAgICAgIDogeyAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzLCAuLi53aWRnZXQuY2xhc3NlcyB9O1xuICAgIHJldHVybiB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgJ2NhcmQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIFtrZWJhYkNhc2Uod2lkZ2V0LmNvbXBvbmVudElkIHx8IHdpZGdldC5uYW1lKV06IHRydWUsXG4gICAgICAuLi53aWRnZXRDbGFzc2VzXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9uZW50VG9XaWRnZXQoY2hpbGQ6IERhc2hib2FyZENoaWxkQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9taXQoY2hpbGQuZGF0YSwgWydjb21wb25lbnRUcmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCcsICd0cmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCddKSwgLy8gcmVtb3ZlIGxlZ2FjeVxuICAgICAgLi4uKHtcbiAgICAgICAgX3g6IGNoaWxkLngsXG4gICAgICAgIF95OiBjaGlsZC55LFxuICAgICAgICBfd2lkdGg6IGNoaWxkLndpZHRoLFxuICAgICAgICBfaGVpZ2h0OiBjaGlsZC5oZWlnaHRcbiAgICAgIH0gYXMgV2lkZ2V0KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFkZFJlcG9ydERhc2hib2FyZFNldHRpbmdzKCkge1xuICAgIHRoaXMuc2V0VGl0bGUgPSB0cnVlO1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLmNvbnRleHQ/Lm5hbWUgfHwgZ2V0dGV4dCgnTmV3IHJlcG9ydCcpO1xuICAgIHRoaXMuYnJlYWRjcnVtYlNldHRpbmdzID0ge1xuICAgICAgaWNvbjogJ3RoJyxcbiAgICAgIGxhYmVsOiAnUmVwb3J0cycsXG4gICAgICBwYXRoOiAncmVwb3J0cydcbiAgICB9O1xuICAgIHRoaXMuY2FuRGVsZXRlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNhbkNvcHlEYXNoYm9hcmQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmhhc1Blcm1pc3Npb25zVG9Db3B5RGFzaGJvYXJkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxEYXNoYm9hcmRDaGlsZHJlbkFyZVZhbGlkID0gZXZlcnkodGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuLCBjaGlsZCA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBjaGlsZC5jb25maWcgfHwge307XG4gICAgICBjb25zdCBkYXRhUG9pbnRzID0gY29uZmlnLmRhdGFwb2ludHMgfHwgW107XG4gICAgICByZXR1cm4gIShcbiAgICAgICAgKGNvbmZpZy5kZXZpY2UgJiYgY29uZmlnLmRldmljZS5pZCAhPT0gdGhpcy5jb250ZXh0LmlkKSB8fFxuICAgICAgICBzb21lKGRhdGFQb2ludHMsIGRhdGFQb2ludCA9PiBkYXRhUG9pbnQuX190YXJnZXQ/LmlkICE9PSB0aGlzLmNvbnRleHQuaWQpXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBhbGxEYXNoYm9hcmRDaGlsZHJlbkFyZVZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXROZXdTdGF0ZShcbiAgICBzdGF0ZTogUGljazxEYXNoYm9hcmRDaGlsZHJlblN0YXRlLCAnbmFtZScgfCAnY2hpbGRyZW4nPixcbiAgICBkZXNjcmlwdGlvblByb3A6IGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddLFxuICAgIHdpZGdldHNDaGFuZ2VkOiBXaWRnZXRbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0RGVzY3JpcHRpb25Gb3JOZXdTdGF0ZShkZXNjcmlwdGlvblByb3AsIHdpZGdldHNDaGFuZ2VkKTtcbiAgICB0aGlzLmVkaXRNb2RlU2VydmljZS5uZXdTdGF0ZSh7IC4uLnN0YXRlLCBjaGFuZ2VIaXN0b3J5OiBkZXNjcmlwdGlvbiB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVzY3JpcHRpb25Gb3JOZXdTdGF0ZShcbiAgICBkZXNjcmlwdGlvblByb3A6IGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddLFxuICAgIHdpZGdldHNDaGFuZ2VkOiBXaWRnZXRbXVxuICApOiBEYXNoYm9hcmRDaGlsZHJlblN0YXRlWydjaGFuZ2VIaXN0b3J5J10ge1xuICAgIGNvbnN0IGNoYW5nZUhpc3RvcnkgPSB0aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKS5jaGFuZ2VIaXN0b3J5O1xuICAgIGlmICghY2hhbmdlSGlzdG9yeVtkZXNjcmlwdGlvblByb3BdKSB7XG4gICAgICBjaGFuZ2VIaXN0b3J5W2Rlc2NyaXB0aW9uUHJvcF0gPSB7fTtcbiAgICB9XG4gICAgd2lkZ2V0c0NoYW5nZWQuZm9yRWFjaCh3ID0+IHtcbiAgICAgIGlmIChkZXNjcmlwdGlvblByb3AgPT09ICdyZW1vdmVkJyAmJiBjaGFuZ2VIaXN0b3J5LmFkZGVkPy5bdy5pZF0pIHtcbiAgICAgICAgLy8gaWYgd2lkZ2V0IHdhcyBhZGRlZCBkdXJpbmcgY3VycmVudCBlZGl0IHNlc3Npb24gYW5kIHRoZW4gcmVtb3ZlZCwgaXQgc2hvdWxkIG5vdCBiZSBhdCBkZXNjcmlwdGlvbiBhdCBhbGxcbiAgICAgICAgZGVsZXRlIGNoYW5nZUhpc3RvcnkuYWRkZWRbdy5pZF07XG4gICAgICAgIGlmIChjaGFuZ2VIaXN0b3J5LmNvbmZpZz8uW3cuaWRdKSB7XG4gICAgICAgICAgZGVsZXRlIGNoYW5nZUhpc3RvcnkuY29uZmlnW3cuaWRdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VIaXN0b3J5LmFycmFuZ2VtZW50Py5bdy5pZF0pIHtcbiAgICAgICAgICBkZWxldGUgY2hhbmdlSGlzdG9yeT8uYXJyYW5nZW1lbnRbdy5pZF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIChkZXNjcmlwdGlvblByb3AgPT09ICdjb25maWcnIHx8IGRlc2NyaXB0aW9uUHJvcCA9PT0gJ2FycmFuZ2VtZW50JykgJiZcbiAgICAgICAgY2hhbmdlSGlzdG9yeS5hZGRlZD8uW3cuaWRdXG4gICAgICApIHtcbiAgICAgICAgLy8gaWYgd2lkZ2V0IHdhcyBhZGRlZCBhbmQgdGhlbiBtb2RpZmllZCBpbiBjdXJyZW50IGVkaXQgc2Vzc2lvbiwgaXQgc2hvdWxkIG9ubHkgYmUgaW5kaWNhdGVkIGFzIGFkZGVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFuZ2VIaXN0b3J5W2Rlc2NyaXB0aW9uUHJvcF1bdy5pZF0gPSB3O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNoYW5nZUhpc3Rvcnk7XG4gIH1cblxuICBwcml2YXRlIG1hcFN0YXRlVG9IaXN0b3J5RGVzY3JpcHRpb24oXG4gICAgZGVzY3JpcHRpb246IERhc2hib2FyZENoaWxkcmVuU3RhdGVbJ2NoYW5nZUhpc3RvcnknXVxuICApOiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSB7XG4gICAgY29uc3QgaGlzdG9yeURlc2NyaXB0aW9uOiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0aW9uKSkge1xuICAgICAgY29uc3Qgd2lkZ2V0cyA9IE9iamVjdC52YWx1ZXModmFsdWUpO1xuICAgICAgaWYgKCF3aWRnZXRzLmxlbmd0aCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGhpc3RvcnlEZXNjcmlwdGlvbltrZXldID0gT2JqZWN0LnZhbHVlcyh2YWx1ZSkubWFwKHdpZGdldCA9PiB3aWRnZXQudGl0bGUpO1xuICAgIH1cbiAgICByZXR1cm4gaGlzdG9yeURlc2NyaXB0aW9uO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlICpuZ0lmPVwidGl0bGVcIj5cbiAge3sgdGl0bGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICBbcHJpb3JpdHldPVwiMTAwMDBcIlxuICAqbmdJZj1cImRhc2hib2FyZD8uZGV2aWNlVHlwZSAmJiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLWNsZWFuIGJ0bi1saW5rXCJcbiAgICBwb3BvdmVyVGl0bGU9XCJ7eyAnRGFzaGJvYXJkIHRlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgIFtwb3BvdmVyXT1cImRhc2hib2FyZFR5cGVQb3BvdmVyUmVmXCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIHRleHQtMTJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGFzaGJvYXJkLXRlbXBsYXRlLW1hcmtlclwiPjwvc3Bhbj5cbiAgICAgIHt7IGRhc2hib2FyZFR5cGVMYWJlbCB8IHRyYW5zbGF0ZTogeyBkYXNoYm9hcmRUeXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH0gfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuICA8bmctdGVtcGxhdGUgI2Rhc2hib2FyZFR5cGVQb3BvdmVyUmVmPlxuICAgIDxkaXZcbiAgICAgIFtpbm5lckhUTUxdPVwiZGFzaGJvYXJkVHlwZVBvcG92ZXIgfCB0cmFuc2xhdGU6IHsgZGFzaGJvYXJkVHlwZTogZGFzaGJvYXJkLmRldmljZVR5cGVWYWx1ZSB9XCJcbiAgICA+PC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIFtwcmlvcml0eV09XCItMVwiXG4gICpuZ0lmPVwiZGVmYXVsdFdpZGdldHMubGVuZ3RoID4gMFwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVzZXQgd2lkZ2V0cycgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHB4LWV2ZW50PVwiUmVzZXQgZGFzaGJvYXJkXCJcbiAgICAoY2xpY2spPVwicmVzdG9yZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgd2lkZ2V0c0Rhc2hib2FyZD8uZWRpdE1vZGVcIlxuICAgIGRhdGEtY3k9XCJjb250ZXh0LWRhc2hib2FyZC0tYnV0dG9uLXJlc2V0LWRhc2hib2FyZFwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICBjOHlJY29uPVwicmVzZXRcIlxuICAgID48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJ2aXNpYmxlLXhzLWlubGluZSBoaWRkZW4tc20gdmlzaWJsZS1tZC1pbmxpbmUgdmlzaWJsZS1sZy1pbmxpbmVcIj5cbiAgICAgIHt7ICdSZXNldCB3aWRnZXRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscFxuICBzcmM9XCIvZG9jcy9jb2NrcGl0L3dvcmtpbmctd2l0aC1kYXNoYm9hcmRzLyN3b3JraW5nLXdpdGgtZGFzaGJvYXJkc1wiXG4gICpuZ0lmPVwic2hvd0NvbnRleHRIZWxwQnV0dG9uXCJcbj48L2M4eS1oZWxwPlxuXG48Yzh5LWRhc2hib2FyZC1kZXRhaWxcbiAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgW2lzUmVwb3J0XT1cImlzUmVwb3J0XCJcbiAgW2Rhc2hib2FyZF09XCJkYXNoYm9hcmRcIlxuICBbbW9dPVwibW9cIlxuICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgW2RldmljZVR5cGVdPVwiY29udGV4dD8udHlwZVwiXG4gIFtoaWRlQXZhaWxhYmlsaXR5XT1cImhpZGVBdmFpbGFiaWxpdHlcIlxuICAoZGFzaGJvYXJkU2F2ZWQpPVwicmVsb2FkRGFzaGJvYXJkKCRldmVudClcIlxuICAocHJldmlld0NoYW5nZWQpPVwiZGFzaGJvYXJkUHJldmlldygkZXZlbnQpXCJcbj48L2M4eS1kYXNoYm9hcmQtZGV0YWlsPlxuXG48Yzh5LXdpZGdldHMtZGFzaGJvYXJkXG4gIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICBbY29udGV4dERhc2hib2FyZF09XCJkYXNoYm9hcmRcIlxuICBbd2lkZ2V0c109XCJ3aWRnZXRzXCJcbiAgW2lzQ29weURpc2FibGVkXT1cImlzQ29weURpc2FibGVkXCJcbiAgW3NldHRpbmdzXT1cIntcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZyxcbiAgICBpc0Rpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBjYW5EZWxldGU6IGNhbkRlbGV0ZSAmJiAhIWRhc2hib2FyZCxcbiAgICB0cmFuc2xhdGVXaWRnZXRUaXRsZTogZGFzaGJvYXJkPy50cmFuc2xhdGVXaWRnZXRUaXRsZSA/PyB0cmFuc2xhdGVXaWRnZXRUaXRsZSxcbiAgICBhbGxvd0Z1bGxzY3JlZW46IG1vZHVsZUNvbmZpZy5hbGxvd0Z1bGxzY3JlZW4sXG4gICAgdGl0bGU6IHNldFRpdGxlID8gZGFzaGJvYXJkPy5uYW1lIHx8IHRpdGxlIDogdW5kZWZpbmVkLFxuICAgIHdpZGdldE1hcmdpbjogZGFzaGJvYXJkPy53aWRnZXRNYXJnaW4sXG4gICAgY2FuQ29weTogY2FuQ29weSAmJiAhIWRhc2hib2FyZCxcbiAgICBkZWZhdWx0V2lkdGg6IGRhc2hib2FyZD8uY29sdW1ucyA+PSAyNCA/IDggOiA0LFxuICAgIGNvbHVtbnM6IGRhc2hib2FyZD8uY29sdW1ucyB8fCAxMlxuICB9XCJcbiAgW2JyZWFkY3J1bWJdPVwiYnJlYWRjcnVtYlNldHRpbmdzXCJcbiAgW2VkaXRNb2RlQnV0dG9uc109XCJ7XG4gICAgdW5kb0J1dHRvbkRpc2FibGVkOiBlZGl0TW9kZVNlcnZpY2UudW5kb0J1dHRvbkRpc2FibGVkLFxuICAgIGNoYW5nZVRvVW5kb05hbWU6IGVkaXRNb2RlU2VydmljZS5jaGFuZ2VUb1VuZG9OYW1lLFxuICAgIHJlZG9CdXR0b25EaXNhYmxlZDogIWVkaXRNb2RlU2VydmljZS5yZWRvU3RhY2tMYXN0SXRlbSxcbiAgICBjaGFuZ2VUb1JlZG9OYW1lOiBlZGl0TW9kZVNlcnZpY2UucmVkb1N0YWNrTGFzdEl0ZW0/Lm5hbWVcbiAgfVwiXG4gIChvbkNoYW5nZURhc2hib2FyZCk9XCJwb3NpdGlvbk9yV2lkZ2V0RGltZW5zaW9uQ2hhbmdlKCRldmVudClcIlxuICAob25BZGRXaWRnZXQpPVwiYWRkV2lkZ2V0KClcIlxuICAob25FZGl0V2lkZ2V0KT1cImVkaXRXaWRnZXQoJGV2ZW50KVwiXG4gIChvbkRlbGV0ZVdpZGdldCk9XCJkZWxldGVXaWRnZXQoJGV2ZW50KVwiXG4gIChvblNhdmVEYXNoYm9hcmQpPVwic2F2ZVdpZGdldHNUb0Rhc2hib2FyZCgpXCJcbiAgKG9uQ2FuY2VsRGFzaGJvYXJkKT1cImNhbmNlbEVkaXRNb2RlKClcIlxuICAocmV2ZXJ0Q2hhbmdlKT1cInJldmVydENoYW5nZSgkZXZlbnQpXCJcbiAgKG9uQ2hhbmdlU3RhcnQpPVwiYWRkRGFzaGJvYXJkQ2xhc3NUb0JvZHkoKVwiXG4gIChvbkNoYW5nZUVuZCk9XCJyZW1vdmVEYXNoYm9hcmRDbGFzc0Zyb21Cb2R5KClcIlxuICAob25FZGl0RGFzaGJvYXJkKT1cImRhc2hib2FyZERldGFpbHMuc2hvdyh0cnVlKVwiXG4gIChvbkNvcHlEYXNoYm9hcmQpPVwiY29weURhc2hib2FyZCgpXCJcbiAgKG9uRGVsZXRlRGFzaGJvYXJkKT1cImRlbGV0ZURhc2hib2FyZCgpXCJcbj48L2M4eS13aWRnZXRzLWRhc2hib2FyZD5cbiJdfQ==
|
|
700
|
+
}], convertStringToHash: [] } });
|
|
701
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFlBQVksRUFHWixvQkFBb0IsRUFHcEIsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUVaLE1BQU0sRUFHTix5QkFBeUIsRUFDMUIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBRUwsd0JBQXdCLEVBSXhCLDZCQUE2QixFQUc3QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3RCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFx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RSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBOENoRCxtQkFBbUI7c0JBRHhCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaXBCakMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFjdGlvbkJhclNlcnZpY2UsXG4gIEFsZXJ0U2VydmljZSxcbiAgQnJlYWRjcnVtYkl0ZW0sXG4gIERhc2hib2FyZENoYW5nZSxcbiAgRGFzaGJvYXJkQ2hpbGRDaGFuZ2UsXG4gIERhc2hib2FyZENoaWxkQ29tcG9uZW50LFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgbWVtb2l6ZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBSZXZlcnRDaGFuZ2VUeXBlLFxuICBTdGF0dXMsXG4gIFdpZGdldCxcbiAgV2lkZ2V0Q2hhbmdlLFxuICBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBldmVyeSwgZmluZEluZGV4LCBrZWJhYkNhc2UsIGtleUJ5LCBvbWl0LCBzb21lIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENhbkRlYWN0aXZhdGVDb21wb25lbnQsXG4gIENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRyxcbiAgQ29udGV4dERhc2hib2FyZCxcbiAgQ29udGV4dERhc2hib2FyZENvbmZpZyxcbiAgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsXG4gIERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLFxuICBEYXNoYm9hcmRDaGlsZHJlblN0YXRlLFxuICBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb24sXG4gIFBST0RVQ1RfRVhQRVJJRU5DRSxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmQtZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1jb25maWcuY29tcG9uZW50JztcbmltcG9ydCB7IFdpZGdldFNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEVkaXRNb2RlU2VydmljZSB9IGZyb20gJy4vbWVtZW50by9kYXNoYm9hcmQtZWRpdC1tb2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZGFzaGJvYXJkIGlzIGEgZGFzaGJvYXJkIHdoaWNoIHJlc29sdmVzIGl0IGRhdGEgZnJvbSB0aGUgY3VycmVudCBjb250ZXh0IChkZXZpY2Ugb3IgZ3JvdXApXG4gKiBpdCBpcyBkaXNwbGF5ZWQgb24uIEl0IHVzdWFsbHkgdXNlcyB0aGUgcm91dGUuZGF0YSBmb3IgaXQsIGJ1dCB5b3UgY2FuIHBhc3NcbiAqIGEgZGlmZmVyZW50IG1hbmFnZWRPYmplY3QgdG8gdGhlIFttb10gaW5wdXQgcGFyYW1ldGVyIHRvIGNoYW5nZSB0aGF0IGJlaGF2aW9yLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY29udGV4dC1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgc3R5bGU6IGBcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGAsXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQgYzh5LWdyaWQtZGFzaGJvYXJkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHREYXNoYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ2FuRGVhY3RpdmF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgY2hpbGRyZW5DbGFzc2VzID0gJyc7XG4gIEBJbnB1dCgpXG4gIGNvbnRleHQ6IGFueTtcbiAgQElucHV0KClcbiAgc2V0VGl0bGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBkZWZhdWx0V2lkZ2V0czogV2lkZ2V0W10gPSBbXTtcbiAgQElucHV0KClcbiAgY2FuQ29weSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGNhbkRlbGV0ZSA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGJyZWFkY3J1bWJTZXR0aW5nczogQnJlYWRjcnVtYkl0ZW07XG4gIEBJbnB1dCgpXG4gIHNob3dDb250ZXh0SGVscEJ1dHRvbiA9IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHRyYW5zbGF0ZSB3aWRnZXQgdGl0bGVzLiBIb3dldmVyLCBkYXNoYm9hcmQncyBvd24gc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlLiBJdCBkb2VzIG5vdCBvdmVycmlkZSBkYXNoYm9hcmQncyBzZXR0aW5nICovXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBib29sZWFuO1xuICAvKipcbiAgICogSGlkZXMgZGFzaGJvYXJkIGF2YWlsYWJpbGl0eSBzZWxlY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBoaWRlQXZhaWxhYmlsaXR5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGNsYXNzID0gJyc7XG5cbiAgQFZpZXdDaGlsZChEYXNoYm9hcmREZXRhaWxDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGRhc2hib2FyZERldGFpbHM6IERhc2hib2FyZERldGFpbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB3aWRnZXRzRGFzaGJvYXJkOiBXaWRnZXRzRGFzaGJvYXJkQ29tcG9uZW50O1xuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCB8fCAhdGhpcy5kYXNoYm9hcmREZXRhaWxzPy5pc0NvbGxhcHNlZDtcbiAgfVxuXG4gIHdpZGdldHM6IFdpZGdldFtdID0gW107XG4gIG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdDtcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICB0aXRsZTogc3RyaW5nO1xuICBpc0NvcHlEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNSZXBvcnQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRhc2hib2FyZFR5cGVMYWJlbCA9IGdldHRleHQoJ0Rhc2hib2FyZCBmb3IgXCJ7eyBkYXNoYm9hcmRUeXBlIH19XCInKTtcbiAgcmVhZG9ubHkgZGFzaGJvYXJkVHlwZVBvcG92ZXIgPSBnZXR0ZXh0KGBcbiAgVGhlIGxheW91dCBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGlzIGRhc2hib2FyZCBpcyB1c2VkIGJ5IGFsbCBvdGhlciBhc3NldHMgb2YgbW9kZWwgdHlwZVxuICA8c3Ryb25nPnt7IGRhc2hib2FyZFR5cGUgfX08L3N0cm9uZz4uIEFueSBjaGFuZ2VzIG1hZGUgdG8gdGhpcyBkYXNoYm9hcmQgaW5zdGFuY2Ugd2lsbCBiZSBhcHBsaWVkIHRvIGFsbFxuICBvdGhlciBpbnN0YW5jZXMuYCk7XG4gIHByaXZhdGUgZGF0YVN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGhhc1Blcm1pc3Npb25Ub0VkaXREYXNoYm9hcmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY29udGV4dERhc2hib2FyZFNlcnZpY2U6IENvbnRleHREYXNoYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChDT05URVhUX0RBU0hCT0FSRF9DT05GSUcpIHB1YmxpYyBtb2R1bGVDb25maWc6IENvbnRleHREYXNoYm9hcmRDb25maWcsXG4gICAgcHJpdmF0ZSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9uQmFyU2VydmljZTogQWN0aW9uQmFyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBlZGl0TW9kZVNlcnZpY2U6IERhc2hib2FyZEVkaXRNb2RlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgIHRoaXMubG9hZENvbnRleHREYXNoYm9hcmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2FkTmFtZWREYXNoYm9hcmQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbJyRldmVudCddKVxuICBhc3luYyBiZWZvcmVVbmxvYWRIYW5kbGVyKCRldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpIHtcbiAgICBjb25zdCBjYW5EZWFjdGl2YXRlID0gYXdhaXQgdGhpcy5jYW5EZWFjdGl2YXRlKHRydWUpO1xuICAgIGlmICghY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgJGV2ZW50LnJldHVyblZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgY3VycmVudCBjb250ZXh0IHRvIHRoZSB3aWRnZXRcbiAgICogQHBhcmFtIHdpZGdldCBUaGUgd2lkZ2V0IHRvIGFwcGx5IHRoZSBjb250ZXh0IHRvLlxuICAgKi9cbiAgYXBwbHlEZXZpY2VUYXJnZXQod2lkZ2V0KSB7XG4gICAgaWYgKHdpZGdldC5jb25maWcuZGV2aWNlKSB7XG4gICAgICB3aWRnZXQuY29uZmlnLmRldmljZSA9IHsgaWQ6IHRoaXMuY29udGV4dC5pZCwgbmFtZTogdGhpcy5jb250ZXh0Lm5hbWUgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgcm91dGUgbGlzdGVuZXIuXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhU3ViKSB7XG4gICAgICB0aGlzLmRhdGFTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEd1YXJkcyBjb21wb25lbnQgZnJvbSB1bmludGVuZGVkIG5hdmlnYXRpb24gYXdheSBvciBjbG9zaW5nIHRhYiB3aXRob3V0IHNhdmluZyBjaGFuZ2VzLlxuICAgKiBOYXZpZ2F0aW9uIGNvbnRpbnVlcyBpZiB0cnVlIGlzIHJldHVybmVkLCBhbmQgbmF2aWdhdGlvbiBpcyBjYW5jZWxsZWQgaWYgcmV0dXJuZWQgdmFsdWUgaXMgZmFsc2UuXG4gICAqIEBwYXJhbSBvbWl0Q29uZmlybSBPbWl0cyBjb25maXJtIGNhbGxzIGluc2lkZSBtZXRob2QgYm9keSAod2l0aG91dCB0aGlzIHBhcmFtLCB3aGVuIG1ldGhvZCBpcyB1c2VkIGluXG4gICAqIG9uICdiZWZvcmV1bmxvYWQnIGV2ZW50IGhhbmRsZXIsIGVycm9yIGlzIHRocm93biBpbiBjb25zb2xlIGJlY2F1c2UgY29uZmlybSBpcyBibG9ja2VkIGJ5IGJyb3dzZXIgYW55d2F5IGFuZCByZXR1cm5zIGZhbHNlKVxuICAgKi9cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShvbWl0Q29uZmlybSA9IGZhbHNlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2FuRGVhY3RpdmF0ZSA9XG4gICAgICAoYXdhaXQgdGhpcy5kYXNoYm9hcmREZXRhaWxzLmNhbkRlYWN0aXZhdGUob21pdENvbmZpcm0pKSAmJlxuICAgICAgKGF3YWl0IHRoaXMud2lkZ2V0c0Rhc2hib2FyZC5jYW5EZWFjdGl2YXRlKG9taXRDb25maXJtKSk7XG5cbiAgICAvLyBOZWVkZWQgaW4gb3JkZXIgdG8gcmVzZXQgZWRpdCBtb2RlLCBvdGhlcndpc2Ugd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBkYXNoYm9hcmRzLCB0aGUgZWRpdCBtb2RlIGlzIHN0aWxsIGVuYWJsZWQuXG4gICAgaWYgKGNhbkRlYWN0aXZhdGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2FuY2VsRWRpdE1vZGUodHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBjYW5EZWFjdGl2YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBkYXNoYm9hcmQgd2lkZ2V0cyB0byB0aGUgZGVmYXVsdCB3aWRnZXRzLlxuICAgKi9cbiAgYXN5bmMgcmVzdG9yZSgpIHtcbiAgICBjb25zdCBtZXNnID0gZ2V0dGV4dChcbiAgICAgICdZb3UgYXJlIGFib3V0IHRvIHJlc2V0IHRoZSB3aWRnZXRzIG9mIHRoaXMgZGFzaGJvYXJkLiBBbGwgY2hhbmdlcyB0byB0aGUgZGFzaGJvYXJkIHdpZGdldHMgd2lsbCBnZXQgbG9zdCBhbmQgY2Fubm90IGJlIHJlY292ZXJlZC4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm1vZGFsLmNvbmZpcm0oZ2V0dGV4dCgnUmVzZXQgd2lkZ2V0cycpLCBtZXNnLCBTdGF0dXMuV0FSTklORywge1xuICAgICAgICBvazogZ2V0dGV4dCgnUmVzZXRgZGFzaGJvYXJkYCcpLFxuICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5tYXBXaWRnZXRzKHRoaXMuZGVmYXVsdFdpZGdldHMpO1xuICAgICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgY2hhbmdlVHlwZTogJ3Jlc2V0J1xuICAgICAgfTtcbiAgICAgIGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UudXBkYXRlKHRoaXMubW8pO1xuICAgICAgYXdhaXQgdGhpcy5vbkxvYWQoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBNZXRob2QgY2FsbGVkIG9uIGV2ZXJ5IHdpZGdldHMgZGltZW5zaW9ucyBvciBwb3NpdGlvbiBjaGFuZ2UgYnV0IGFsc28gZm9yIGFkZGluZyBuZXcgd2lkZ2V0IChiZWNhdXNlIGFkZGluZ1xuICAgKiB3aWRnZXQgY2F1c2VzIGxheW91dCBjaGFuZ2VzKS4gSXQgcmVjb2duaXplcyB3aGF0IHR5cGUgb2YgY2hhbmdlIGhhcyBiZWVuIGRvbmUgYW5kIHVwZGF0ZXMgY3VycmVudCB3aWRnZXRzIHN0YXRlXG4gICAqIGFjY29yZGluZ2x5LlxuICAgKiBAcGFyYW0gY2hpbGQgQ2hhbmdlIG9iamVjdC5cbiAgICovXG4gIHBvc2l0aW9uT3JXaWRnZXREaW1lbnNpb25DaGFuZ2UoY2hpbGQ6IERhc2hib2FyZENoaWxkQ2hhbmdlIHwgRGFzaGJvYXJkQ2hhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UuZ2V0Q3VycmVudFN0YXRlKCk/LmNoaWxkcmVuIHx8IHt9O1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10gPVxuICAgICAgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoID09PSBPYmplY3QudmFsdWVzKGN1cnJlbnRTdGF0ZSkubGVuZ3RoID8gJ2FycmFuZ2VtZW50JyA6ICdhZGRlZCc7XG4gICAgbGV0IGNoYW5nZU5hbWU6IERhc2hib2FyZENoaWxkcmVuU3RhdGVbJ25hbWUnXTtcbiAgICBsZXQgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdO1xuICAgIGlmIChkZXNjcmlwdGlvblByb3AgPT09ICdhZGRlZCcpIHtcbiAgICAgIGNoYW5nZU5hbWUgPSBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRS5hZGRlZDtcbiAgICAgIGNvbnN0IGFkZGVkV2lkZ2V0ID0gY2hpbGQuY2hpbGRyZW4uZmluZChjID0+ICFjdXJyZW50U3RhdGVbYy5kYXRhLmlkXSk7XG4gICAgICB3aWRnZXRzQ2hhbmdlZCA9IFthZGRlZFdpZGdldC5kYXRhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hhbmdlTmFtZSA9IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLmFycmFuZ2VtZW50O1xuICAgICAgd2lkZ2V0c0NoYW5nZWQgPSBjaGlsZC5jaGlsZHJlblxuICAgICAgICAubWFwKGMgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhc3RTdGF0ZUNoaWxkID0gY3VycmVudFN0YXRlW2MuZGF0YS5pZF07XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYy54ICE9IGxhc3RTdGF0ZUNoaWxkLl94IHx8XG4gICAgICAgICAgICBjLnkgIT0gbGFzdFN0YXRlQ2hpbGQuX3kgfHxcbiAgICAgICAgICAgIGMud2lkdGggIT0gbGFzdFN0YXRlQ2hpbGQuX3dpZHRoIHx8XG4gICAgICAgICAgICBjLmhlaWdodCAhPSBsYXN0U3RhdGVDaGlsZC5faGVpZ2h0XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gYy5kYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURhc2hib2FyZENoaWxkcmVuKGNoaWxkLCBjaGFuZ2VOYW1lLCBkZXNjcmlwdGlvblByb3AsIHdpZGdldHNDaGFuZ2VkKTtcbiAgfVxuXG4gIGFzeW5jIHJldmVydENoYW5nZShyZXZlcnRUeXBlOiBSZXZlcnRDaGFuZ2VUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGRhc2hib2FyZENoaWxkcmVuOiBDb250ZXh0RGFzaGJvYXJkWydjaGlsZHJlbiddO1xuICAgIGlmIChyZXZlcnRUeXBlID09PSAndW5kbycpIHtcbiAgICAgIGRhc2hib2FyZENoaWxkcmVuID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UudW5kbygpLmNoaWxkcmVuO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXNoYm9hcmRDaGlsZHJlbiA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLnJlZG8oKS5jaGlsZHJlbjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5zZXRXaWRnZXRzKGRhc2hib2FyZENoaWxkcmVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBkYXNoYm9hcmRzIGNoaWxkcmVuJ3MuIFVzZWZ1bCBmb3IgcG9zaXRpb24gY2hhbmdlcyBvbiB0aGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gY2hpbGQgVGhlIGNoaWxkIHRvIGNoYW5nZS5cbiAgICogQHBhcmFtIGNoYW5nZU5hbWUgTmFtZSBvZiB0aGUgY2hhbmdlIHRvIGluZGljYXRlIGl0IG9uIHVuZG8vcmVkbyBidXR0b24uXG4gICAqIEBwYXJhbSBkZXNjcmlwdGlvblByb3AgUHJvcGVydHkgdG8gYWRkIHRvIGRhc2hib2FyZCBjaGFuZ2UgaGlzdG9yeS5cbiAgICogQHBhcmFtIHdpZGdldHNDaGFuZ2VkIExpc3Qgb2YgY2hhbmdlZCB3aWRnZXRzLlxuICAgKi9cbiAgdXBkYXRlRGFzaGJvYXJkQ2hpbGRyZW4oXG4gICAgY2hpbGQ6IERhc2hib2FyZENoaWxkQ2hhbmdlIHwgRGFzaGJvYXJkQ2hhbmdlLFxuICAgIGNoYW5nZU5hbWU6IERhc2hib2FyZENoaWxkcmVuU3RhdGVbJ25hbWUnXSxcbiAgICBkZXNjcmlwdGlvblByb3A6IGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddLFxuICAgIHdpZGdldHNDaGFuZ2VkOiBXaWRnZXRbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBjaGlsZDtcbiAgICBjb25zdCBtYXBwZWRDaGlsZHJlbjogeyBbaWQ6IHN0cmluZ106IFdpZGdldCB9ID0ga2V5QnkoXG4gICAgICBjaGlsZHJlbi5tYXAoYyA9PiB0aGlzLmNvbXBvbmVudFRvV2lkZ2V0KGMpKSxcbiAgICAgICdpZCdcbiAgICApO1xuICAgIHRoaXMuc2V0TmV3U3RhdGUoXG4gICAgICB7IG5hbWU6IGNoYW5nZU5hbWUsIGNoaWxkcmVuOiBtYXBwZWRDaGlsZHJlbiB9LFxuICAgICAgZGVzY3JpcHRpb25Qcm9wLFxuICAgICAgd2lkZ2V0c0NoYW5nZWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcGllcyB0aGUgZGFzaGJvYXJkIGFuZCBjdXJyZW50IGNvbnRleHQgdG8gYSBjbGlwYm9hcmQuXG4gICAqL1xuICBhc3luYyBjb3B5RGFzaGJvYXJkKCkge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0ID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QuZGF0YT8uY29udGV4dDtcblxuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY29weUNsaXBib2FyZCA9IHtcbiAgICAgIGRhc2hib2FyZElkOiB0aGlzLm1vLmlkLFxuICAgICAgZGFzaGJvYXJkOiBjbG9uZURlZXAodGhpcy5tby5jOHlfRGFzaGJvYXJkKSxcbiAgICAgIGNvbnRleHQ6IGNsb25lRGVlcCh7XG4gICAgICAgIGNvbnRleHQ6IHZpZXdDb250ZXh0LFxuICAgICAgICBjb250ZXh0RGF0YTogdGhpcy5jb250ZXh0XG4gICAgICB9KVxuICAgIH07XG5cbiAgICBpZiAodmlld0NvbnRleHQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHZpZXdDb250ZXh0LnNwbGl0KCcvJykuc2hpZnQoKTtcbiAgICAgIGNvbnN0IG1zZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAnRGFzaGJvYXJkIGNvcGllZC4gTmF2aWdhdGUgdG8gdGhlIGRlc2lyZWQge3sgY3R4IH19IGFuZCBzZWxlY3QgXCJQYXN0ZSBkYXNoYm9hcmRcIicsXG4gICAgICAgIHsgY3R4IH1cbiAgICAgICk7XG4gICAgICB0aGlzLmFsZXJ0LnN1Y2Nlc3MobXNnKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25CYXJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGNvbXBsZXRlIGRhc2hib2FyZCBhbmQgbmF2aWdhdGUgYXdheS5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZURhc2hib2FyZCgpIHtcbiAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmRlbGV0ZSh0aGlzLm1vKTtcbiAgICBpZiAodGhpcy5yb3V0ZS5wYXJlbnQpIHtcbiAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5yb3V0ZS5wYXJlbnQuc25hcHNob3QudXJsLm1hcChzZWdtZW50ID0+IHNlZ21lbnQucGF0aCkuam9pbignLycpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZSk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMub25EZWxldGVHU0V2ZW50KCk7XG4gIH1cblxuICBnZXQgaXNEZXZpY2VUeXBlRGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGFzaGJvYXJkPy5kZXZpY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVkaXRzIGEgd2lkZ2V0IG9uIHRoZSBkYXNoYm9hcmQuXG4gICAqIEBwYXJhbSBjaGFuZ2UgVGhlIHdpZGdldCBjaGFuZ2UgZXZlbnQuXG4gICAqL1xuICBhc3luYyBlZGl0V2lkZ2V0KGNoYW5nZTogV2lkZ2V0Q2hhbmdlKSB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBjaGFuZ2Uuc291cmNlO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZS5nZXRXaWRnZXREZWZpbml0aW9uKFxuICAgICAgY2hhbmdlLndpZGdldC5uYW1lIHx8IGNoYW5nZS53aWRnZXQuY29tcG9uZW50SWRcbiAgICApO1xuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICB0aGlzLmFkZFdpZGdldCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmFkZFdpZGdldCh7XG4gICAgICAuLi5jb21wb25lbnQsXG4gICAgICBkYXRhOiB7IC4uLmNvbXBvbmVudC5kYXRhLCAuLi5jaGFuZ2Uud2lkZ2V0LCBfeDogeCwgX3k6IHksIF93aWR0aDogd2lkdGgsIF9oZWlnaHQ6IGhlaWdodCB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHdpZGdldCB0byB0aGUgZGFzaGJvYXJkLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgRGVmaW5lIGEgc2VsZWN0ZWQgY29tcG9uZW50IHRvIHN3aXRjaCB0byBlZGl0IG1vZGUgZGlyZWN0bHkuXG4gICAqL1xuICBhc3luYyBhZGRXaWRnZXQoc2VsZWN0ZWQ/OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHBhcnRpYWxDbG9uZVNlbGVjdGVkID0gc2VsZWN0ZWRcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnNlbGVjdGVkLFxuICAgICAgICAgIGRhdGE6IGNsb25lRGVlcChzZWxlY3RlZC5kYXRhKVxuICAgICAgICB9XG4gICAgICA6IHNlbGVjdGVkO1xuXG4gICAgY29uc3QgYWN0aXZlQ29udGV4dCA9IHRoaXMuY29udGV4dC5jb250ZXh0RGF0YSA/IHRoaXMuY29udGV4dC5jb250ZXh0RGF0YSA6IHRoaXMuY29udGV4dDtcbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBhcnRpYWw8V2lkZ2V0Q29uZmlnQ29tcG9uZW50PiA9IHtcbiAgICAgIG1vOiB0aGlzLm1vLFxuICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LmM4eV9SZXBvcnQgPyB7fSA6IGFjdGl2ZUNvbnRleHQsXG4gICAgICBzZWxlY3RlZDogcGFydGlhbENsb25lU2VsZWN0ZWRcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhXaWRnZXRDb25maWdDb21wb25lbnQsIHtcbiAgICAgIGNsYXNzOiAnbW9kYWwtbGcnLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZSxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2VcbiAgICB9KS5jb250ZW50IGFzIFdpZGdldENvbmZpZ0NvbXBvbmVudDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBuZXdXaWRnZXQgPSBhd2FpdCBtb2RhbC5yZXN1bHQ7XG4gICAgICBpZiAoIXRoaXMubW8uYzh5X0Rhc2hib2FyZC5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSB7fTtcbiAgICAgIH1cbiAgICAgIG5ld1dpZGdldC5jbGFzc2VzID0gdGhpcy5tZXJnZVdpZGdldENsYXNzZXMobmV3V2lkZ2V0KTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlV2lkZ2V0KG5ld1dpZGdldCk7XG4gICAgICAvLyBOZXcgc3RhdGUgaW4gZWRpdCBtb2RlIGlzIGFkZGVkIG9ubHkgZm9yIHdpZGdldCB1cGRhdGUuIFdoZW4gYWRkaW5nIHdpZGdldCwgbGF5b3V0IGNoYW5nZSBpcyBhbHdheXMgdHJpZ2dlcmVkLFxuICAgICAgLy8gc28gaXQncyBlYXNpZXIgdG8gc2V0IG5ldyBzdGF0ZSBvbiBsYXlvdXQgY2hhbmdlIG9ubHlcbiAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHtcbiAgICAgICAgICAuLi50aGlzLmVkaXRNb2RlU2VydmljZS5nZXRDdXJyZW50U3RhdGUoKS5jaGlsZHJlbixcbiAgICAgICAgICBbbmV3V2lkZ2V0LmlkXTogbmV3V2lkZ2V0XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0TmV3U3RhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUuY29uZmlnLFxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICB9LFxuICAgICAgICAgICdjb25maWcnLFxuICAgICAgICAgIFtuZXdXaWRnZXRdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBtb2RhbC5jbG9zZSgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVXaWRnZXRzVG9EYXNoYm9hcmQoKSB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5lZGl0TW9kZVNlcnZpY2UuZ2V0Q3VycmVudFN0YXRlKCk7XG4gICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0gY3VycmVudFN0YXRlLmNoaWxkcmVuO1xuXG4gICAgdGhpcy5tby5jOHlfRGFzaGJvYXJkLmhpc3RvcnlEZXNjcmlwdGlvbiA9IHtcbiAgICAgIGNoYW5nZVR5cGU6ICd1cGRhdGUnLFxuICAgICAgd2lkZ2V0Q2hhbmdlczogdGhpcy5tYXBTdGF0ZVRvSGlzdG9yeURlc2NyaXB0aW9uKGN1cnJlbnRTdGF0ZS5jaGFuZ2VIaXN0b3J5KVxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS51cGRhdGUodGhpcy5tbyk7XG4gICAgdGhpcy5lZGl0TW9kZVNlcnZpY2UucmVzZXQoKTtcbiAgICB0aGlzLmVkaXRNb2RlU2VydmljZS5pbml0KHtcbiAgICAgIG5hbWU6IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FLmluaXRpYWwsXG4gICAgICBjaGlsZHJlbjogdGhpcy5tby5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuLFxuICAgICAgY2hhbmdlSGlzdG9yeToge31cbiAgICB9KTtcbiAgICB0aGlzLmlzQ29weURpc2FibGVkID0gIXRoaXMuY2FuQ29weURhc2hib2FyZCgpO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsRWRpdE1vZGUob25EZWFjdGl2YXRlID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXNoYm9hcmRDaGlsZHJlbiA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLnJlc2V0KCk7XG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZC5oaXN0b3J5RGVzY3JpcHRpb24gPSB7fTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRzRGFzaGJvYXJkLmVkaXRNb2RlID0gZmFsc2U7XG4gICAgaWYgKCFvbkRlYWN0aXZhdGUpIHtcbiAgICAgIC8vIHdoZW4gc2V0V2lkZ2V0cyBpcyBjYWxsZWQgZHVyaW5nIG5hdmlnYXRpb24gZnJvbSBkZXZpY2UgdG8gZGV2aWNlLCBuYXZpZ2F0aW9uIGZhaWxzXG4gICAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4uY2hpbGRyZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgd2lkZ2V0IG9yIGFkZHMgYSBuZXcgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb25cbiAgICogdGhlIGRhc2hib2FyZC5cbiAgICogQHBhcmFtIHdpZGdldCBUaGUgbmV3IHdpZGdldFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlV2lkZ2V0KHdpZGdldCkge1xuICAgIGNvbnN0IGluZGV4ID0gZmluZEluZGV4KHRoaXMud2lkZ2V0cywgeyBpZDogd2lkZ2V0LmlkIH0pO1xuICAgIGNvbnN0IGlzTmV3ID0gaW5kZXggPT09IC0xO1xuICAgIGNvbnN0IG1hcHBlZFdpZGdldCA9IGF3YWl0IHRoaXMud2lkZ2V0U2VydmljZS5tYXBMZWdhY3kod2lkZ2V0KTtcbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5wdXNoKG1hcHBlZFdpZGdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2lkZ2V0cy5zcGxpY2UoaW5kZXgsIDEsIG1hcHBlZFdpZGdldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSB3aWRnZXQgYW5kIHJlYXJyYW5nZXMgdGhlIHJlbWFpbmluZyBvbmVzXG4gICAqIGlmIG5lY2Vzc2FyeS5cbiAgICogQHBhcmFtIGNoYW5nZSBUaGUgY2hhbmdlIGV2ZW50LlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlV2lkZ2V0KGNoYW5nZTogV2lkZ2V0Q2hhbmdlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgd2lkZ2V0LCBzb3VyY2UgfSA9IGNoYW5nZTtcbiAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLndpZGdldHMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gd2lkZ2V0LmlkKTtcbiAgICAgIHRoaXMud2lkZ2V0cy5zcGxpY2UodGhpcy53aWRnZXRzLmluZGV4T2YocmVtb3ZlZCksIDEpO1xuXG4gICAgICBjb25zdCB7IGRhc2hib2FyZCB9ID0gc291cmNlO1xuICAgICAgZGFzaGJvYXJkLmNoaWxkcmVuID0gZGFzaGJvYXJkLmNoaWxkcmVuLmZpbHRlcihjID0+IGMuZGF0YS5pZCAhPT0gd2lkZ2V0LmlkKTtcblxuICAgICAgLy8gdXNpbmcgc2V0VGltZW91dCB0byBnaXZlIHRoZSBjb21wb25lbnQgdGhlIGNoYW5jZSB0byByZW1vdmUgaXQuXG4gICAgICBjb25zdCBzbGVlcCA9IHRpbWVvdXQgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpKTtcbiAgICAgIGF3YWl0IHNsZWVwKDApO1xuXG4gICAgICBjb25zdCBjaGlsZCA9IG5ldyBEYXNoYm9hcmRDaGlsZENoYW5nZShzb3VyY2UpO1xuICAgICAgY2hpbGQuY29sbGFwc2VVcEFsbCgpO1xuICAgICAgdGhpcy51cGRhdGVEYXNoYm9hcmRDaGlsZHJlbihjaGlsZCwgREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUucmVtb3ZlZCwgJ3JlbW92ZWQnLCBbXG4gICAgICAgIHdpZGdldFxuICAgICAgXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBlbnN1cmUgdGhhdCB0aGUgZHJhZ2dlZC1lbGVtZW50XG4gICAqICh3aGljaCBpcyBhdHRhY2hlZCB0byB0aGUgYm9keSkgaGFzIHRoZSByaWdodCBzdHlsaW5nLlxuICAgKi9cbiAgYWRkRGFzaGJvYXJkQ2xhc3NUb0JvZHkoKSB7XG4gICAgdGhpcy5jbGFzcy5zcGxpdCgnICcpLmZvckVhY2goY3NzQ2xhc3MgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCBjc3NDbGFzcyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gZW5zdXJlIHRoYXQgdGhlIGRyYWdnZWQtZWxlbWVudFxuICAgKiAod2hpY2ggaXMgYXR0YWNoZWQgdG8gdGhlIGJvZHkpIGhhcyB0aGUgcmlnaHQgc3R5bGluZy5cbiAgICovXG4gIHJlbW92ZURhc2hib2FyZENsYXNzRnJvbUJvZHkoKSB7XG4gICAgdGhpcy5jbGFzcy5zcGxpdCgnICcpLmZvckVhY2goY3NzQ2xhc3MgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCBjc3NDbGFzcyk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvbkxvYWQodHJhY2tFeHBlcmllbmNlPzogYm9vbGVhbikge1xuICAgIHRoaXMuaGFzUGVybWlzc2lvblRvRWRpdERhc2hib2FyZCA9IHRoaXMuZGFzaGJvYXJkXG4gICAgICA/IGF3YWl0IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuY2FuRWRpdERhc2hib2FyZCh0aGlzLm1vKVxuICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLmNhbkNvcHkgPVxuICAgICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZURhc2hib2FyZCh0aGlzLm1vKSB8fFxuICAgICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZVR5cGUodGhpcy5tbykgfHxcbiAgICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaXNHcm91cERhc2hib2FyZCh0aGlzLm1vKTtcbiAgICBjb25zdCBkYXNoYm9hcmRDaGlsZHJlbjogQ29udGV4dERhc2hib2FyZFsnY2hpbGRyZW4nXSA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMubW8uYzh5X0Rhc2hib2FyZD8uY2hpbGRyZW5cbiAgICApO1xuICAgIGNvbnN0IGRhc2hib2FyZENsYXNzZXMgPSB7XG4gICAgICAnYzh5LWdyaWQtZGFzaGJvYXJkJzogdHJ1ZSxcbiAgICAgIGRhc2hib2FyZDogdHJ1ZSxcbiAgICAgIC4uLnRoaXMuZGFzaGJvYXJkPy5jbGFzc2VzXG4gICAgfTtcbiAgICB0aGlzLmlzQ29weURpc2FibGVkID0gdGhpcy5kYXNoYm9hcmQgPyAhdGhpcy5jYW5Db3B5RGFzaGJvYXJkKCkgOiB0cnVlO1xuICAgIHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmluaXQoe1xuICAgICAgbmFtZTogZ2V0dGV4dCgnSW5pdGlhbCBzdGF0ZScpLFxuICAgICAgY2hpbGRyZW46IGRhc2hib2FyZENoaWxkcmVuLFxuICAgICAgY2hhbmdlSGlzdG9yeToge31cbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLnNldFdpZGdldHMoZGFzaGJvYXJkQ2hpbGRyZW4sIHRyYWNrRXhwZXJpZW5jZSk7XG4gICAgdGhpcy5jbGFzcyA9IE9iamVjdC5rZXlzKGRhc2hib2FyZENsYXNzZXMpLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5pc1JlcG9ydCkge1xuICAgICAgdGhpcy5hZGRSZXBvcnREYXNoYm9hcmRTZXR0aW5ncygpO1xuICAgIH1cbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZCkge1xuICAgICAgdGhpcy5kYXNoYm9hcmREZXRhaWxzLnNob3coZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLm9uTG9hZEdTRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkYXNoYm9hcmRQcmV2aWV3KGxheW91dENoYW5nZXM6IENvbnRleHREYXNoYm9hcmQpIHtcbiAgICBpZiAobGF5b3V0Q2hhbmdlcz8uY2xhc3Nlcykge1xuICAgICAgY29uc3QgZGFzaGJvYXJkQ2xhc3NlcyA9IHtcbiAgICAgICAgJ2M4eS1ncmlkLWRhc2hib2FyZCc6IHRydWUsXG4gICAgICAgIGRhc2hib2FyZDogdHJ1ZSxcbiAgICAgICAgLi4ubGF5b3V0Q2hhbmdlcy5jbGFzc2VzXG4gICAgICB9O1xuICAgICAgdGhpcy5jbGFzcyA9IE9iamVjdC5rZXlzKGRhc2hib2FyZENsYXNzZXMpLmpvaW4oJyAnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzID0ge1xuICAgICAgICAuLi50aGlzLmRhc2hib2FyZC53aWRnZXRDbGFzc2VzLFxuICAgICAgICAuLi5sYXlvdXRDaGFuZ2VzLndpZGdldENsYXNzZXNcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVsb2FkRGFzaGJvYXJkKGRhc2hib2FyZE1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMuZGFzaGJvYXJkID0gZGFzaGJvYXJkTW8uYzh5X0Rhc2hib2FyZDtcbiAgICB0aGlzLm1vID0gZGFzaGJvYXJkTW87XG4gICAgYXdhaXQgdGhpcy5vbkxvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0V2lkZ2V0cyhcbiAgICBkYXNoYm9hcmRDaGlsZHJlbjogQ29udGV4dERhc2hib2FyZFsnY2hpbGRyZW4nXSxcbiAgICB0cmFja0V4cGVyaWVuY2UgPSBmYWxzZVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpc0RldmljZVR5cGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKTtcbiAgICB0aGlzLndpZGdldHMgPSBhd2FpdCBQcm9taXNlLmFsbDxXaWRnZXQ+KFxuICAgICAgT2JqZWN0LnZhbHVlcyhkYXNoYm9hcmRDaGlsZHJlbiB8fCB7fSkubWFwKHdpZGdldCA9PiB7XG4gICAgICAgIHdpZGdldC5jbGFzc2VzID0gdGhpcy5tZXJnZVdpZGdldENsYXNzZXMod2lkZ2V0KTtcbiAgICAgICAgaWYgKGlzRGV2aWNlVHlwZSkge1xuICAgICAgICAgIHRoaXMuYXBwbHlEZXZpY2VUYXJnZXQod2lkZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJhY2tFeHBlcmllbmNlKSB7XG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnbG9hZFdpZGdldCcsIHtcbiAgICAgICAgICAgIHdpZGdldE5hbWU6IHdpZGdldC5jb21wb25lbnRJZCB8fCB3aWRnZXQubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFNlcnZpY2UubWFwTGVnYWN5KHdpZGdldCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb250ZXh0RGFzaGJvYXJkKCkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKHsgZGFzaGJvYXJkLCBpc1JlcG9ydCB9KSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLnJvdXRlLnBhcmVudC5zbmFwc2hvdC5kYXRhLmNvbnRleHREYXRhIHx8IHt9O1xuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuY29udGV4dD8ubmFtZTtcbiAgICAgIHRoaXMubW8gPSBkYXNoYm9hcmQ7XG4gICAgICB0aGlzLmRhc2hib2FyZCA9IHRoaXMubW8uYzh5X0Rhc2hib2FyZDtcbiAgICAgIHRoaXMuaXNSZXBvcnQgPSBpc1JlcG9ydCB8fCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzUmVwb3J0KHRoaXMubW8pO1xuICAgICAgaWYgKHRoaXMuaXNSZXBvcnQgJiYgdGhpcy5kYXNoYm9hcmQgJiYgIXRoaXMuZGFzaGJvYXJkPy5uYW1lKSB7XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLm5hbWUgPSB0aGlzLnRpdGxlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNSZXBvcnQgJiYgdGhpcy5kYXNoYm9hcmQpIHtcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQuYzh5X0lzTmF2aWdhdG9yTm9kZSA9IHRoaXMuY29udGV4dC5jOHlfSXNOYXZpZ2F0b3JOb2RlO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXRjaFNlbnNvclBob25lRGFzaGJvYXJkKHRoaXMuZGFzaGJvYXJkLCB0aGlzLm1vLm93bmVyLCB0aGlzLmNvbnRleHQ/LnR5cGUpO1xuICAgICAgdGhpcy5vbkxvYWQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gZW5hYmxlIHRyYW5zbGF0aW9uIGZvciB3aWRnZXRzIHdpdGhpbiB0aGUgZGFzaGJvYXJkLCB0aGUgXCJ0cmFuc2xhdGVXaWRnZXRUaXRsZVwiIGZsYWcgbXVzdCBiZSBlbmFibGVkLlxuICAgKiBUaGUgcHJvcGVydHkgbmVlZHMgdG8gYmUgcGF0Y2hlZCwgYXMgdGhlIFwiU2Vuc29yIEFwcFwiIGRvZXMgbm90IHByb3ZpZGUgdGhpcyBzZXR0aW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXRjaFNlbnNvclBob25lRGFzaGJvYXJkKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZCwgb3duZXI6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09ICdjOHlfU2Vuc29yUGhvbmUnICYmIG93bmVyPy5pbmNsdWRlcygnZGV2aWNlX3Bob25lJykpIHtcbiAgICAgIGRhc2hib2FyZC50cmFuc2xhdGVXaWRnZXRUaXRsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTmFtZWREYXNoYm9hcmQoKSB7XG4gICAgdGhpcy5kYXRhU3ViID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICAgICAgLmdldE5hbWVkRGFzaGJvYXJkT3JDcmVhdGUodGhpcy5uYW1lLCB0aGlzLmRlZmF1bHRXaWRnZXRzLCB0aGlzLmNvbnRleHQpXG4gICAgICAuc3Vic2NyaWJlKG1vID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5jb250ZXh0IHx8IHt9O1xuICAgICAgICB0aGlzLm1vID0gbW87XG4gICAgICAgIHRoaXMuZGFzaGJvYXJkID0gdGhpcy5tby5jOHlfRGFzaGJvYXJkO1xuICAgICAgICB0aGlzLm9uTG9hZCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZVdpZGdldENsYXNzZXMod2lkZ2V0OiBXaWRnZXQpOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiB7XG4gICAgY29uc3QgaGFzSGVhZGVyQ2xhc3MgPSBXSURHRVRfSEVBREVSX0NMQVNTRVMuZmluZChcbiAgICAgIGVsID0+IHdpZGdldC5jbGFzc2VzICYmIHdpZGdldC5jbGFzc2VzW2VsLmNsYXNzXVxuICAgICk7XG4gICAgY29uc3Qgd2lkZ2V0Q2xhc3NlcyA9IGhhc0hlYWRlckNsYXNzXG4gICAgICA/IHsgLi4ud2lkZ2V0LmNsYXNzZXMgfVxuICAgICAgOiB7IC4uLnRoaXMuZGFzaGJvYXJkLndpZGdldENsYXNzZXMsIC4uLndpZGdldC5jbGFzc2VzIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhcmQ6IHRydWUsXG4gICAgICAnY2FyZC1kYXNoYm9hcmQnOiB0cnVlLFxuICAgICAgW2tlYmFiQ2FzZSh3aWRnZXQuY29tcG9uZW50SWQgfHwgd2lkZ2V0Lm5hbWUpXTogdHJ1ZSxcbiAgICAgIC4uLndpZGdldENsYXNzZXNcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRUb1dpZGdldChjaGlsZDogRGFzaGJvYXJkQ2hpbGRDb21wb25lbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub21pdChjaGlsZC5kYXRhLCBbJ2NvbXBvbmVudFRyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0JywgJ3RyYW5zZm9ybUNvbmZpZ1dpdGhDb250ZXh0J10pLCAvLyByZW1vdmUgbGVnYWN5XG4gICAgICAuLi4oe1xuICAgICAgICBfeDogY2hpbGQueCxcbiAgICAgICAgX3k6IGNoaWxkLnksXG4gICAgICAgIF93aWR0aDogY2hpbGQud2lkdGgsXG4gICAgICAgIF9oZWlnaHQ6IGNoaWxkLmhlaWdodFxuICAgICAgfSBhcyBXaWRnZXQpXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUmVwb3J0RGFzaGJvYXJkU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXRUaXRsZSA9IHRydWU7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuY29udGV4dD8ubmFtZSB8fCBnZXR0ZXh0KCdOZXcgcmVwb3J0Jyk7XG4gICAgdGhpcy5icmVhZGNydW1iU2V0dGluZ3MgPSB7XG4gICAgICBpY29uOiAndGgnLFxuICAgICAgbGFiZWw6ICdSZXBvcnRzJyxcbiAgICAgIHBhdGg6ICdyZXBvcnRzJ1xuICAgIH07XG4gICAgdGhpcy5jYW5EZWxldGUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuQ29weURhc2hib2FyZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuaGFzUGVybWlzc2lvbnNUb0NvcHlEYXNoYm9hcmQoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbERhc2hib2FyZENoaWxkcmVuQXJlVmFsaWQgPSBldmVyeSh0aGlzLm1vLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGNoaWxkLmNvbmZpZyB8fCB7fTtcbiAgICAgIGNvbnN0IGRhdGFQb2ludHMgPSBjb25maWcuZGF0YXBvaW50cyB8fCBbXTtcbiAgICAgIHJldHVybiAhKFxuICAgICAgICAoY29uZmlnLmRldmljZSAmJiBjb25maWcuZGV2aWNlLmlkICE9PSB0aGlzLmNvbnRleHQuaWQpIHx8XG4gICAgICAgIHNvbWUoZGF0YVBvaW50cywgZGF0YVBvaW50ID0+IGRhdGFQb2ludC5fX3RhcmdldD8uaWQgIT09IHRoaXMuY29udGV4dC5pZClcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFsbERhc2hib2FyZENoaWxkcmVuQXJlVmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIHNldE5ld1N0YXRlKFxuICAgIHN0YXRlOiBQaWNrPERhc2hib2FyZENoaWxkcmVuU3RhdGUsICduYW1lJyB8ICdjaGlsZHJlbic+LFxuICAgIGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXREZXNjcmlwdGlvbkZvck5ld1N0YXRlKGRlc2NyaXB0aW9uUHJvcCwgd2lkZ2V0c0NoYW5nZWQpO1xuICAgIHRoaXMuZWRpdE1vZGVTZXJ2aWNlLm5ld1N0YXRlKHsgLi4uc3RhdGUsIGNoYW5nZUhpc3Rvcnk6IGRlc2NyaXB0aW9uIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZXNjcmlwdGlvbkZvck5ld1N0YXRlKFxuICAgIGRlc2NyaXB0aW9uUHJvcDoga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgd2lkZ2V0c0NoYW5nZWQ6IFdpZGdldFtdXG4gICk6IERhc2hib2FyZENoaWxkcmVuU3RhdGVbJ2NoYW5nZUhpc3RvcnknXSB7XG4gICAgY29uc3QgY2hhbmdlSGlzdG9yeSA9IHRoaXMuZWRpdE1vZGVTZXJ2aWNlLmdldEN1cnJlbnRTdGF0ZSgpLmNoYW5nZUhpc3Rvcnk7XG4gICAgaWYgKCFjaGFuZ2VIaXN0b3J5W2Rlc2NyaXB0aW9uUHJvcF0pIHtcbiAgICAgIGNoYW5nZUhpc3RvcnlbZGVzY3JpcHRpb25Qcm9wXSA9IHt9O1xuICAgIH1cbiAgICB3aWRnZXRzQ2hhbmdlZC5mb3JFYWNoKHcgPT4ge1xuICAgICAgaWYgKGRlc2NyaXB0aW9uUHJvcCA9PT0gJ3JlbW92ZWQnICYmIGNoYW5nZUhpc3RvcnkuYWRkZWQ/Llt3LmlkXSkge1xuICAgICAgICAvLyBpZiB3aWRnZXQgd2FzIGFkZGVkIGR1cmluZyBjdXJyZW50IGVkaXQgc2Vzc2lvbiBhbmQgdGhlbiByZW1vdmVkLCBpdCBzaG91bGQgbm90IGJlIGF0IGRlc2NyaXB0aW9uIGF0IGFsbFxuICAgICAgICBkZWxldGUgY2hhbmdlSGlzdG9yeS5hZGRlZFt3LmlkXTtcbiAgICAgICAgaWYgKGNoYW5nZUhpc3RvcnkuY29uZmlnPy5bdy5pZF0pIHtcbiAgICAgICAgICBkZWxldGUgY2hhbmdlSGlzdG9yeS5jb25maWdbdy5pZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZUhpc3RvcnkuYXJyYW5nZW1lbnQ/Llt3LmlkXSkge1xuICAgICAgICAgIGRlbGV0ZSBjaGFuZ2VIaXN0b3J5Py5hcnJhbmdlbWVudFt3LmlkXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKGRlc2NyaXB0aW9uUHJvcCA9PT0gJ2NvbmZpZycgfHwgZGVzY3JpcHRpb25Qcm9wID09PSAnYXJyYW5nZW1lbnQnKSAmJlxuICAgICAgICBjaGFuZ2VIaXN0b3J5LmFkZGVkPy5bdy5pZF1cbiAgICAgICkge1xuICAgICAgICAvLyBpZiB3aWRnZXQgd2FzIGFkZGVkIGFuZCB0aGVuIG1vZGlmaWVkIGluIGN1cnJlbnQgZWRpdCBzZXNzaW9uLCBpdCBzaG91bGQgb25seSBiZSBpbmRpY2F0ZWQgYXMgYWRkZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZUhpc3RvcnlbZGVzY3JpcHRpb25Qcm9wXVt3LmlkXSA9IHc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2hhbmdlSGlzdG9yeTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU3RhdGVUb0hpc3RvcnlEZXNjcmlwdGlvbihcbiAgICBkZXNjcmlwdGlvbjogRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZVsnY2hhbmdlSGlzdG9yeSddXG4gICk6IERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddIHtcbiAgICBjb25zdCBoaXN0b3J5RGVzY3JpcHRpb246IERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRpb24pKSB7XG4gICAgICBjb25zdCB3aWRnZXRzID0gT2JqZWN0LnZhbHVlcyh2YWx1ZSk7XG4gICAgICBpZiAoIXdpZGdldHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaGlzdG9yeURlc2NyaXB0aW9uW2tleV0gPSBPYmplY3QudmFsdWVzKHZhbHVlKS5tYXAod2lkZ2V0ID0+IHdpZGdldC50aXRsZSk7XG4gICAgfVxuICAgIHJldHVybiBoaXN0b3J5RGVzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uRGVsZXRlR1NFdmVudCgpIHtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuY29udGV4dD8ubmFtZSk7XG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IGF3YWl0IHRoaXMuY29udmVydFN0cmluZ1RvSGFzaCh0aGlzLmRhc2hib2FyZD8ubmFtZSk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLkRBU0hCT0FSRFMsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkRFTEVURV9EQVNIQk9BUkQsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5ERUxFVEUsXG4gICAgICBuYW1lOiBkYXNoYm9hcmROYW1lLFxuICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICBuYW1lSWQ6IGAke2Rhc2hib2FyZE5hbWV9XyR7dGhpcy5tby5pZH1gLFxuICAgICAgcGFyZW50QXNzZXRJZDogdGhpcy5jb250ZXh0Py5pZCA/IHRoaXMuY29udGV4dC5pZCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lOiB0aGlzLmNvbnRleHQ/LmlkID8gcGFyZW50TmFtZSA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXRUeXBlOiB0aGlzLmNvbnRleHQ/LmlkID8gdGhpcy5jb250ZXh0LnR5cGUgOiAnbm9Db250ZXh0JyxcbiAgICAgIHBhcmVudEFzc2V0TmFtZUlkOiB0aGlzLmNvbnRleHQ/LmlkID8gYCR7cGFyZW50TmFtZX1fJHt0aGlzLmNvbnRleHQuaWR9YCA6ICdub0NvbnRleHQnLFxuICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkTmFtZTogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICA/IGAke3BhcmVudE5hbWV9XyR7ZGFzaGJvYXJkTmFtZX1gXG4gICAgICAgIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldElkRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWQgPyBgJHt0aGlzLmNvbnRleHQuaWR9XyR7dGhpcy5tby5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVEYXNoYm9hcmRJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5tby5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICBwYXJlbnRBc3NldE5hbWVJZERhc2hib2FyZE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5jb250ZXh0LmlkfV8ke2Rhc2hib2FyZE5hbWV9XyR7dGhpcy5tby5pZH1gXG4gICAgICAgIDogJ25vQ29udGV4dCcsXG4gICAgICBkYXNoYm9hcmRUeXBlOiB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlID8gdGhpcy5kYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIDogbnVsbCxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZ2V0Q29udGV4dEZvckdTKHRoaXMuY29udGV4dClcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb25Mb2FkR1NFdmVudCgpIHtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuY29udGV4dD8ubmFtZSk7XG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9XG4gICAgICAoYXdhaXQgdGhpcy5jb252ZXJ0U3RyaW5nVG9IYXNoKHRoaXMuZGFzaGJvYXJkPy5uYW1lKSkgPz9cbiAgICAgIHRoaXMuZXh0cmFjdERlZmF1bHREYXNoYm9hcmROYW1lKHRoaXMubW8pID8/XG4gICAgICAnbm9uZSc7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgdGhpcy5pc1JlcG9ydFxuICAgICAgICA/IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLlJFUE9SVFNcbiAgICAgICAgOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5EQVNIQk9BUkRfVklFVyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkFDVElPTlMuTE9BRCxcbiAgICAgICAgbmFtZTogZGFzaGJvYXJkTmFtZSxcbiAgICAgICAgaWQ6IHRoaXMubW8uaWQsXG4gICAgICAgIG5hbWVJZDogYCR7ZGFzaGJvYXJkTmFtZX1fJHt0aGlzLm1vLmlkfWAsXG4gICAgICAgIHBhcmVudEFzc2V0SWQ6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQuaWQgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXROYW1lOiB0aGlzLmNvbnRleHQ/LmlkID8gcGFyZW50TmFtZSA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldFR5cGU6IHRoaXMuY29udGV4dD8uaWQgPyB0aGlzLmNvbnRleHQudHlwZSA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldE5hbWVJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5jb250ZXh0LmlkfWAgOiAnbm9Db250ZXh0JyxcbiAgICAgICAgcGFyZW50QXNzZXROYW1lRGFzaGJvYXJkTmFtZTogdGhpcy5jb250ZXh0Py5pZFxuICAgICAgICAgID8gYCR7cGFyZW50TmFtZX1fJHtkYXNoYm9hcmROYW1lfWBcbiAgICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldElkRGFzaGJvYXJkSWQ6IHRoaXMuY29udGV4dD8uaWRcbiAgICAgICAgICA/IGAke3RoaXMuY29udGV4dC5pZH1fJHt0aGlzLm1vLmlkfWBcbiAgICAgICAgICA6ICdub0NvbnRleHQnLFxuICAgICAgICBwYXJlbnRBc3NldE5hbWVEYXNoYm9hcmRJZDogdGhpcy5jb250ZXh0Py5pZCA/IGAke3BhcmVudE5hbWV9XyR7dGhpcy5tby5pZH1gIDogJ25vQ29udGV4dCcsXG4gICAgICAgIHBhcmVudEFzc2V0TmFtZUlkRGFzaGJvYXJkTmFtZUlkOiB0aGlzLmNvbnRleHQ/LmlkXG4gICAgICAgICAgPyBgJHtwYXJlbnROYW1lfV8ke3RoaXMuY29udGV4dC5pZH1fJHtkYXNoYm9hcmROYW1lfV8ke3RoaXMubW8uaWR9YFxuICAgICAgICAgIDogJ25vQ29udGV4dCcsXG4gICAgICAgIGRhc2hib2FyZFR5cGU6IHRoaXMuZGFzaGJvYXJkLmRldmljZVR5cGUgPyB0aGlzLmRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgOiBudWxsLFxuICAgICAgICBjb250ZXh0OiB0aGlzLmlzUmVwb3J0XG4gICAgICAgICAgPyBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTlRFWFQuUkVQT1JUXG4gICAgICAgICAgOiB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldENvbnRleHRGb3JHUyh0aGlzLmNvbnRleHQpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERlZmF1bHREYXNoYm9hcmROYW1lKG9iajogSU1hbmFnZWRPYmplY3QpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBuYW1lS2V5ID0gT2JqZWN0LmtleXMob2JqKS5maW5kKGtleSA9PiBrZXkuc3RhcnRzV2l0aCgnYzh5X0Rhc2hib2FyZCFuYW1lIScpKTtcbiAgICBpZiAobmFtZUtleSkge1xuICAgICAgcmV0dXJuIG5hbWVLZXkuc3BsaXQoJyEnKS5wb3AoKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgYXN5bmMgY29udmVydFN0cmluZ1RvSGFzaChzdHI6IHN0cmluZykge1xuICAgIGlmICghc3RyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdhaW5zaWdodFNlcnZpY2Uuc2hvdWxkU2VuZFBpaURhdGEoKSlcbiAgICAgID8gc3RyXG4gICAgICA6IHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5oYXNoR3JvdXBOYW1lKHN0cik7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGUgKm5nSWY9XCJ0aXRsZVwiPlxuICB7eyB0aXRsZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIFtwcmlvcml0eV09XCIxMDAwMFwiXG4gICpuZ0lmPVwiZGFzaGJvYXJkPy5kZXZpY2VUeXBlICYmIGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWVcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4tY2xlYW4gYnRuLWxpbmtcIlxuICAgIHBvcG92ZXJUaXRsZT1cInt7ICdEYXNoYm9hcmQgdGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BvcG92ZXJdPVwiZGFzaGJvYXJkVHlwZVBvcG92ZXJSZWZcIlxuICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInRhZyB0YWctLWluZm8gdGV4dC0xMlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkYXNoYm9hcmQtdGVtcGxhdGUtbWFya2VyXCI+PC9zcGFuPlxuICAgICAge3sgZGFzaGJvYXJkVHlwZUxhYmVsIHwgdHJhbnNsYXRlOiB7IGRhc2hib2FyZFR5cGU6IGRhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWUgfSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxuZy10ZW1wbGF0ZSAjZGFzaGJvYXJkVHlwZVBvcG92ZXJSZWY+XG4gICAgPGRpdlxuICAgICAgW2lubmVySFRNTF09XCJkYXNoYm9hcmRUeXBlUG9wb3ZlciB8IHRyYW5zbGF0ZTogeyBkYXNoYm9hcmRUeXBlOiBkYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH1cIlxuICAgID48L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgW3ByaW9yaXR5XT1cIi0xXCJcbiAgKm5nSWY9XCJkZWZhdWx0V2lkZ2V0cy5sZW5ndGggPiAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdSZXNldCB3aWRnZXRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcHgtZXZlbnQ9XCJSZXNldCBkYXNoYm9hcmRcIlxuICAgIChjbGljayk9XCJyZXN0b3JlKClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB3aWRnZXRzRGFzaGJvYXJkPy5lZGl0TW9kZVwiXG4gICAgZGF0YS1jeT1cImNvbnRleHQtZGFzaGJvYXJkLS1idXR0b24tcmVzZXQtZGFzaGJvYXJkXCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgIGM4eUljb249XCJyZXNldFwiXG4gICAgPjwvaT5cbiAgICA8c3BhbiBjbGFzcz1cInZpc2libGUteHMtaW5saW5lIGhpZGRlbi1zbSB2aXNpYmxlLW1kLWlubGluZSB2aXNpYmxlLWxnLWlubGluZVwiPlxuICAgICAge3sgJ1Jlc2V0IHdpZGdldHMnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwXG4gIHNyYz1cIi9kb2NzL2NvY2twaXQvd29ya2luZy13aXRoLWRhc2hib2FyZHMvI3dvcmtpbmctd2l0aC1kYXNoYm9hcmRzXCJcbiAgKm5nSWY9XCJzaG93Q29udGV4dEhlbHBCdXR0b25cIlxuPjwvYzh5LWhlbHA+XG5cbjxjOHktZGFzaGJvYXJkLWRldGFpbFxuICBjbGFzcz1cImQtY29udGVudHNcIlxuICBbaXNSZXBvcnRdPVwiaXNSZXBvcnRcIlxuICBbZGFzaGJvYXJkXT1cImRhc2hib2FyZFwiXG4gIFttb109XCJtb1wiXG4gIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICBbZGV2aWNlVHlwZV09XCJjb250ZXh0Py50eXBlXCJcbiAgW2hpZGVBdmFpbGFiaWxpdHldPVwiaGlkZUF2YWlsYWJpbGl0eVwiXG4gIChkYXNoYm9hcmRTYXZlZCk9XCJyZWxvYWREYXNoYm9hcmQoJGV2ZW50KVwiXG4gIChwcmV2aWV3Q2hhbmdlZCk9XCJkYXNoYm9hcmRQcmV2aWV3KCRldmVudClcIlxuPjwvYzh5LWRhc2hib2FyZC1kZXRhaWw+XG5cbjxjOHktd2lkZ2V0cy1kYXNoYm9hcmRcbiAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gIFtjb250ZXh0RGFzaGJvYXJkXT1cImRhc2hib2FyZFwiXG4gIFt3aWRnZXRzXT1cIndpZGdldHNcIlxuICBbaXNDb3B5RGlzYWJsZWRdPVwiaXNDb3B5RGlzYWJsZWRcIlxuICBbc2V0dGluZ3NdPVwie1xuICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgIGlzRGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIGNhbkRlbGV0ZTogY2FuRGVsZXRlICYmICEhZGFzaGJvYXJkLFxuICAgIHRyYW5zbGF0ZVdpZGdldFRpdGxlOiBkYXNoYm9hcmQ/LnRyYW5zbGF0ZVdpZGdldFRpdGxlID8/IHRyYW5zbGF0ZVdpZGdldFRpdGxlLFxuICAgIGFsbG93RnVsbHNjcmVlbjogbW9kdWxlQ29uZmlnLmFsbG93RnVsbHNjcmVlbixcbiAgICB0aXRsZTogc2V0VGl0bGUgPyBkYXNoYm9hcmQ/Lm5hbWUgfHwgdGl0bGUgOiB1bmRlZmluZWQsXG4gICAgd2lkZ2V0TWFyZ2luOiBkYXNoYm9hcmQ/LndpZGdldE1hcmdpbixcbiAgICBjYW5Db3B5OiBjYW5Db3B5ICYmICEhZGFzaGJvYXJkLFxuICAgIGRlZmF1bHRXaWR0aDogZGFzaGJvYXJkPy5jb2x1bW5zID49IDI0ID8gOCA6IDQsXG4gICAgY29sdW1uczogZGFzaGJvYXJkPy5jb2x1bW5zIHx8IDEyXG4gIH1cIlxuICBbYnJlYWRjcnVtYl09XCJicmVhZGNydW1iU2V0dGluZ3NcIlxuICBbZWRpdE1vZGVCdXR0b25zXT1cIntcbiAgICB1bmRvQnV0dG9uRGlzYWJsZWQ6IGVkaXRNb2RlU2VydmljZS51bmRvQnV0dG9uRGlzYWJsZWQsXG4gICAgY2hhbmdlVG9VbmRvTmFtZTogZWRpdE1vZGVTZXJ2aWNlLmNoYW5nZVRvVW5kb05hbWUsXG4gICAgcmVkb0J1dHRvbkRpc2FibGVkOiAhZWRpdE1vZGVTZXJ2aWNlLnJlZG9TdGFja0xhc3RJdGVtLFxuICAgIGNoYW5nZVRvUmVkb05hbWU6IGVkaXRNb2RlU2VydmljZS5yZWRvU3RhY2tMYXN0SXRlbT8ubmFtZVxuICB9XCJcbiAgKG9uQ2hhbmdlRGFzaGJvYXJkKT1cInBvc2l0aW9uT3JXaWRnZXREaW1lbnNpb25DaGFuZ2UoJGV2ZW50KVwiXG4gIChvbkFkZFdpZGdldCk9XCJhZGRXaWRnZXQoKVwiXG4gIChvbkVkaXRXaWRnZXQpPVwiZWRpdFdpZGdldCgkZXZlbnQpXCJcbiAgKG9uRGVsZXRlV2lkZ2V0KT1cImRlbGV0ZVdpZGdldCgkZXZlbnQpXCJcbiAgKG9uU2F2ZURhc2hib2FyZCk9XCJzYXZlV2lkZ2V0c1RvRGFzaGJvYXJkKClcIlxuICAob25DYW5jZWxEYXNoYm9hcmQpPVwiY2FuY2VsRWRpdE1vZGUoKVwiXG4gIChyZXZlcnRDaGFuZ2UpPVwicmV2ZXJ0Q2hhbmdlKCRldmVudClcIlxuICAob25DaGFuZ2VTdGFydCk9XCJhZGREYXNoYm9hcmRDbGFzc1RvQm9keSgpXCJcbiAgKG9uQ2hhbmdlRW5kKT1cInJlbW92ZURhc2hib2FyZENsYXNzRnJvbUJvZHkoKVwiXG4gIChvbkVkaXREYXNoYm9hcmQpPVwiZGFzaGJvYXJkRGV0YWlscy5zaG93KHRydWUpXCJcbiAgKG9uQ29weURhc2hib2FyZCk9XCJjb3B5RGFzaGJvYXJkKClcIlxuICAob25EZWxldGVEYXNoYm9hcmQpPVwiZGVsZXRlRGFzaGJvYXJkKClcIlxuPjwvYzh5LXdpZGdldHMtZGFzaGJvYXJkPlxuIl19
|
|
@@ -146,4 +146,4 @@ export const PRODUCT_EXPERIENCE = {
|
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
148
|
export const REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY = 30;
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBSVIsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHO0lBQ3hDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQ3ZDLGFBQWEsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0MsWUFBWSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDdEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDckIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDN0IsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0lBQzlDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztDQUNXLENBQUM7QUFtSnJFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLE9BQU8sRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxPQUFPLENBQUMsOEJBQThCLENBQUM7SUFDL0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFD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SUFDNUYsTUFBTTtJQUNOLEtBQUs7SUFDTDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGtEQUFrRCxDQUFDO0tBQ3pFO0NBQ08sQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsZ0JBQWdCO0NBQ1IsQ0FBQztBQWFYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEtBQWMsQ0FBQztBQUd4RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxTQUFTLEVBQUU7UUFDVCxNQUFNLEVBQUU7WUFDTixVQUFVLEVBQUUsWUFBWTtZQUN4QixPQUFPLEVBQUUsU0FBUztTQUNuQjtRQUNELFVBQVUsRUFBRTtZQUNWLGNBQWMsRUFBRSxtQkFBbUI7WUFDbkMsc0JBQXNCLEVBQUUsd0JBQXdCO1lBQ2hELFlBQVksRUFBRSx1QkFBdUI7WUFDckMsVUFBVSxFQUFFLHVCQUF1QjtZQUNuQyxhQUFhLEVBQUUsZUFBZTtZQUM5QixnQkFBZ0IsRUFBRSxtQkFBbUI7U0FDdEM7UUFDRCxPQUFPLEVBQUU7WUFDUCxNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxPQUFPO1NBQ2Y7UUFDRCxPQUFPLEVBQUU7WUFDUCwwQkFBMEIsRUFBRSx5QkFBeUI7WUFDckQsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixNQUFNLEVBQUUsUUFBUTtTQUNqQjtLQUNGO0NBQ08sQ0FBQztBQU1YLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIFdpZGdldCxcbiAgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sXG4gIFJvdXRlLFxuICBnZXR0ZXh0LFxuICBWaWV3Q29udGV4dCxcbiAgV2lkZ2V0RGlzcGxheVNldHRpbmdzLFxuICBUYWJXaXRoVGVtcGxhdGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlJztcblxuZXhwb3J0IGNvbnN0IENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdDb250ZXh0RGFzaGJvYXJkQ29uZmlnJyk7XG5leHBvcnQgY29uc3QgREFTSEJPQVJEX1NFVFRJTkdTX0NIQU5HRVMgPSB7XG4gIGNsYXNzZXM6IGdldHRleHQoJ3RoZW1lJyksXG4gIGdsb2JhbFJvbGVzSWRzOiBnZXR0ZXh0KCdnbG9iYWwgcm9sZXMnKSxcbiAgd2lkZ2V0Q2xhc3NlczogZ2V0dGV4dCgnd2lkZ2V0IGhlYWRlciBzdHlsZScpLFxuICB3aWRnZXRNYXJnaW46IGdldHRleHQoJ3dpZGdldCBtYXJnaW4nKSxcbiAgaWNvbjogZ2V0dGV4dCgnaWNvbicpLFxuICBuYW1lOiBnZXR0ZXh0KCduYW1lJyksXG4gIHByaW9yaXR5OiBnZXR0ZXh0KCdwcmlvcml0eScpLFxuICBjOHlfSXNOYXZpZ2F0b3JOb2RlOiBnZXR0ZXh0KCduYXZpZ2F0b3IgaXRlbScpLFxuICB0cmFuc2xhdGVXaWRnZXRUaXRsZTogZ2V0dGV4dCgndHJhbnNsYXRlIHdpZGdldCB0aXRsZScpXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQYXJ0aWFsPFJlY29yZDxrZXlvZiBDb250ZXh0RGFzaGJvYXJkLCBzdHJpbmc+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGFzaGJvYXJkQ29uZmlnIHtcbiAgd2lkZ2V0RmlsdGVyPzogKGNvbXBvbmVudDogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24pID0+IGJvb2xlYW47XG4gIGFsbG93RnVsbHNjcmVlbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcm91dGVzPzogUm91dGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0V2lkZ2V0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyB0aGUgZGVmYXVsdCBjb25maWcgY29tcG9uZW50IGlzXG4gICAqIGRpc3BsYXllZC4gVGhleSBhcmUgc3RhdGljIGFuZCB3aWxsIG5vdCBiZSBzYXZlZC5cbiAgICovXG4gIHNldHRpbmdzPzoge1xuICAgIC8qKlxuICAgICAqIEF2b2lkcyB0byBzaG93IHRoZSB3aWRnZXQgaW4gdGhlIFwiYWRkIHdpZGdldFwiIG1vZGFsXG4gICAgICovXG4gICAgbm9OZXdXaWRnZXRzPzogYm9vbGVhbjtcbiAgICBuZzE/OiB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgdGhpcyB0byBmYWxzZSwgdG8gaGlkZSB0aGUgZGV2aWNlL2dyb3VwIHNlbGVjdG9yXG4gICAgICAgICAqIEBkZXByZWNhdGVkOiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGluIGFuZ3VsYXJqcyBhbmQgd2lsbCBiZSBleHBvcnRlZCB0byBhIHNlcGFyYXRlIGNvbXBvbmVudC5cbiAgICAgICAgICovXG4gICAgICAgIG5vRGV2aWNlVGFyZ2V0PzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlIHRvIG9ubHkgc2VsZWN0IGRldmljZXNcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZT86IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY29udGV4dCBmcm9tIHRoZSBkZXZpY2Ugc2VsZWN0b3IuXG4gICAgICAgKi9cbiAgICAgIGNvbnRleHQ/OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgc2V0dGluZ3MgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgYXJlIGluamVjdGVkIGluIGFueSBkaXNwbGF5aW5nIGNvbXBvbmVudC5cbiAgICovXG4gIGRpc3BsYXlTZXR0aW5ncz86IFdpZGdldERpc3BsYXlTZXR0aW5ncztcblxuICAvKipcbiAgICogV2hhdGV2ZXIgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb25maWd1cmF0aW9uIHdoZW4gYSB3aWRnZXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbmZpZz86IHtcbiAgICAvKipcbiAgICAgKiBBbnkgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCBzaG91bGQgYmUgc3RvcmVkIGhlcmUuXG4gICAgICovXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogVGhlIHNlbGVjdGVkIGRldmljZSBvciBncm91cCAobm90ZTogbmFtaW5nIGlzIGluY29uc2lzdGVudCBhcyBncm91cCB3YXMgYWRkZWQgbGF0ZXJcbiAgICogYnV0IG11c3Qgc3RheSBmb3IgYWxyZWFkeSBpbXBsZW1lbnRlZCB3aWRnZXRzKVxuICAgKi9cbiAgZGV2aWNlPzoge1xuICAgIGlkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogQW55IG90aGVyIGluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBoZXJlLlxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0IGV4dGVuZHMgSU1hbmFnZWRPYmplY3Qge1xuICBjOHlfRGFzaGJvYXJkPzogQ29udGV4dERhc2hib2FyZDtcbiAgbmFtZT86IHN0cmluZztcbiAgYzh5X0Rhc2hib2FyZEhpc3Rvcnk/OiBDb250ZXh0RGFzaGJvYXJkW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZCB7XG4gIGljb24/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICBkZXZpY2VUeXBlPzogYm9vbGVhbjtcbiAgZGV2aWNlVHlwZVZhbHVlPzogc3RyaW5nO1xuICBpc0Zyb3plbj86IGJvb2xlYW47XG4gIGNsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0Q2xhc3Nlcz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuICB3aWRnZXRNYXJnaW4/OiBudW1iZXI7XG4gIHRyYW5zbGF0ZVdpZGdldFRpdGxlPzogYm9vbGVhbjtcbiAgZ2xvYmFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY29sdW1ucyBvbiB0aGF0IGRhc2hib2FyZC5cbiAgICogQ2FuIGJlIGZyZWVseSBjaG9zZW4sIGJ1dCBwcm9kdWN0IHVzZXMgZWl0aGVyIDEyIG9yIDI0LlxuICAgKi9cbiAgY29sdW1ucz86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiB7XG4gICAgW2lkOiBzdHJpbmddOiBXaWRnZXQ7XG4gIH07XG4gIGdsb2JhbFJvbGVzSWRzPzogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG4gIGM4eV9Jc05hdmlnYXRvck5vZGU/OiBvYmplY3Q7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBoaXN0b3J5RGVzY3JpcHRpb24/OiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb247XG4gIGNyZWF0ZWQ/OiBzdHJpbmc7XG4gIGF1dGhvcj86IHN0cmluZztcbn1cbi8qKlxuICogT2JqZWN0IGRlc2NyaWJpbmcgY2hhbmdlcyBhcHBsaWVkIHRvIGRhc2hib2FyZCBzZXR0aW5ncyBhbmQgaXRzIHdpZGdldHMuIFVzZWQgdG8gZGlzcGxheSB1c2VyLWZyaWVuZGx5IGNoYW5nZSBsb2cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0eXBlIG9mIGRhc2hib2FyZCBjaGFuZ2UgKG9yIGNyZWF0aW9uKS5cbiAgICovXG4gIGNoYW5nZVR5cGU/OiAncmVzZXQnIHwgJ2NyZWF0ZScgfCAndXBkYXRlJztcbiAgLyoqXG4gICAqIExpc3Qgb2YgZGFzaGJvYXJkIHNldHRpbmdzIHRoYXQgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICovXG4gIGRhc2hib2FyZFNldHRpbmdDaGFuZ2VzPzogKGtleW9mIHR5cGVvZiBEQVNIQk9BUkRfU0VUVElOR1NfQ0hBTkdFUylbXTtcbiAgLyoqXG4gICAqIFRydWUgaWYgZGFzaGJvYXJkIGlzIHR5cGVkIGRhc2hib2FyZCwgZmFsc2UgaWYgaXQncyBub3QuXG4gICAqL1xuICBkZXZpY2VUeXBlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9iamVjdCBjb250YWluaW5nIGxpc3RzIG9mIHdpZGdldHMgKGJ5IHRpdGxlKSB0aGF0IGhhcyBiZWVuIGNoYW5nZWQsIGdyb3VwZWQgYnkgY2hhbmdlIHR5cGUsIGUuZy46XG4gICAqIGBgYHRzXG4gICAqIHdpZGdldENoYW5nZXM6IHtcbiAgICogICAgIHJlbW92ZWQ6IFsnQXBwbGljYXRpb25zJ10sXG4gICAqICAgICBjb25maWc/OiBbJ0RhdGEgcG9pbnRzIGdyYXBoJywgJ0V2ZW50cyBsaXN0J10sXG4gICAqICAgfSxcbiAgICogYGBgXG4gICAqL1xuICB3aWRnZXRDaGFuZ2VzPzoge1xuICAgIHJlbW92ZWQ/OiBzdHJpbmdbXTtcbiAgICBhZGRlZD86IHN0cmluZ1tdO1xuICAgIGNvbmZpZz86IHN0cmluZ1tdO1xuICAgIGFycmFuZ2VtZW50Pzogc3RyaW5nW107XG4gIH07XG4gIC8qKlxuICAgKiBTdHJpbmcgdXNlZCB0byBkaXNwbGF5IHRoZSBkYXRlIGZyb20gd2hpY2ggdGhlIHN0YXRlIHdhcyByZXN0b3JlZC5cbiAgICovXG4gIHJlc3RvcmVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUUgPSB7XG4gIGluaXRpYWw6IGdldHRleHQoJ0luaXRpYWwgc3RhdGUnKSxcbiAgY29uZmlnOiBnZXR0ZXh0KCdXaWRnZXQgY29uZmlndXJhdGlvbiBjaGFuZ2VkJyksXG4gIHJlbW92ZWQ6IGdldHRleHQoJ1dpZGdldCByZW1vdmVkJyksXG4gIGFkZGVkOiBnZXR0ZXh0KCdXaWRnZXQgYWRkZWQnKSxcbiAgYXJyYW5nZW1lbnQ6IGdldHRleHQoJ1dpZGdldHMgcmVhcnJhbmdlZCcpXG59IGFzIGNvbnN0IHNhdGlzZmllcyBSZWNvcmQ8a2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10gfCAnaW5pdGlhbCcsIHN0cmluZz47XG4vKipcbiAqIE9iamVjdCByZXByZXNlbnRpbmcgc3RhdGUgb2YgZGFzaGJvYXJkIHdpZGdldHMuIEl0cyBtYWluIHB1cnBvc2UgaXMgdG8gYWxsb3cgdG8gdW5kbyBhbmQgcmVkbyBjaGFuZ2VzXG4gKiBhcHBsaWVkIHRvIGRhc2hib2FyZCBjaGlsZHJlbi5cbiAqL1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkQ2hpbGRyZW5TdGF0ZSA9IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGNoYW5nZSBhcHBsaWVkIHRvIGRhc2hib2FyZCB0aGF0IHJlc3VsdHMgaW4gY3VycmVudCBzdGF0ZSwgZS5nLiAnd2lkZ2V0IHJlbW92ZWQnXG4gICAqL1xuICBuYW1lOiAodHlwZW9mIERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FKVtrZXlvZiB0eXBlb2YgREFTSEJPQVJEX0NISUxEUkVOX1NUQVRFX05BTUVdO1xuICAvKipcbiAgICogRGFzaGJvYXJkIGNoaWxkcmVuIGluIHBhcnRpY3VsYXIsIGltbXV0YWJsZSBzdGF0ZS5cbiAgICovXG4gIGNoaWxkcmVuOiBDb250ZXh0RGFzaGJvYXJkWydjaGlsZHJlbiddO1xuICAvKipcbiAgICogT2JqZWN0IGRlc2NyaWJpbmcgY2hhbmdlcyBhcHBsaWVkIHRvIGRhc2hib2FyZCB3aWRnZXRzIHRoYXQgY2FuIGJlIGVhc2lseSBtYXBwZWQgdG8gRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uIHdpZGdldENoYW5nZXMuXG4gICAqIGBgYHRzXG4gICAqIHtcbiAgICogICAgcmVtb3ZlZDoge1xuICAgKiAgICAgICAgMDk2OTY5MjYxNzYzNzcwMzogeyBjb21wb25lbnRJZDogXCJEYXRhIHBvaW50cyBncmFwaFwiLCBjb25maWc6IHsuLi59LCBjbGFzc2VzOiB7Li4ufSAuLi59XG4gICAqICAgIH0sXG4gICAqICAgIGNvbmZpZzoge1xuICAgKiAgICAgICAgNjM0NzU2NzM0NTc2NzY1MzogeyBjb21wb25lbnRJZDogXCJBcHBsaWNhdGlvbnNcIiwgY29uZmlnOiB7Li4ufSwgY2xhc3Nlczogey4uLn0gLi4ufSxcbiAgICogICAgICAgIDY0NTYzNDU2MzQ1NjQ1NjY6IHsgY29tcG9uZW50SWQ6IFwiRXZlbnRzIGxpc3RcIiwgY29uZmlnOiB7Li4ufSwgY2xhc3Nlczogey4uLn0gLi4ufSxcbiAgICogICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgY2hhbmdlSGlzdG9yeTogUGFydGlhbDxcbiAgICBSZWNvcmQ8XG4gICAgICBrZXlvZiBEYXNoYm9hcmRIaXN0b3J5RGVzY3JpcHRpb25bJ3dpZGdldENoYW5nZXMnXSxcbiAgICAgIHtcbiAgICAgICAgW2lkOiBzdHJpbmddOiBXaWRnZXQ7XG4gICAgICB9XG4gICAgPlxuICA+O1xufTtcblxuZXhwb3J0IGVudW0gQ29udGV4dERhc2hib2FyZFR5cGUge1xuICBEZXZpY2UgPSAnZGV2aWNlJyxcbiAgVHlwZSA9ICd0eXBlJyxcbiAgR3JvdXAgPSAnZ3JvdXAnLFxuICBOYW1lZCA9ICduYW1lJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCdcbn1cblxuZXhwb3J0IGVudW0gRGFzaGJvYXJkRGV0YWlsc1RhYklkIHtcbiAgR0VORVJBTCA9ICdnZW5lcmFsJyxcbiAgQVBQRUFSQU5DRSA9ICdhcHBlYXJhbmNlJyxcbiAgVkVSU0lPTkhJU1RPUlkgPSAndmVyc2lvbkhpc3RvcnknXG59XG5cbmV4cG9ydCB0eXBlIERhc2hib2FyZERldGFpbHNUYWJzID0gUmVjb3JkPFxuICBEYXNoYm9hcmREZXRhaWxzVGFiSWQsXG4gIFRhYldpdGhUZW1wbGF0ZSAmIHsgZmVhdHVyZUlkOiBEYXNoYm9hcmREZXRhaWxzVGFiSWQgfVxuPjtcblxuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWd1bGFyYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtcmVndWxhcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIG5vIGJvcmRlciBiZXR3ZWVuIGhlYWRlciBhbmQgY29udGVudC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JvcmRlcmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLWJvcmRlcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGEgc21hbGwgc2VwYXJhdGlvbiBib3JkZXIgYmV0d2VlbiBoZWFkZXIgYW5kIGNvbnRlbnQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdPdmVybGF5YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtb3ZlcmxheScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgY29udGVudCBvdmVybGF5cyB0aGUgaGVhZGVyLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnSGlkZGVuYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtaGlkZGVuJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoZWFkZXIgaXMgbm90IHNob3duLicpXG4gIH1cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfQ09OVEVOVF9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JyYW5kZWRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGlzIHN0eWxlZCB3aXRoIHRoZSBtYWluIGJyYW5kIGNvbG9yLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTWF0Y2ggZGFzaGJvYXJkYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZS4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0xpZ2h0YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC13aGl0ZScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2BzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtZGFyaycsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGRhcmsgYXBwZWFyYW5jZSwgdGhhdCBpcywgbGlnaHQgdGV4dCBvbiBkYXJrIGJhY2tncm91bmQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdUcmFuc3BhcmVudGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtdHJhbnNwYXJlbnQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBubyBiYWNrZ3JvdW5kLicpXG4gIH1cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRjaCBVSWB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBVSSBhcHBlYXJhbmNlLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGlnaHRgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgJ1RoZSBkYXNoYm9hcmQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2B0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1kYXJrJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICdUaGUgZGFzaGJvYXJkIGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgdGhlbWVgJyksXG4gIC8vICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtdHJhbnNwYXJlbnQnLFxuICAvLyAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAvLyAgICAgJ1RoZSBkYXNoYm9hcmQgaXMgc3R5bGVkIHdpdGggYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGFuZCB0aGVyZWZvcmUgaXMgYm9yZGVyLWxlc3MuJ1xuICAvLyAgIClcbiAgLy8gfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCcmFuZGVkYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgZGFzaGJvYXJkIGlzIHN0eWxlZCB1c2luZyB0aGUgYnJhbmQgcGFsZXR0ZS4nKVxuICB9XG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgU1RZTElOR19DTEFTU19QUkVGSVhFUyA9IFtcbiAgJ2Rhc2hib2FyZC10aGVtZS0nLFxuICAncGFuZWwtdGl0bGUtJyxcbiAgJ3BhbmVsLWNvbnRlbnQtJ1xuXSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkIHtcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZztcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBjb250ZXh0OiBEYXNoYm9hcmRDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvbnRleHQge1xuICBjb250ZXh0OiBWaWV3Q29udGV4dDtcbiAgY29udGV4dERhdGE6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+O1xufVxuXG5leHBvcnQgY29uc3QgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCA9ICdhbGwnIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkR2xvYmFsUm9sZXMgPSBudW1iZXJbXSB8IHR5cGVvZiBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFID0ge1xuICBEQVNIQk9BUkQ6IHtcbiAgICBFVkVOVFM6IHtcbiAgICAgIERBU0hCT0FSRFM6ICdkYXNoYm9hcmRzJyxcbiAgICAgIFJFUE9SVFM6ICdyZXBvcnRzJ1xuICAgIH0sXG4gICAgQ09NUE9ORU5UUzoge1xuICAgICAgREFTSEJPQVJEX1ZJRVc6ICdjb250ZXh0LWRhc2hib2FyZCcsXG4gICAgICBEQVNIQk9BUkRfQVZBSUxBQklMSVRZOiAnZGFzaGJvYXJkLWF2YWlsYWJpbGl0eScsXG4gICAgICBSRVBPUlRTX0xJU1Q6ICdyZXBvcnQtZGFzaGJvYXJkLWxpc3QnLFxuICAgICAgQUREX1JFUE9SVDogJ3JlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gICAgICBBRERfREFTSEJPQVJEOiAnYWRkLWRhc2hib2FyZCcsXG4gICAgICBERUxFVEVfREFTSEJPQVJEOiAnY29udGV4dC1kYXNoYm9hcmQnXG4gICAgfSxcbiAgICBDT05URVhUOiB7XG4gICAgICBSRVBPUlQ6ICdyZXBvcnQnLFxuICAgICAgREVWSUNFOiAnZGV2aWNlJyxcbiAgICAgIEFTU0VUOiAnYXNzZXQnLFxuICAgICAgR1JPVVA6ICdncm91cCdcbiAgICB9LFxuICAgIEFDVElPTlM6IHtcbiAgICAgIEFQUExZX0dMT0JBTF9ST0xFU19DSEFOR0VTOiAnYXBwbHlHbG9iYWxSb2xlc0NoYW5nZXMnLFxuICAgICAgREVMRVRFOiAnZGVsZXRlJyxcbiAgICAgIExPQUQ6ICdsb2FkJyxcbiAgICAgIENSRUFURTogJ2NyZWF0ZSdcbiAgICB9XG4gIH1cbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuRGVhY3RpdmF0ZUNvbXBvbmVudCB7XG4gIGNhbkRlYWN0aXZhdGU6ICgpID0+IGJvb2xlYW4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IGNvbnN0IFJFUE9SVF9ERUZBVUxUX05BVklHQVRJT05fTk9ERV9QUklPUklUWSA9IDMwO1xuIl19
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBS1IsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHO0lBQ3hDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO0lBQ3ZDLGFBQWEsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUM7SUFDN0MsWUFBWSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDdEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDckIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDckIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDN0IsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0lBQzlDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQztDQUNXLENBQUM7QUFxSHJFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLE9BQU8sRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxPQUFPLENBQUMsOEJBQThCLENBQUM7SUFDL0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFD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SUFDNUYsTUFBTTtJQUNOLEtBQUs7SUFDTDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGtEQUFrRCxDQUFDO0tBQ3pFO0NBQ08sQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsZ0JBQWdCO0NBQ1IsQ0FBQztBQWFYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEtBQWMsQ0FBQztBQUd4RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxTQUFTLEVBQUU7UUFDVCxNQUFNLEVBQUU7WUFDTixVQUFVLEVBQUUsWUFBWTtZQUN4QixPQUFPLEVBQUUsU0FBUztTQUNuQjtRQUNELFVBQVUsRUFBRTtZQUNWLGNBQWMsRUFBRSxtQkFBbUI7WUFDbkMsc0JBQXNCLEVBQUUsd0JBQXdCO1lBQ2hELFlBQVksRUFBRSx1QkFBdUI7WUFDckMsVUFBVSxFQUFFLHVCQUF1QjtZQUNuQyxhQUFhLEVBQUUsZUFBZTtZQUM5QixnQkFBZ0IsRUFBRSxtQkFBbUI7U0FDdEM7UUFDRCxPQUFPLEVBQUU7WUFDUCxNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxPQUFPO1NBQ2Y7UUFDRCxPQUFPLEVBQUU7WUFDUCwwQkFBMEIsRUFBRSx5QkFBeUI7WUFDckQsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLE1BQU07WUFDWixNQUFNLEVBQUUsUUFBUTtTQUNqQjtLQUNGO0NBQ08sQ0FBQztBQU1YLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIFdpZGdldCxcbiAgRHluYW1pY0NvbXBvbmVudERlZmluaXRpb24sXG4gIFJvdXRlLFxuICBnZXR0ZXh0LFxuICBWaWV3Q29udGV4dCxcbiAgV2lkZ2V0RGlzcGxheVNldHRpbmdzLFxuICBUYWJXaXRoVGVtcGxhdGUsXG4gIFdpZGdldFNldHRpbmdzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvaW50ZXJuYWwvT2JzZXJ2YWJsZSc7XG5cbmV4cG9ydCBjb25zdCBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignQ29udGV4dERhc2hib2FyZENvbmZpZycpO1xuZXhwb3J0IGNvbnN0IERBU0hCT0FSRF9TRVRUSU5HU19DSEFOR0VTID0ge1xuICBjbGFzc2VzOiBnZXR0ZXh0KCd0aGVtZScpLFxuICBnbG9iYWxSb2xlc0lkczogZ2V0dGV4dCgnZ2xvYmFsIHJvbGVzJyksXG4gIHdpZGdldENsYXNzZXM6IGdldHRleHQoJ3dpZGdldCBoZWFkZXIgc3R5bGUnKSxcbiAgd2lkZ2V0TWFyZ2luOiBnZXR0ZXh0KCd3aWRnZXQgbWFyZ2luJyksXG4gIGljb246IGdldHRleHQoJ2ljb24nKSxcbiAgbmFtZTogZ2V0dGV4dCgnbmFtZScpLFxuICBwcmlvcml0eTogZ2V0dGV4dCgncHJpb3JpdHknKSxcbiAgYzh5X0lzTmF2aWdhdG9yTm9kZTogZ2V0dGV4dCgnbmF2aWdhdG9yIGl0ZW0nKSxcbiAgdHJhbnNsYXRlV2lkZ2V0VGl0bGU6IGdldHRleHQoJ3RyYW5zbGF0ZSB3aWRnZXQgdGl0bGUnKVxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUGFydGlhbDxSZWNvcmQ8a2V5b2YgQ29udGV4dERhc2hib2FyZCwgc3RyaW5nPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZENvbmZpZyB7XG4gIHdpZGdldEZpbHRlcj86IChjb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSA9PiBib29sZWFuO1xuICBhbGxvd0Z1bGxzY3JlZW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHJvdXRlcz86IFJvdXRlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dFdpZGdldENvbmZpZyB7XG4gIC8qKlxuICAgKiBTZXR0aW5ncyB0aGF0IGRlZmluZSBob3cgdGhlIGRlZmF1bHQgY29uZmlnIGNvbXBvbmVudCBpc1xuICAgKiBkaXNwbGF5ZWQuIFRoZXkgYXJlIHN0YXRpYyBhbmQgd2lsbCBub3QgYmUgc2F2ZWQuXG4gICAqL1xuICBzZXR0aW5ncz86IFdpZGdldFNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5ncyB0aGF0IGFyZSBpbmplY3RlZCBpbiBhbnkgZGlzcGxheWluZyBjb21wb25lbnQuXG4gICAqL1xuICBkaXNwbGF5U2V0dGluZ3M/OiBXaWRnZXREaXNwbGF5U2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uZmlndXJhdGlvbiB3aGVuIGEgd2lkZ2V0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICBjb25maWc/OiB7XG4gICAgLyoqXG4gICAgICogQW55IG90aGVyIGluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBoZXJlLlxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3RlZCBkZXZpY2Ugb3IgZ3JvdXAgKG5vdGU6IG5hbWluZyBpcyBpbmNvbnNpc3RlbnQgYXMgZ3JvdXAgd2FzIGFkZGVkIGxhdGVyXG4gICAqIGJ1dCBtdXN0IHN0YXkgZm9yIGFscmVhZHkgaW1wbGVtZW50ZWQgd2lkZ2V0cylcbiAgICovXG4gIGRldmljZT86IHtcbiAgICBpZD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcbiAgLyoqXG4gICAqIEFueSBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaGVyZS5cbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQ7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGM4eV9EYXNoYm9hcmRIaXN0b3J5PzogQ29udGV4dERhc2hib2FyZFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmQge1xuICBpY29uPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcmlvcml0eT86IG51bWJlcjtcbiAgZGV2aWNlVHlwZT86IGJvb2xlYW47XG4gIGRldmljZVR5cGVWYWx1ZT86IHN0cmluZztcbiAgaXNGcm96ZW4/OiBib29sZWFuO1xuICBjbGFzc2VzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG4gIHdpZGdldENsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0TWFyZ2luPzogbnVtYmVyO1xuICB0cmFuc2xhdGVXaWRnZXRUaXRsZT86IGJvb2xlYW47XG4gIGdsb2JhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIGNvbHVtbnMgb24gdGhhdCBkYXNoYm9hcmQuXG4gICAqIENhbiBiZSBmcmVlbHkgY2hvc2VuLCBidXQgcHJvZHVjdCB1c2VzIGVpdGhlciAxMiBvciAyNC5cbiAgICovXG4gIGNvbHVtbnM/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzoge1xuICAgIFtpZDogc3RyaW5nXTogV2lkZ2V0O1xuICB9O1xuICBnbG9iYWxSb2xlc0lkcz86IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuICBjOHlfSXNOYXZpZ2F0b3JOb2RlPzogb2JqZWN0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaGlzdG9yeURlc2NyaXB0aW9uPzogRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uO1xuICBjcmVhdGVkPzogc3RyaW5nO1xuICBhdXRob3I/OiBzdHJpbmc7XG59XG4vKipcbiAqIE9iamVjdCBkZXNjcmliaW5nIGNoYW5nZXMgYXBwbGllZCB0byBkYXNoYm9hcmQgc2V0dGluZ3MgYW5kIGl0cyB3aWRnZXRzLiBVc2VkIHRvIGRpc3BsYXkgdXNlci1mcmllbmRseSBjaGFuZ2UgbG9nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbiB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdHlwZSBvZiBkYXNoYm9hcmQgY2hhbmdlIChvciBjcmVhdGlvbikuXG4gICAqL1xuICBjaGFuZ2VUeXBlPzogJ3Jlc2V0JyB8ICdjcmVhdGUnIHwgJ3VwZGF0ZSc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGRhc2hib2FyZCBzZXR0aW5ncyB0aGF0IGhhcyBiZWVuIGNoYW5nZWQuXG4gICAqL1xuICBkYXNoYm9hcmRTZXR0aW5nQ2hhbmdlcz86IChrZXlvZiB0eXBlb2YgREFTSEJPQVJEX1NFVFRJTkdTX0NIQU5HRVMpW107XG4gIC8qKlxuICAgKiBUcnVlIGlmIGRhc2hib2FyZCBpcyB0eXBlZCBkYXNoYm9hcmQsIGZhbHNlIGlmIGl0J3Mgbm90LlxuICAgKi9cbiAgZGV2aWNlVHlwZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBPYmplY3QgY29udGFpbmluZyBsaXN0cyBvZiB3aWRnZXRzIChieSB0aXRsZSkgdGhhdCBoYXMgYmVlbiBjaGFuZ2VkLCBncm91cGVkIGJ5IGNoYW5nZSB0eXBlLCBlLmcuOlxuICAgKiBgYGB0c1xuICAgKiB3aWRnZXRDaGFuZ2VzOiB7XG4gICAqICAgICByZW1vdmVkOiBbJ0FwcGxpY2F0aW9ucyddLFxuICAgKiAgICAgY29uZmlnPzogWydEYXRhIHBvaW50cyBncmFwaCcsICdFdmVudHMgbGlzdCddLFxuICAgKiAgIH0sXG4gICAqIGBgYFxuICAgKi9cbiAgd2lkZ2V0Q2hhbmdlcz86IHtcbiAgICByZW1vdmVkPzogc3RyaW5nW107XG4gICAgYWRkZWQ/OiBzdHJpbmdbXTtcbiAgICBjb25maWc/OiBzdHJpbmdbXTtcbiAgICBhcnJhbmdlbWVudD86IHN0cmluZ1tdO1xuICB9O1xuICAvKipcbiAgICogU3RyaW5nIHVzZWQgdG8gZGlzcGxheSB0aGUgZGF0ZSBmcm9tIHdoaWNoIHRoZSBzdGF0ZSB3YXMgcmVzdG9yZWQuXG4gICAqL1xuICByZXN0b3JlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FID0ge1xuICBpbml0aWFsOiBnZXR0ZXh0KCdJbml0aWFsIHN0YXRlJyksXG4gIGNvbmZpZzogZ2V0dGV4dCgnV2lkZ2V0IGNvbmZpZ3VyYXRpb24gY2hhbmdlZCcpLFxuICByZW1vdmVkOiBnZXR0ZXh0KCdXaWRnZXQgcmVtb3ZlZCcpLFxuICBhZGRlZDogZ2V0dGV4dCgnV2lkZ2V0IGFkZGVkJyksXG4gIGFycmFuZ2VtZW50OiBnZXR0ZXh0KCdXaWRnZXRzIHJlYXJyYW5nZWQnKVxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPGtleW9mIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvblsnd2lkZ2V0Q2hhbmdlcyddIHwgJ2luaXRpYWwnLCBzdHJpbmc+O1xuLyoqXG4gKiBPYmplY3QgcmVwcmVzZW50aW5nIHN0YXRlIG9mIGRhc2hib2FyZCB3aWRnZXRzLiBJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIGFsbG93IHRvIHVuZG8gYW5kIHJlZG8gY2hhbmdlc1xuICogYXBwbGllZCB0byBkYXNoYm9hcmQgY2hpbGRyZW4uXG4gKi9cbmV4cG9ydCB0eXBlIERhc2hib2FyZENoaWxkcmVuU3RhdGUgPSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjaGFuZ2UgYXBwbGllZCB0byBkYXNoYm9hcmQgdGhhdCByZXN1bHRzIGluIGN1cnJlbnQgc3RhdGUsIGUuZy4gJ3dpZGdldCByZW1vdmVkJ1xuICAgKi9cbiAgbmFtZTogKHR5cGVvZiBEQVNIQk9BUkRfQ0hJTERSRU5fU1RBVEVfTkFNRSlba2V5b2YgdHlwZW9mIERBU0hCT0FSRF9DSElMRFJFTl9TVEFURV9OQU1FXTtcbiAgLyoqXG4gICAqIERhc2hib2FyZCBjaGlsZHJlbiBpbiBwYXJ0aWN1bGFyLCBpbW11dGFibGUgc3RhdGUuXG4gICAqL1xuICBjaGlsZHJlbjogQ29udGV4dERhc2hib2FyZFsnY2hpbGRyZW4nXTtcbiAgLyoqXG4gICAqIE9iamVjdCBkZXNjcmliaW5nIGNoYW5nZXMgYXBwbGllZCB0byBkYXNoYm9hcmQgd2lkZ2V0cyB0aGF0IGNhbiBiZSBlYXNpbHkgbWFwcGVkIHRvIERhc2hib2FyZEhpc3RvcnlEZXNjcmlwdGlvbiB3aWRnZXRDaGFuZ2VzLlxuICAgKiBgYGB0c1xuICAgKiB7XG4gICAqICAgIHJlbW92ZWQ6IHtcbiAgICogICAgICAgIDA5Njk2OTI2MTc2Mzc3MDM6IHsgY29tcG9uZW50SWQ6IFwiRGF0YSBwb2ludHMgZ3JhcGhcIiwgY29uZmlnOiB7Li4ufSwgY2xhc3Nlczogey4uLn0gLi4ufVxuICAgKiAgICB9LFxuICAgKiAgICBjb25maWc6IHtcbiAgICogICAgICAgIDYzNDc1NjczNDU3Njc2NTM6IHsgY29tcG9uZW50SWQ6IFwiQXBwbGljYXRpb25zXCIsIGNvbmZpZzogey4uLn0sIGNsYXNzZXM6IHsuLi59IC4uLn0sXG4gICAqICAgICAgICA2NDU2MzQ1NjM0NTY0NTY2OiB7IGNvbXBvbmVudElkOiBcIkV2ZW50cyBsaXN0XCIsIGNvbmZpZzogey4uLn0sIGNsYXNzZXM6IHsuLi59IC4uLn0sXG4gICAqICAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGNoYW5nZUhpc3Rvcnk6IFBhcnRpYWw8XG4gICAgUmVjb3JkPFxuICAgICAga2V5b2YgRGFzaGJvYXJkSGlzdG9yeURlc2NyaXB0aW9uWyd3aWRnZXRDaGFuZ2VzJ10sXG4gICAgICB7XG4gICAgICAgIFtpZDogc3RyaW5nXTogV2lkZ2V0O1xuICAgICAgfVxuICAgID5cbiAgPjtcbn07XG5cbmV4cG9ydCBlbnVtIENvbnRleHREYXNoYm9hcmRUeXBlIHtcbiAgRGV2aWNlID0gJ2RldmljZScsXG4gIFR5cGUgPSAndHlwZScsXG4gIEdyb3VwID0gJ2dyb3VwJyxcbiAgTmFtZWQgPSAnbmFtZScsXG4gIFJlcG9ydCA9ICdyZXBvcnQnXG59XG5cbmV4cG9ydCBlbnVtIERhc2hib2FyZERldGFpbHNUYWJJZCB7XG4gIEdFTkVSQUwgPSAnZ2VuZXJhbCcsXG4gIEFQUEVBUkFOQ0UgPSAnYXBwZWFyYW5jZScsXG4gIFZFUlNJT05ISVNUT1JZID0gJ3ZlcnNpb25IaXN0b3J5J1xufVxuXG5leHBvcnQgdHlwZSBEYXNoYm9hcmREZXRhaWxzVGFicyA9IFJlY29yZDxcbiAgRGFzaGJvYXJkRGV0YWlsc1RhYklkLFxuICBUYWJXaXRoVGVtcGxhdGUgJiB7IGZlYXR1cmVJZDogRGFzaGJvYXJkRGV0YWlsc1RhYklkIH1cbj47XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfSEVBREVSX0NMQVNTRVMgPSBbXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnUmVndWxhcmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLXJlZ3VsYXInLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBubyBib3JkZXIgYmV0d2VlbiBoZWFkZXIgYW5kIGNvbnRlbnQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCb3JkZXJgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1ib3JkZXInLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBhIHNtYWxsIHNlcGFyYXRpb24gYm9yZGVyIGJldHdlZW4gaGVhZGVyIGFuZCBjb250ZW50LicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnT3ZlcmxheWBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLW92ZXJsYXknLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGNvbnRlbnQgb3ZlcmxheXMgdGhlIGhlYWRlci4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0hpZGRlbmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLWhpZGRlbicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGVhZGVyIGlzIG5vdCBzaG93bi4nKVxuICB9XG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgV0lER0VUX0NPTlRFTlRfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCcmFuZGVkYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC1icmFuZGVkJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBpcyBzdHlsZWQgd2l0aCB0aGUgbWFpbiBicmFuZCBjb2xvci4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ01hdGNoIGRhc2hib2FyZGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtbGlnaHQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGFwcGVhcmFuY2UgbWF0Y2hlcyB0aGUgZGFzaGJvYXJkIGFwcGVhcmFuY2UuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaWdodGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBsaWdodCBhcHBlYXJhbmNlLCB0aGF0IGlzLCBkYXJrIHRleHQgb24gbGlnaHQgYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0Rhcmtgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWRhcmsnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LXRyYW5zcGFyZW50JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbm8gYmFja2dyb3VuZC4nKVxuICB9XG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgREFTSEJPQVJEX1RIRU1FX0NMQVNTRVMgPSBbXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTWF0Y2ggVUlgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtbGlnaHQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgZGFzaGJvYXJkIGFwcGVhcmFuY2UgbWF0Y2hlcyB0aGUgVUkgYXBwZWFyYW5jZS4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0xpZ2h0YHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLXdoaXRlJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICdUaGUgZGFzaGJvYXJkIGhhcyBsaWdodCBhcHBlYXJhbmNlLCB0aGF0IGlzLCBkYXJrIHRleHQgb24gbGlnaHQgYmFja2dyb3VuZC4nXG4gICAgKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0RhcmtgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtZGFyaycsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAnVGhlIGRhc2hib2FyZCBoYXMgZGFyayBhcHBlYXJhbmNlLCB0aGF0IGlzLCBsaWdodCB0ZXh0IG9uIGRhcmsgYmFja2dyb3VuZC4nXG4gICAgKVxuICB9LFxuICAvLyB7XG4gIC8vICAgbGFiZWw6IGdldHRleHQoJ1RyYW5zcGFyZW50YHRoZW1lYCcpLFxuICAvLyAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLXRyYW5zcGFyZW50JyxcbiAgLy8gICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgLy8gICAgICdUaGUgZGFzaGJvYXJkIGlzIHN0eWxlZCB3aXRoIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBhbmQgdGhlcmVmb3JlIGlzIGJvcmRlci1sZXNzLidcbiAgLy8gICApXG4gIC8vIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnQnJhbmRlZGB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1icmFuZGVkJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIGRhc2hib2FyZCBpcyBzdHlsZWQgdXNpbmcgdGhlIGJyYW5kIHBhbGV0dGUuJylcbiAgfVxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNUWUxJTkdfQ0xBU1NfUFJFRklYRVMgPSBbXG4gICdkYXNoYm9hcmQtdGhlbWUtJyxcbiAgJ3BhbmVsLXRpdGxlLScsXG4gICdwYW5lbC1jb250ZW50LSdcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkQ29weUNsaXBib2FyZCB7XG4gIGRhc2hib2FyZElkOiBzdHJpbmc7XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgY29udGV4dDogRGFzaGJvYXJkQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRDb250ZXh0IHtcbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG4gIGNvbnRleHREYXRhOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0Pjtcbn1cblxuZXhwb3J0IGNvbnN0IEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURUQgPSAnYWxsJyBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIERhc2hib2FyZEdsb2JhbFJvbGVzID0gbnVtYmVyW10gfCB0eXBlb2YgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRDtcblxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfRVhQRVJJRU5DRSA9IHtcbiAgREFTSEJPQVJEOiB7XG4gICAgRVZFTlRTOiB7XG4gICAgICBEQVNIQk9BUkRTOiAnZGFzaGJvYXJkcycsXG4gICAgICBSRVBPUlRTOiAncmVwb3J0cydcbiAgICB9LFxuICAgIENPTVBPTkVOVFM6IHtcbiAgICAgIERBU0hCT0FSRF9WSUVXOiAnY29udGV4dC1kYXNoYm9hcmQnLFxuICAgICAgREFTSEJPQVJEX0FWQUlMQUJJTElUWTogJ2Rhc2hib2FyZC1hdmFpbGFiaWxpdHknLFxuICAgICAgUkVQT1JUU19MSVNUOiAncmVwb3J0LWRhc2hib2FyZC1saXN0JyxcbiAgICAgIEFERF9SRVBPUlQ6ICdyZXBvcnQtZGFzaGJvYXJkLWxpc3QnLFxuICAgICAgQUREX0RBU0hCT0FSRDogJ2FkZC1kYXNoYm9hcmQnLFxuICAgICAgREVMRVRFX0RBU0hCT0FSRDogJ2NvbnRleHQtZGFzaGJvYXJkJ1xuICAgIH0sXG4gICAgQ09OVEVYVDoge1xuICAgICAgUkVQT1JUOiAncmVwb3J0JyxcbiAgICAgIERFVklDRTogJ2RldmljZScsXG4gICAgICBBU1NFVDogJ2Fzc2V0JyxcbiAgICAgIEdST1VQOiAnZ3JvdXAnXG4gICAgfSxcbiAgICBBQ1RJT05TOiB7XG4gICAgICBBUFBMWV9HTE9CQUxfUk9MRVNfQ0hBTkdFUzogJ2FwcGx5R2xvYmFsUm9sZXNDaGFuZ2VzJyxcbiAgICAgIERFTEVURTogJ2RlbGV0ZScsXG4gICAgICBMT0FEOiAnbG9hZCcsXG4gICAgICBDUkVBVEU6ICdjcmVhdGUnXG4gICAgfVxuICB9XG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbkRlYWN0aXZhdGVDb21wb25lbnQge1xuICBjYW5EZWFjdGl2YXRlOiAoKSA9PiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj47XG59XG5cbmV4cG9ydCBjb25zdCBSRVBPUlRfREVGQVVMVF9OQVZJR0FUSU9OX05PREVfUFJJT1JJVFkgPSAzMDtcbiJdfQ==
|