@lowcodeunit/applications-flow-common 1.33.93-lets-get-social-ish → 1.33.99-lets-get-social-ish
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/lowcodeunit-applications-flow-common.umd.js +1149 -493
- package/bundles/lowcodeunit-applications-flow-common.umd.js.map +1 -1
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js +2 -2
- package/bundles/lowcodeunit-applications-flow-common.umd.min.js.map +1 -1
- package/esm2015/lcu.api.js +2 -1
- package/esm2015/lib/applications-flow.module.js +22 -6
- package/esm2015/lib/controls/build-pipeline-form/build-pipeline-form.component.js +69 -0
- package/esm2015/lib/controls/devops-source-control-form/devops-source-control-form.component.js +418 -0
- package/esm2015/lib/controls/processor-details-form/processor-details-form.component.js +2 -2
- package/esm2015/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.js +22 -0
- package/esm2015/lib/dialogs/source-control-dialog/source-control-dialog.component.js +22 -0
- package/esm2015/lib/elements/base-form/base-form.component.js +5 -5
- package/esm2015/lib/elements/projects/controls/builds/builds.component.js +4 -9
- package/esm2015/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/forms/source-control/source-control.component.js +3 -6
- package/esm2015/lib/elements/projects/controls/header/header.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.js +1 -1
- package/esm2015/lib/elements/projects/controls/project-items/project-items.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.js +8 -10
- package/esm2015/lib/elements/projects/controls/tabs/devops/devops.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.js +7 -7
- package/esm2015/lib/elements/projects/controls/tabs/domains/domains.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.js +6 -6
- package/esm2015/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.js +6 -6
- package/esm2015/lib/elements/projects/projects.component.js +16 -143
- package/esm2015/lib/services/eac.service.js +217 -0
- package/esm2015/lowcodeunit-applications-flow-common.js +32 -29
- package/fesm2015/lowcodeunit-applications-flow-common.js +765 -239
- package/fesm2015/lowcodeunit-applications-flow-common.js.map +1 -1
- package/lcu.api.d.ts +1 -0
- package/lcu.api.d.ts.map +1 -1
- package/lib/applications-flow.module.d.ts.map +1 -1
- package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +28 -0
- package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts.map +1 -0
- package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +75 -0
- package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts.map +1 -0
- package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +14 -0
- package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts.map +1 -0
- package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts +14 -0
- package/lib/dialogs/source-control-dialog/source-control-dialog.component.d.ts.map +1 -0
- package/lib/elements/base-form/base-form.component.d.ts +3 -3
- package/lib/elements/base-form/base-form.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/builds/builds.component.d.ts +1 -3
- package/lib/elements/projects/controls/builds/builds.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts +3 -3
- package/lib/elements/projects/controls/create-project-wizard/create-project-wizard.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts +1 -3
- package/lib/elements/projects/controls/forms/source-control/source-control.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/header/header.component.d.ts +3 -3
- package/lib/elements/projects/controls/header/header.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/hosting-details-form-group/hosting-details-form-group.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts +3 -3
- package/lib/elements/projects/controls/project-items/project-items.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/apps-flow/apps-flow.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/devops/devops.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/dfs-modifiers/dfs-modifiers.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/domains/domains.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/base-form-test/base-form-test.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/project-details/project-details.component.d.ts.map +1 -1
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts +3 -3
- package/lib/elements/projects/controls/tabs/general/forms/root-directory/root-directory.component.d.ts.map +1 -1
- package/lib/elements/projects/projects.component.d.ts +4 -11
- package/lib/elements/projects/projects.component.d.ts.map +1 -1
- package/lib/services/eac.service.d.ts +54 -0
- package/lib/services/eac.service.d.ts.map +1 -0
- package/lowcodeunit-applications-flow-common.d.ts +31 -28
- package/lowcodeunit-applications-flow-common.d.ts.map +1 -1
- package/lowcodeunit-applications-flow-common.metadata.json +1 -1
- package/package.json +1 -1
- package/esm2015/lib/services/applications-flow-events.service.js +0 -83
- package/lib/services/applications-flow-events.service.d.ts +0 -58
- package/lib/services/applications-flow-events.service.d.ts.map +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
2
|
import { FormBuilder, Validators, } from '@angular/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { EaCService } from '../../../../../services/eac.service';
|
|
4
4
|
import { Guid } from '@lcu/common';
|
|
5
5
|
import { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';
|
|
6
6
|
import { ApplicationsFlowService } from '../../../../../services/applications-flow.service';
|
|
7
7
|
export class AppsFlowComponent {
|
|
8
8
|
// Constructors
|
|
9
|
-
constructor(formBldr, appsFlowSvc,
|
|
9
|
+
constructor(formBldr, appsFlowSvc, eacSvc) {
|
|
10
10
|
this.formBldr = formBldr;
|
|
11
11
|
this.appsFlowSvc = appsFlowSvc;
|
|
12
|
-
this.
|
|
12
|
+
this.eacSvc = eacSvc;
|
|
13
13
|
this.EditingApplicationLookup = null;
|
|
14
14
|
this.redirectTooltip = '';
|
|
15
15
|
// this.IsPermanent = false;
|
|
@@ -222,9 +222,7 @@ export class AppsFlowComponent {
|
|
|
222
222
|
this.SetEditingApplication(Guid.CreateRaw());
|
|
223
223
|
}
|
|
224
224
|
DeleteApplication(appLookup, appName) {
|
|
225
|
-
|
|
226
|
-
this.appsFlowEventsSvc.DeleteApplication(appLookup);
|
|
227
|
-
}
|
|
225
|
+
this.eacSvc.DeleteApplication(appLookup, appName);
|
|
228
226
|
}
|
|
229
227
|
LCUTypeChanged(event) {
|
|
230
228
|
this.LCUType = event.value;
|
|
@@ -363,7 +361,7 @@ export class AppsFlowComponent {
|
|
|
363
361
|
else if (app) {
|
|
364
362
|
app.SourceControlLookup = null;
|
|
365
363
|
}
|
|
366
|
-
this.
|
|
364
|
+
this.eacSvc.SaveApplicationAsCode(saveAppReq);
|
|
367
365
|
}
|
|
368
366
|
SetEditingApplication(appLookup) {
|
|
369
367
|
this.EditingApplicationLookup = appLookup;
|
|
@@ -383,7 +381,7 @@ export class AppsFlowComponent {
|
|
|
383
381
|
}
|
|
384
382
|
Unpack(appLookup, app) {
|
|
385
383
|
var _a, _b, _c;
|
|
386
|
-
this.
|
|
384
|
+
this.eacSvc.UnpackLowCodeUnit({
|
|
387
385
|
ApplicationLookup: appLookup,
|
|
388
386
|
ApplicationName: (_a = app.Application) === null || _a === void 0 ? void 0 : _a.Name,
|
|
389
387
|
Version: ((_b = app.LowCodeUnit) === null || _b === void 0 ? void 0 : _b.Version) || ((_c = app.LowCodeUnit) === null || _c === void 0 ? void 0 : _c.Build),
|
|
@@ -583,10 +581,10 @@ AppsFlowComponent.decorators = [
|
|
|
583
581
|
AppsFlowComponent.ctorParameters = () => [
|
|
584
582
|
{ type: FormBuilder },
|
|
585
583
|
{ type: ApplicationsFlowService },
|
|
586
|
-
{ type:
|
|
584
|
+
{ type: EaCService }
|
|
587
585
|
];
|
|
588
586
|
AppsFlowComponent.propDecorators = {
|
|
589
587
|
Data: [{ type: Input, args: ['data',] }],
|
|
590
588
|
SourceControlFormControls: [{ type: ViewChild, args: [SourceControlFormControlsComponent,] }]
|
|
591
589
|
};
|
|
592
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hcHBsaWNhdGlvbnMtZmxvdy9hcHBsaWNhdGlvbnMtZmxvdy9wcm9qZWN0cy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnRzL3Byb2plY3RzL2NvbnRyb2xzL3RhYnMvYXBwcy1mbG93L2FwcHMtZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxXQUFXLEVBRVgsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLDZCQUE2QixHQUU5QixNQUFNLDBEQUEwRCxDQUFDO0FBUWxFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDekcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFPNUYsTUFBTSxPQUFPLGlCQUFpQjtJQTZRNUIsZ0JBQWdCO0lBQ2hCLFlBQ1ksUUFBcUIsRUFDckIsV0FBb0MsRUFDcEMsaUJBQWdEO1FBRmhELGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBK0I7UUFFMUQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUxQiw0QkFBNEI7UUFFNUIsMkJBQTJCO0lBQzdCLENBQUM7SUF4UkQsVUFBVTtJQUVWLGNBQWM7SUFDZCxJQUFXLGtCQUFrQjs7UUFDM0IsYUFBTyxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUM7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QUFDLE1BQU07d0NBdUxaLFNBQVMsU0FBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbnNGbG93RXZlbnRzU2VydmljZSxcbiAgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgRWFDRW52aXJvbm1lbnRBc0NvZGUsXG4gIEVhQ1Byb2Nlc3NvcixcbiAgRWFDUHJvamVjdEFzQ29kZSxcbiAgRWFDU291cmNlQ29udHJvbCxcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEd1aWQgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgU291cmNlQ29udHJvbEZvcm1Db250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm1zL3NvdXJjZS1jb250cm9sL3NvdXJjZS1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsY3UtYXBwcy1mbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcHMtZmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcHMtZmxvdy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBzRmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICBGaWVsZHNcblxuICAvLyAgUHJvcGVydGllc1xuICBwdWJsaWMgZ2V0IEFQSVJvb3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5hcGlSb290O1xuICB9XG5cbiAgcHVibGljIEFwcGxpY2F0aW9uRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGdldCBBcHBsaWNhdGlvbklERm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuYXBwbGljYXRpb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQXBwbGljYXRpb25Mb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLkFwcGxpY2F0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9uUm91dGVzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlJvdXRlZEFwcGxpY2F0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9uc0JhbmsoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9IHtcbiAgICByZXR1cm4gdGhpcy5EYXRhPy5BcHBsaWNhdGlvbnMgfHwge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9ucygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0ge1xuICAgIGNvbnN0IGFwcHM6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDQXBwbGljYXRpb25Bc0NvZGUgfSA9IHt9O1xuXG4gICAgdGhpcy5Qcm9qZWN0LkFwcGxpY2F0aW9uTG9va3Vwcy5mb3JFYWNoKChhcHBMb29rdXApID0+IHtcbiAgICAgIGFwcHNbYXBwTG9va3VwXSA9IHRoaXMuQXBwbGljYXRpb25zQmFua1thcHBMb29rdXBdO1xuICAgIH0pO1xuICAgIHJldHVybiBhcHBzO1xuICB9XG5cbiAgcHVibGljIGdldCBCdWlsZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmJ1aWxkO1xuICB9XG5cbiAgcHVibGljIGdldCBDbGllbnRJREZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmNsaWVudElkO1xuICB9XG5cbiAgcHVibGljIGdldCBDbGllbnRTZWNyZXRGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5jbGllbnRTZWNyZXQ7XG4gIH1cblxuICBwdWJsaWMgQ3VycmVudEFwcGxpY2F0aW9uUm91dGU6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IEN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoXG4gICAgICB0aGlzLlJvdXRlZEFwcGxpY2F0aW9uc1t0aGlzLkN1cnJlbnRBcHBsaWNhdGlvblJvdXRlXSB8fCB7fVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoJ2RhdGEnKVxuICBwdWJsaWMgRGF0YToge1xuICAgIEFwcGxpY2F0aW9uczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIEVudmlyb25tZW50OiBFYUNFbnZpcm9ubWVudEFzQ29kZTtcbiAgICBQcmltYXJ5SG9zdDogc3RyaW5nO1xuICAgIFByb2plY3Q6IEVhQ1Byb2plY3RBc0NvZGU7XG4gICAgUHJvamVjdExvb2t1cDogc3RyaW5nO1xuICB9O1xuXG4gIHB1YmxpYyBnZXQgRGVmYXVsdEZpbGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5kZWZhdWx0RmlsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRGVmYXVsdFNvdXJjZUNvbnRyb2woKTogRWFDU291cmNlQ29udHJvbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIE9yZ2FuaXphdGlvbjogdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvd0NvZGVVbml0Py5Pcmdhbml6YXRpb24sXG4gICAgICBSZXBvc2l0b3J5OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/LlJlcG9zaXRvcnksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRGVzY3JpcHRpb25Gb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRWRpdGluZ0FwcGxpY2F0aW9uKCk6IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIHtcbiAgICBsZXQgYXBwID0gdGhpcy5BcHBsaWNhdGlvbnNcbiAgICAgID8gdGhpcy5BcHBsaWNhdGlvbnNbdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXBdXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAoYXBwID09IG51bGwgJiYgdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXApIHtcbiAgICAgIGFwcCA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBwdWJsaWMgRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBIYXNCdWlsZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmhhc0J1aWxkO1xuICB9XG5cbiAgcHVibGljIGdldCBJbmJvdW5kUGF0aEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmluYm91bmRQYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBJc1ByaXZhdGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5pc1ByaXZhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IElzVHJpZ2dlclNpZ25JbkZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmlzVHJpZ2dlclNpZ25JbjtcbiAgfVxuXG4gIHB1YmxpYyBMQ1VUeXBlOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBNZXRob2RzRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMubWV0aG9kcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgTmFtZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFBhY2thZ2VGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5wYWNrYWdlO1xuICB9XG5cbiAgcHVibGljIElzUGVybWFuZW50OiBib29sZWFuO1xuXG4gIHB1YmxpYyBJc1ByZXNlcnZlOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWRpcmVjdFRvb2x0aXA6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IFBlcm1hbmVudEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnBlcm1hbmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJlc2VydmVNZXRob2RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5wcmVzZXJ2ZU1ldGhvZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUHJpbWFyeUhvc3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLlByaW1hcnlIb3N0O1xuICB9XG5cbiAgcHVibGljIFByb2Nlc3NvclR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IFByb2plY3QoKTogRWFDUHJvamVjdEFzQ29kZSB7XG4gICAgcmV0dXJuIHRoaXMuRGF0YS5Qcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBQcm9qZWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuRGF0YS5Qcm9qZWN0TG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBSZWRpcmVjdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnJlZGlyZWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBSb3V0ZWRBcHBsaWNhdGlvbnMoKToge1xuICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICB9IHtcbiAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5BcHBsaWNhdGlvbnMpO1xuXG4gICAgY29uc3QgYXBwcyA9IGFwcExvb2t1cHMubWFwKChhcHBMb29rdXApID0+IHRoaXMuQXBwbGljYXRpb25zW2FwcExvb2t1cF0pO1xuXG4gICAgbGV0IGFwcFJvdXRlcyA9XG4gICAgICBhcHBzLm1hcCgoYXBwKSA9PiB7XG4gICAgICAgIHJldHVybiBhcHAuTG9va3VwQ29uZmlnPy5QYXRoUmVnZXgucmVwbGFjZSgnLionLCAnJyk7XG4gICAgICB9KSB8fCBbXTtcblxuICAgIGFwcFJvdXRlcyA9IGFwcFJvdXRlcy5maWx0ZXIoKGFyKSA9PiBhciAhPSBudWxsKTtcblxuICAgIGxldCByb3V0ZUJhc2VzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXBwUm91dGVzLmZvckVhY2goKGFwcFJvdXRlKSA9PiB7XG4gICAgICBjb25zdCBhcHBSb3V0ZVBhcnRzID0gYXBwUm91dGUuc3BsaXQoJy8nKTtcblxuICAgICAgY29uc3QgYXBwUm91dGVCYXNlID0gYC8ke2FwcFJvdXRlUGFydHNbMV19YDtcblxuICAgICAgaWYgKHJvdXRlQmFzZXMuaW5kZXhPZihhcHBSb3V0ZUJhc2UpIDwgMCkge1xuICAgICAgICByb3V0ZUJhc2VzLnB1c2goYXBwUm91dGVCYXNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCB3b3JraW5nQXBwTG9va3VwcyA9IFsuLi4oYXBwTG9va3VwcyB8fCBbXSldO1xuXG4gICAgcm91dGVCYXNlcyA9IHJvdXRlQmFzZXMuc29ydCgoYSwgYikgPT4gYi5sb2NhbGVDb21wYXJlKGEpKTtcblxuICAgIGNvbnN0IHJvdXRlU2V0ID1cbiAgICAgIHJvdXRlQmFzZXMucmVkdWNlKChwcmV2Um91dGVNYXAsIGN1cnJlbnRSb3V0ZUJhc2UpID0+IHtcbiAgICAgICAgY29uc3Qgcm91dGVNYXAgPSB7XG4gICAgICAgICAgLi4ucHJldlJvdXRlTWFwLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2FsKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2EgPSB0aGlzLkFwcGxpY2F0aW9uc1t3YWxdO1xuXG4gICAgICAgICAgcmV0dXJuIHdhLkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoY3VycmVudFJvdXRlQmFzZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJvdXRlTWFwW2N1cnJlbnRSb3V0ZUJhc2VdID1cbiAgICAgICAgICBmaWx0ZXJlZEFwcExvb2t1cHMucmVkdWNlKChwcmV2QXBwTWFwLCBhcHBMb29rdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcE1hcCA9IHtcbiAgICAgICAgICAgICAgLi4ucHJldkFwcE1hcCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGFwcE1hcFthcHBMb29rdXBdID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXTtcblxuICAgICAgICAgICAgcmV0dXJuIGFwcE1hcDtcbiAgICAgICAgICB9LCB7fSkgfHwge307XG5cbiAgICAgICAgd29ya2luZ0FwcExvb2t1cHMgPSB3b3JraW5nQXBwTG9va3Vwcy5maWx0ZXIoKHdhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQXBwTG9va3Vwcy5pbmRleE9mKHdhKSA8IDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByb3V0ZU1hcDtcbiAgICAgIH0sIHt9KSB8fCB7fTtcblxuICAgIGxldCByb3V0ZVNldEtleXMgPSBPYmplY3Qua2V5cyhyb3V0ZVNldCk7XG5cbiAgICByb3V0ZVNldEtleXMgPSByb3V0ZVNldEtleXMuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcblxuICAgIGNvbnN0IHJvdXRlU2V0UmVzdWx0ID0ge307XG5cbiAgICByb3V0ZVNldEtleXMuZm9yRWFjaCgocnNrKSA9PiAocm91dGVTZXRSZXN1bHRbcnNrXSA9IHJvdXRlU2V0W3Jza10pKTtcblxuICAgIHJldHVybiByb3V0ZVNldFJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUm91dGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5yb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU2NvcGVzRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuc2NvcGVzO1xuICB9XG5cbiAgcHVibGljIGdldCBTZWN1cml0eUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnNlY3VyaXR5O1xuICB9XG5cbiAgQFZpZXdDaGlsZChTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzQ29tcG9uZW50KVxuICBwdWJsaWMgU291cmNlQ29udHJvbEZvcm1Db250cm9sczogU291cmNlQ29udHJvbEZvcm1Db250cm9sc0NvbXBvbmVudDtcblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xMb29rdXBGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5zb3VyY2VDb250cm9sTG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBTb3VyY2VDb250cm9sTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5Tb3VyY2VDb250cm9scyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xzKCk6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDU291cmNlQ29udHJvbCB9IHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLkVudmlyb25tZW50LlNvdXJjZXMgfHwge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNQQVJvb3RGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5zcGFSb290O1xuICB9XG5cbiAgcHVibGljIGdldCBUb2tlbkxvb2t1cEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnRva2VuTG9va3VwO1xuICB9XG5cbiAgcHVibGljIGdldCBWZXJzaW9uRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMudmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgWmlwRmlsZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnppcEZpbGU7XG4gIH1cblxuICAvLyAgQ29uc3RydWN0b3JzXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBmb3JtQmxkcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGFwcHNGbG93U3ZjOiBBcHBsaWNhdGlvbnNGbG93U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXBwc0Zsb3dFdmVudHNTdmM6IEFwcGxpY2F0aW9uc0Zsb3dFdmVudHNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwID0gbnVsbDtcbiAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICcnO1xuXG4gICAgLy8gdGhpcy5Jc1Blcm1hbmVudCA9IGZhbHNlO1xuXG4gICAgLy8gdGhpcy5Jc1ByZXNlcnZlID0gZmFsc2U7XG4gIH1cblxuICAvLyAgTGlmZSBDeWNsZVxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuQXBwbGljYXRpb25Mb29rdXBzPy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5DcmVhdGVOZXdBcHBsaWNhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vICBBUEkgTWV0aG9kc1xuICBwdWJsaWMgQ3JlYXRlTmV3QXBwbGljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5TZXRFZGl0aW5nQXBwbGljYXRpb24oR3VpZC5DcmVhdGVSYXcoKSk7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlQXBwbGljYXRpb24oYXBwTG9va3VwOiBzdHJpbmcsIGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFwcGxpY2F0aW9uICcke2FwcE5hbWV9Jz9gKSkge1xuICAgICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5EZWxldGVBcHBsaWNhdGlvbihhcHBMb29rdXApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBMQ1VUeXBlQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5MQ1VUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnNldHVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBQcm9jZXNzb3JUeXBlQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5Qcm9jZXNzb3JUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnNldHVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBEZXRlcm1pbmVUb29sdGlwVGV4dCgpIHtcbiAgICBsZXQgcGVybWFuZW50VmFsdWUgPSB0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuICAgIGxldCBwcmVzZXJ2ZVZhbHVlID0gdGhpcy5QcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgaWYgKHBlcm1hbmVudFZhbHVlID09PSB0cnVlICYmIHByZXNlcnZlVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICczMDEg4oCTIFBlcm1hbmVudCBhbmQgTm90IFByZXNlcnZlJztcbiAgICB9IGVsc2UgaWYgKHBlcm1hbmVudFZhbHVlID09PSBmYWxzZSAmJiBwcmVzZXJ2ZVZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzAyIOKAkyBOb3QgUGVybWFuZW50IGFuZCBOb3QgUHJlc2VydmUnO1xuICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IGZhbHNlICYmIHByZXNlcnZlVmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJzMwNyDigJMgTm90IFBlcm1hbmVudCBhbmQgUHJlc2VydmUnO1xuICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IHRydWUgJiYgcHJlc2VydmVWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzA4IOKAkyBQZXJtYW5lbnQgYW5kIFByZXNlcnZlJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgR2V0UHJvY2Vzc29yVHlwZShhcHBMb29rdXA6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHByb2Nlc3NvclR5cGUgPSAnJztcbiAgICBwcm9jZXNzb3JUeXBlID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXS5Qcm9jZXNzb3IuVHlwZVxuICAgICAgPyB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdLlByb2Nlc3Nvci5UeXBlXG4gICAgICA6ICcnO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiUHR5cGUgPSBcIiwgcHJvY2Vzc29yVHlwZSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBFZGl0QXBwbGljYXRpb25Sb3V0ZUNsaWNrZWQoYXBwUm91dGU6IGFueSkge1xuICAgIHRoaXMuQ3VycmVudEFwcGxpY2F0aW9uUm91dGUgPSBhcHBSb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBTYXZlQXBwbGljYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgYXBwOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSA9IHtcbiAgICAgIEFwcGxpY2F0aW9uOiB7XG4gICAgICAgIE5hbWU6IHRoaXMuTmFtZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5EZXNjcmlwdGlvbkZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICBQcmlvcml0eVNoaWZ0OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uQXBwbGljYXRpb24/LlByaW9yaXR5U2hpZnQgfHwgMCxcbiAgICAgIH0sXG4gICAgICBBY2Nlc3NSaWdodExvb2t1cHM6IFtdLFxuICAgICAgRGF0YVRva2Vuczoge30sXG4gICAgICBMaWNlbnNlQ29uZmlndXJhdGlvbkxvb2t1cHM6IFtdLFxuICAgICAgTG9va3VwQ29uZmlnOiB7XG4gICAgICAgIElzUHJpdmF0ZTogdGhpcy5Jc1ByaXZhdGVGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgSXNUcmlnZ2VyU2lnbkluOiB0aGlzLklzUHJpdmF0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgPyB0aGlzLklzVHJpZ2dlclNpZ25JbkZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgUGF0aFJlZ2V4OiBgJHt0aGlzLlJvdXRlRm9ybUNvbnRyb2wudmFsdWV9LipgLFxuICAgICAgICBRdWVyeVJlZ2V4OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG9va3VwQ29uZmlnPy5RdWVyeVJlZ2V4IHx8ICcnLFxuICAgICAgICBIZWFkZXJSZWdleDogdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvb2t1cENvbmZpZz8uSGVhZGVyUmVnZXggfHwgJycsXG4gICAgICAgIEFsbG93ZWRNZXRob2RzOiB0aGlzLk1ldGhvZHNGb3JtQ29udHJvbD8udmFsdWVcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKCh2OiBzdHJpbmcpID0+ICEhdiksXG4gICAgICB9LFxuICAgICAgUHJvY2Vzc29yOiB7XG4gICAgICAgIFR5cGU6IHRoaXMuUHJvY2Vzc29yVHlwZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHN3aXRjaCAoYXBwLlByb2Nlc3Nvci5UeXBlKSB7XG4gICAgICBjYXNlICdERlMnOlxuICAgICAgICBhcHAuUHJvY2Vzc29yLkJhc2VIcmVmID0gYCR7dGhpcy5Sb3V0ZUZvcm1Db250cm9sLnZhbHVlfS9gLnJlcGxhY2UoXG4gICAgICAgICAgJy8vJyxcbiAgICAgICAgICAnLydcbiAgICAgICAgKTtcblxuICAgICAgICBhcHAuUHJvY2Vzc29yLkRlZmF1bHRGaWxlID1cbiAgICAgICAgICB0aGlzLkRlZmF1bHRGaWxlRm9ybUNvbnRyb2wudmFsdWUgfHwgJ2luZGV4Lmh0bWwnO1xuXG4gICAgICAgIGFwcC5Mb3dDb2RlVW5pdCA9IHtcbiAgICAgICAgICBUeXBlOiB0aGlzLkxDVVR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChhcHAuTG93Q29kZVVuaXQuVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0dpdEh1Yic6XG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuT3JnYW5pemF0aW9uID1cbiAgICAgICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLk9yZ2FuaXphdGlvbkZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUmVwb3NpdG9yeSA9XG4gICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scy5SZXBvc2l0b3J5Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5CdWlsZCA9IHRoaXMuQnVpbGRGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlBhdGggPVxuICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHMuQnVpbGRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ05QTSc6XG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUGFja2FnZSA9IHRoaXMuUGFja2FnZUZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuVmVyc2lvbiA9IHRoaXMuVmVyc2lvbkZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlppcEZpbGUgPSB0aGlzLlppcEZpbGVGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdPQXV0aCc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuU2NvcGVzID0gdGhpcy5TY29wZXNGb3JtQ29udHJvbC52YWx1ZS5zcGxpdCgnICcpO1xuXG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuVG9rZW5Mb29rdXAgPSB0aGlzLlRva2VuTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgIFR5cGU6IHRoaXMuTENVVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnR2l0SHViT0F1dGgnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LkNsaWVudElEID0gdGhpcy5DbGllbnRJREZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuQ2xpZW50U2VjcmV0ID0gdGhpcy5DbGllbnRTZWNyZXRGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQcm94eSc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuSW5ib3VuZFBhdGggPSB0aGlzLkluYm91bmRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgIFR5cGU6IHRoaXMuTENVVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnQVBJJzpcbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5BUElSb290ID0gdGhpcy5BUElSb290Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5TZWN1cml0eSA9IHRoaXMuU2VjdXJpdHlGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdTUEEnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlNQQVJvb3QgPSB0aGlzLlNQQVJvb3RGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdSZWRpcmVjdCc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuUGVybWFuZW50ID0gISF0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuUHJlc2VydmVNZXRob2QgPSAhIXRoaXMuUHJlc2VydmVNZXRob2RGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICBhcHAuUHJvY2Vzc29yLlJlZGlyZWN0ID0gdGhpcy5SZWRpcmVjdEZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWFwcC5Mb29rdXBDb25maWcuUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXggPSBgLyR7YXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlQXBwUmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3QgPSB7XG4gICAgICBQcm9qZWN0TG9va3VwOiB0aGlzLlByb2plY3RMb29rdXAsXG4gICAgICBBcHBsaWNhdGlvbjogYXBwLFxuICAgICAgQXBwbGljYXRpb25Mb29rdXA6IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwIHx8IEd1aWQuQ3JlYXRlUmF3KCksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLkhhc0J1aWxkRm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy5Qcm9jZXNzb3JUeXBlICE9PSAncmVkaXJlY3QnKSB7XG4gICAgICBpZiAoYXBwKSB7XG4gICAgICAgIGFwcC5Tb3VyY2VDb250cm9sTG9va3VwID0gdGhpcy5Tb3VyY2VDb250cm9sTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcHApIHtcbiAgICAgIGFwcC5Tb3VyY2VDb250cm9sTG9va3VwID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLlNhdmVBcHBsaWNhdGlvbkFzQ29kZShzYXZlQXBwUmVxKTtcbiAgfVxuXG4gIHB1YmxpYyBTZXRFZGl0aW5nQXBwbGljYXRpb24oYXBwTG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbkxvb2t1cCA9IGFwcExvb2t1cDtcblxuICAgIHRoaXMuc2V0dXBBcHBsaWNhdGlvbkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBTb3VyY2VDb250cm9sTG9va3VwQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgLy8gIFRPRE86ICBBbnl0aGluZyB0byBkbyBoZXJlIG9uIGNoYW5nZT9cbiAgfVxuXG4gIHB1YmxpYyBTdGFydHNXaXRoKGFwcDogRWFDQXBwbGljYXRpb25Bc0NvZGUsIGFwcFJvdXRlQmFzZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGFwcFJvdXRlQmFzZSA9PT0gJy8nKSB7XG4gICAgICByZXR1cm4gYXBwPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleCA9PT0gJy8uKic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcHA/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoYXBwUm91dGVCYXNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgVW5wYWNrKGFwcExvb2t1cDogc3RyaW5nLCBhcHA6IEVhQ0FwcGxpY2F0aW9uQXNDb2RlKTogdm9pZCB7XG4gICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5VbnBhY2tMb3dDb2RlVW5pdCh7XG4gICAgICBBcHBsaWNhdGlvbkxvb2t1cDogYXBwTG9va3VwLFxuICAgICAgQXBwbGljYXRpb25OYW1lOiBhcHAuQXBwbGljYXRpb24/Lk5hbWUsXG4gICAgICBWZXJzaW9uOiBhcHAuTG93Q29kZVVuaXQ/LlZlcnNpb24gfHwgYXBwLkxvd0NvZGVVbml0Py5CdWlsZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vICBIZWxwZXJzXG4gIHByb3RlY3RlZCBjbGVhbnVwTGN1VHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdtZXRob2RzJyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdhcGlSb290Jyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzZWN1cml0eScpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzcGFSb290Jyk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2FwcGxpY2F0aW9uSWQnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnYnVpbGQnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnY2xpZW50SWQnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2NsaWVudFNlY3JldCcpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCd6aXBGaWxlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW51cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZGVmYXVsdEZpbGUnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2Rmc0xjdVR5cGUnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnb2F1dGhMY3VUeXBlJyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdzY29wZXMnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Rva2VuTG9va3VwJyk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2luYm91bmRQYXRoJyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdwcm94eUxjdVR5cGUnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncmVkaXJlY3QnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Blcm1hbmVudCcpO1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncHJlc2VydmVNZXRob2QnKTtcblxuICAgIHRoaXMuY2xlYW51cExjdVR5cGVTdWJGb3JtKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBBcHBsaWNhdGlvbkZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5Qcm9jZXNzb3JUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/LlByb2Nlc3Nvcj8uVHlwZSB8fCAnJztcbiAgICBjb25zb2xlLmxvZygnUHJvY2Vzc29yVHlwZSA9ICcsIHRoaXMuUHJvY2Vzc29yVHlwZSk7XG5cbiAgICBpZiAodGhpcy5FZGl0aW5nQXBwbGljYXRpb24gIT0gbnVsbCkge1xuICAgICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cCA9IHRoaXMuZm9ybUJsZHIuZ3JvdXAoe1xuICAgICAgICBuYW1lOiBbdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uQXBwbGljYXRpb24/Lk5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkFwcGxpY2F0aW9uPy5EZXNjcmlwdGlvbixcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBdLFxuICAgICAgICByb3V0ZTogW1xuICAgICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnJlcGxhY2UoJy4qJywgJycpIHx8XG4gICAgICAgICAgICAnLycsXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gcHJpb3JpdHk6IFtcbiAgICAgICAgLy8gICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5BcHBsaWNhdGlvbj8uUHJpb3JpdHkgfHwgMTAwMDAsXG4gICAgICAgIC8vICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgLy8gXSxcbiAgICAgICAgcHJvY1R5cGU6IFt0aGlzLlByb2Nlc3NvclR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZXR1cEJ1aWxkRm9ybSgpO1xuXG4gICAgICB0aGlzLnNldHVwU2VjdXJpdHlGb3JtKCk7XG5cbiAgICAgIHRoaXMuc2V0dXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEJ1aWxkRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnaGFzQnVpbGQnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICAhIXRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5Tb3VyY2VDb250cm9sTG9va3VwIHx8IGZhbHNlLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3NvdXJjZUNvbnRyb2xMb29rdXAnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU291cmNlQ29udHJvbExvb2t1cCB8fCAnJyxcbiAgICAgICAgW11cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwRGZzRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxDVVR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVHlwZSB8fCAnJztcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdkZWZhdWx0RmlsZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uRGVmYXVsdEZpbGUgfHwgJ2luZGV4Lmh0bWwnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2xjdVR5cGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VBUElGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdtZXRob2RzJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG9va3VwQ29uZmlnPy5BbGxvd2VkTWV0aG9kcz8uam9pbignICcpIHx8ICcnLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnYXBpUm9vdCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5BUElSb290IHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3NlY3VyaXR5JyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlNlY3VyaXR5IHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTENVQXBwbGljYXRpb25Qb2ludGVyRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnYXBwbGljYXRpb25JZCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5BcHBsaWNhdGlvbklEIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTENVR2l0SHViRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnYnVpbGQnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQnVpbGQgfHwgJ2xhdGVzdCcsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VHaXRIdWJPQXV0aEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2NsaWVudElkJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkNsaWVudElEIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2NsaWVudFNlY3JldCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5DbGllbnRTZWNyZXQgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VOUE1Gb3JtKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAvLyAgICdwYWNrYWdlJyxcbiAgICAvLyAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAvLyAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlBhY2thZ2UgfHwgJycsXG4gICAgLy8gICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgIC8vICAgKVxuICAgIC8vICk7XG4gICAgLy8gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgIC8vICAgJ3ZlcnNpb24nLFxuICAgIC8vICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgIC8vICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVmVyc2lvbiB8fCAnJyxcbiAgICAvLyAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgLy8gICApXG4gICAgLy8gKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVVNQQUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3NwYVJvb3QnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU1BBUm9vdCB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVVppcEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3ppcEZpbGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uWmlwRmlsZSB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExjdVR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cExjdVR5cGVTdWJGb3JtKCk7XG5cbiAgICAvLyB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3BhY2thZ2UnKTtcbiAgICAvLyB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3ZlcnNpb24nKTtcblxuICAgIGlmICh0aGlzLkxDVVR5cGUpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5MQ1VUeXBlKSB7XG4gICAgICAgIGNhc2UgJ0FQSSc6XG4gICAgICAgICAgdGhpcy5zZXR1cExDVUFQSUZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdBcHBsaWNhdGlvblBvaW50ZXInOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VBcHBsaWNhdGlvblBvaW50ZXJGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnR2l0SHViJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVR2l0SHViRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ0dpdEh1Yk9BdXRoJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVR2l0SHViT0F1dGhGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnTlBNJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVTlBNRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1NQQSc6XG4gICAgICAgICAgdGhpcy5zZXR1cExDVVNQQUZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VaaXBGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwT0F1dGhGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTENVVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5UeXBlIHx8ICcnO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3Njb3BlcycsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uU2NvcGVzPy5Kb2luKCcgJykgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAndG9rZW5Mb29rdXAnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlRva2VuTG9va3VwIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2xjdVR5cGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBQcm94eUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5MQ1VUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlR5cGUgfHwgJyc7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnaW5ib3VuZFBhdGgnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LkluYm91bmRQYXRoIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2xjdVR5cGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKHRoaXMuTENVVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBQcm9jZXNzb3JUeXBlU3ViRm9ybSgpO1xuXG4gICAgaWYgKHRoaXMuUHJvY2Vzc29yVHlwZSkge1xuICAgICAgc3dpdGNoICh0aGlzLlByb2Nlc3NvclR5cGUpIHtcbiAgICAgICAgY2FzZSAnREZTJzpcbiAgICAgICAgICB0aGlzLnNldHVwRGZzRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ09BdXRoJzpcbiAgICAgICAgICB0aGlzLnNldHVwT0F1dGhGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnUHJveHknOlxuICAgICAgICAgIHRoaXMuc2V0dXBQcm94eUZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdSZWRpcmVjdCc6XG4gICAgICAgICAgdGhpcy5zZXR1cFJlZGlyZWN0Rm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0dXBMY3VUeXBlU3ViRm9ybSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwUmVkaXJlY3RGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdyZWRpcmVjdCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5SZWRpcmVjdCB8fCAnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgXSlcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3Blcm1hbmVudCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uUGVybWFuZW50IHx8IGZhbHNlLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAncHJlc2VydmVNZXRob2QnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlByZXNlcnZlTWV0aG9kIHx8IGZhbHNlLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5EZXRlcm1pbmVUb29sdGlwVGV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwU2VjdXJpdHlGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdpc1ByaXZhdGUnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LklzUHJpdmF0ZSB8fCBmYWxzZSxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdpc1RyaWdnZXJTaWduSW4nLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LklzVHJpZ2dlclNpZ25JbiB8fCBmYWxzZSxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
590
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hcHBsaWNhdGlvbnMtZmxvdy9hcHBsaWNhdGlvbnMtZmxvdy9wcm9qZWN0cy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnRzL3Byb2plY3RzL2NvbnRyb2xzL3RhYnMvYXBwcy1mbG93L2FwcHMtZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxXQUFXLEVBRVgsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLFVBQVUsRUFBb0MsTUFBTSxxQ0FBcUMsQ0FBQztBQVFsRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBTzVGLE1BQU0sT0FBTyxpQkFBaUI7SUE2UTVCLGdCQUFnQjtJQUNoQixZQUNZLFFBQXFCLEVBQ3JCLFdBQW9DLEVBQ3BDLE1BQWtCO1FBRmxCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVk7UUFFNUIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUxQiw0QkFBNEI7UUFFNUIsMkJBQTJCO0lBQzdCLENBQUM7SUF4UkQsVUFBVTtJQUVWLGNBQWM7SUFDZCxJQUFXLGtCQUFrQjs7UUFDM0IsYUFBTyxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDckQsQ0FB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Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFYUNTZXJ2aWNlLCBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3R9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEVhQ0FwcGxpY2F0aW9uQXNDb2RlLFxuICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgRWFDUHJvY2Vzc29yLFxuICBFYUNQcm9qZWN0QXNDb2RlLFxuICBFYUNTb3VyY2VDb250cm9sLFxufSBmcm9tICdAc2VtYW50aWNqcy9jb21tb24nO1xuaW1wb3J0IHsgR3VpZCB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybXMvc291cmNlLWNvbnRyb2wvc291cmNlLWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvYXBwbGljYXRpb25zLWZsb3cuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xjdS1hcHBzLWZsb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwcy1mbG93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwcy1mbG93LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFwcHNGbG93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gIEZpZWxkc1xuXG4gIC8vICBQcm9wZXJ0aWVzXG4gIHB1YmxpYyBnZXQgQVBJUm9vdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmFwaVJvb3Q7XG4gIH1cblxuICBwdWJsaWMgQXBwbGljYXRpb25Gb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgZ2V0IEFwcGxpY2F0aW9uSURGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5hcHBsaWNhdGlvbklkO1xuICB9XG5cbiAgcHVibGljIGdldCBBcHBsaWNhdGlvbkxvb2t1cHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQXBwbGljYXRpb25Sb3V0ZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQXBwbGljYXRpb25zQmFuaygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0ge1xuICAgIHJldHVybiB0aGlzLkRhdGE/LkFwcGxpY2F0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQXBwbGljYXRpb25zKCk6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDQXBwbGljYXRpb25Bc0NvZGUgfSB7XG4gICAgY29uc3QgYXBwczogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9ID0ge307XG5cbiAgICB0aGlzLlByb2plY3QuQXBwbGljYXRpb25Mb29rdXBzLmZvckVhY2goKGFwcExvb2t1cCkgPT4ge1xuICAgICAgYXBwc1thcHBMb29rdXBdID0gdGhpcy5BcHBsaWNhdGlvbnNCYW5rW2FwcExvb2t1cF07XG4gICAgfSk7XG4gICAgcmV0dXJuIGFwcHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEJ1aWxkRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuYnVpbGQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENsaWVudElERm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuY2xpZW50SWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENsaWVudFNlY3JldEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmNsaWVudFNlY3JldDtcbiAgfVxuXG4gIHB1YmxpYyBDdXJyZW50QXBwbGljYXRpb25Sb3V0ZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhcbiAgICAgIHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuQ3VycmVudEFwcGxpY2F0aW9uUm91dGVdIHx8IHt9XG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgnZGF0YScpXG4gIHB1YmxpYyBEYXRhOiB7XG4gICAgQXBwbGljYXRpb25zOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH07XG4gICAgRW52aXJvbm1lbnQ6IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuICAgIFByaW1hcnlIb3N0OiBzdHJpbmc7XG4gICAgUHJvamVjdDogRWFDUHJvamVjdEFzQ29kZTtcbiAgICBQcm9qZWN0TG9va3VwOiBzdHJpbmc7XG4gIH07XG5cbiAgcHVibGljIGdldCBEZWZhdWx0RmlsZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmRlZmF1bHRGaWxlO1xuICB9XG5cbiAgcHVibGljIGdldCBEZWZhdWx0U291cmNlQ29udHJvbCgpOiBFYUNTb3VyY2VDb250cm9sIHtcbiAgICByZXR1cm4ge1xuICAgICAgT3JnYW5pemF0aW9uOiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG93Q29kZVVuaXQ/Lk9yZ2FuaXphdGlvbixcbiAgICAgIFJlcG9zaXRvcnk6IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uPy5Mb3dDb2RlVW5pdD8uUmVwb3NpdG9yeSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldCBEZXNjcmlwdGlvbkZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBFZGl0aW5nQXBwbGljYXRpb24oKTogRWFDQXBwbGljYXRpb25Bc0NvZGUge1xuICAgIGxldCBhcHAgPSB0aGlzLkFwcGxpY2F0aW9uc1xuICAgICAgPyB0aGlzLkFwcGxpY2F0aW9uc1t0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbkxvb2t1cF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChhcHAgPT0gbnVsbCAmJiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbkxvb2t1cCkge1xuICAgICAgYXBwID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxuXG4gIHB1YmxpYyBFZGl0aW5nQXBwbGljYXRpb25Mb29rdXA6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IEhhc0J1aWxkRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuaGFzQnVpbGQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEluYm91bmRQYXRoRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuaW5ib3VuZFBhdGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IElzUHJpdmF0ZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmlzUHJpdmF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgSXNUcmlnZ2VyU2lnbkluRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuaXNUcmlnZ2VyU2lnbkluO1xuICB9XG5cbiAgcHVibGljIExDVVR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IE1ldGhvZHNGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5tZXRob2RzO1xuICB9XG5cbiAgcHVibGljIGdldCBOYW1lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUGFja2FnZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnBhY2thZ2U7XG4gIH1cblxuICBwdWJsaWMgSXNQZXJtYW5lbnQ6IGJvb2xlYW47XG5cbiAgcHVibGljIElzUHJlc2VydmU6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlZGlyZWN0VG9vbHRpcDogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgUGVybWFuZW50Rm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMucGVybWFuZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBQcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnByZXNlcnZlTWV0aG9kO1xuICB9XG5cbiAgcHVibGljIGdldCBQcmltYXJ5SG9zdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLkRhdGEuUHJpbWFyeUhvc3Q7XG4gIH1cblxuICBwdWJsaWMgUHJvY2Vzc29yVHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgUHJvamVjdCgpOiBFYUNQcm9qZWN0QXNDb2RlIHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLlByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFByb2plY3RMb29rdXAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLlByb2plY3RMb29rdXA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFJlZGlyZWN0Rm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMucmVkaXJlY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFJvdXRlZEFwcGxpY2F0aW9ucygpOiB7XG4gICAgW3JvdXRlOiBzdHJpbmddOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH07XG4gIH0ge1xuICAgIGNvbnN0IGFwcExvb2t1cHMgPSBPYmplY3Qua2V5cyh0aGlzLkFwcGxpY2F0aW9ucyk7XG5cbiAgICBjb25zdCBhcHBzID0gYXBwTG9va3Vwcy5tYXAoKGFwcExvb2t1cCkgPT4gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXSk7XG5cbiAgICBsZXQgYXBwUm91dGVzID1cbiAgICAgIGFwcHMubWFwKChhcHApID0+IHtcbiAgICAgICAgcmV0dXJuIGFwcC5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5yZXBsYWNlKCcuKicsICcnKTtcbiAgICAgIH0pIHx8IFtdO1xuXG4gICAgYXBwUm91dGVzID0gYXBwUm91dGVzLmZpbHRlcigoYXIpID0+IGFyICE9IG51bGwpO1xuXG4gICAgbGV0IHJvdXRlQmFzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBhcHBSb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGUpID0+IHtcbiAgICAgIGNvbnN0IGFwcFJvdXRlUGFydHMgPSBhcHBSb3V0ZS5zcGxpdCgnLycpO1xuXG4gICAgICBjb25zdCBhcHBSb3V0ZUJhc2UgPSBgLyR7YXBwUm91dGVQYXJ0c1sxXX1gO1xuXG4gICAgICBpZiAocm91dGVCYXNlcy5pbmRleE9mKGFwcFJvdXRlQmFzZSkgPCAwKSB7XG4gICAgICAgIHJvdXRlQmFzZXMucHVzaChhcHBSb3V0ZUJhc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHdvcmtpbmdBcHBMb29rdXBzID0gWy4uLihhcHBMb29rdXBzIHx8IFtdKV07XG5cbiAgICByb3V0ZUJhc2VzID0gcm91dGVCYXNlcy5zb3J0KChhLCBiKSA9PiBiLmxvY2FsZUNvbXBhcmUoYSkpO1xuXG4gICAgY29uc3Qgcm91dGVTZXQgPVxuICAgICAgcm91dGVCYXNlcy5yZWR1Y2UoKHByZXZSb3V0ZU1hcCwgY3VycmVudFJvdXRlQmFzZSkgPT4ge1xuICAgICAgICBjb25zdCByb3V0ZU1hcCA9IHtcbiAgICAgICAgICAuLi5wcmV2Um91dGVNYXAsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRBcHBMb29rdXBzID0gd29ya2luZ0FwcExvb2t1cHMuZmlsdGVyKCh3YWwpID0+IHtcbiAgICAgICAgICBjb25zdCB3YSA9IHRoaXMuQXBwbGljYXRpb25zW3dhbF07XG5cbiAgICAgICAgICByZXR1cm4gd2EuTG9va3VwQ29uZmlnPy5QYXRoUmVnZXguc3RhcnRzV2l0aChjdXJyZW50Um91dGVCYXNlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcm91dGVNYXBbY3VycmVudFJvdXRlQmFzZV0gPVxuICAgICAgICAgIGZpbHRlcmVkQXBwTG9va3Vwcy5yZWR1Y2UoKHByZXZBcHBNYXAsIGFwcExvb2t1cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwTWFwID0ge1xuICAgICAgICAgICAgICAuLi5wcmV2QXBwTWFwLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgYXBwTWFwW2FwcExvb2t1cF0gPSB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdO1xuXG4gICAgICAgICAgICByZXR1cm4gYXBwTWFwO1xuICAgICAgICAgIH0sIHt9KSB8fCB7fTtcblxuICAgICAgICB3b3JraW5nQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2EpID0+IHtcbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWRBcHBMb29rdXBzLmluZGV4T2Yod2EpIDwgMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJvdXRlTWFwO1xuICAgICAgfSwge30pIHx8IHt9O1xuXG4gICAgbGV0IHJvdXRlU2V0S2V5cyA9IE9iamVjdC5rZXlzKHJvdXRlU2V0KTtcblxuICAgIHJvdXRlU2V0S2V5cyA9IHJvdXRlU2V0S2V5cy5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuXG4gICAgY29uc3Qgcm91dGVTZXRSZXN1bHQgPSB7fTtcblxuICAgIHJvdXRlU2V0S2V5cy5mb3JFYWNoKChyc2spID0+IChyb3V0ZVNldFJlc3VsdFtyc2tdID0gcm91dGVTZXRbcnNrXSkpO1xuXG4gICAgcmV0dXJuIHJvdXRlU2V0UmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldCBSb3V0ZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnJvdXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBTY29wZXNGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5zY29wZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNlY3VyaXR5Rm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuc2VjdXJpdHk7XG4gIH1cblxuICBAVmlld0NoaWxkKFNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHNDb21wb25lbnQpXG4gIHB1YmxpYyBTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzOiBTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBnZXQgU291cmNlQ29udHJvbExvb2t1cEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnNvdXJjZUNvbnRyb2xMb29rdXA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xMb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlNvdXJjZUNvbnRyb2xzIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU291cmNlQ29udHJvbHMoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNTb3VyY2VDb250cm9sIH0ge1xuICAgIHJldHVybiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuU291cmNlcyB8fCB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU1BBUm9vdEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLnNwYVJvb3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRva2VuTG9va3VwRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMudG9rZW5Mb29rdXA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFZlcnNpb25Gb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy52ZXJzaW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBaaXBGaWxlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMuemlwRmlsZTtcbiAgfVxuXG4gIC8vICBDb25zdHJ1Y3RvcnNcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CbGRyOiBGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgYXBwc0Zsb3dTdmM6IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBlYWNTdmM6IEVhQ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXAgPSBudWxsO1xuICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJyc7XG5cbiAgICAvLyB0aGlzLklzUGVybWFuZW50ID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLklzUHJlc2VydmUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vICBMaWZlIEN5Y2xlXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5BcHBsaWNhdGlvbkxvb2t1cHM/Lmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLkNyZWF0ZU5ld0FwcGxpY2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gIEFQSSBNZXRob2RzXG4gIHB1YmxpYyBDcmVhdGVOZXdBcHBsaWNhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLlNldEVkaXRpbmdBcHBsaWNhdGlvbihHdWlkLkNyZWF0ZVJhdygpKTtcbiAgfVxuXG4gIHB1YmxpYyBEZWxldGVBcHBsaWNhdGlvbihhcHBMb29rdXA6IHN0cmluZywgYXBwTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lYWNTdmMuRGVsZXRlQXBwbGljYXRpb24oYXBwTG9va3VwLCBhcHBOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBMQ1VUeXBlQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5MQ1VUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnNldHVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBQcm9jZXNzb3JUeXBlQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5Qcm9jZXNzb3JUeXBlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnNldHVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBEZXRlcm1pbmVUb29sdGlwVGV4dCgpIHtcbiAgICBsZXQgcGVybWFuZW50VmFsdWUgPSB0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuICAgIGxldCBwcmVzZXJ2ZVZhbHVlID0gdGhpcy5QcmVzZXJ2ZU1ldGhvZEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgaWYgKHBlcm1hbmVudFZhbHVlID09PSB0cnVlICYmIHByZXNlcnZlVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnJlZGlyZWN0VG9vbHRpcCA9ICczMDEg4oCTIFBlcm1hbmVudCBhbmQgTm90IFByZXNlcnZlJztcbiAgICB9IGVsc2UgaWYgKHBlcm1hbmVudFZhbHVlID09PSBmYWxzZSAmJiBwcmVzZXJ2ZVZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzAyIOKAkyBOb3QgUGVybWFuZW50IGFuZCBOb3QgUHJlc2VydmUnO1xuICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IGZhbHNlICYmIHByZXNlcnZlVmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMucmVkaXJlY3RUb29sdGlwID0gJzMwNyDigJMgTm90IFBlcm1hbmVudCBhbmQgUHJlc2VydmUnO1xuICAgIH0gZWxzZSBpZiAocGVybWFuZW50VmFsdWUgPT09IHRydWUgJiYgcHJlc2VydmVWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5yZWRpcmVjdFRvb2x0aXAgPSAnMzA4IOKAkyBQZXJtYW5lbnQgYW5kIFByZXNlcnZlJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgR2V0UHJvY2Vzc29yVHlwZShhcHBMb29rdXA6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHByb2Nlc3NvclR5cGUgPSAnJztcbiAgICBwcm9jZXNzb3JUeXBlID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXS5Qcm9jZXNzb3IuVHlwZVxuICAgICAgPyB0aGlzLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdLlByb2Nlc3Nvci5UeXBlXG4gICAgICA6ICcnO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiUHR5cGUgPSBcIiwgcHJvY2Vzc29yVHlwZSk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBFZGl0QXBwbGljYXRpb25Sb3V0ZUNsaWNrZWQoYXBwUm91dGU6IGFueSkge1xuICAgIHRoaXMuQ3VycmVudEFwcGxpY2F0aW9uUm91dGUgPSBhcHBSb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBTYXZlQXBwbGljYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgYXBwOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSA9IHtcbiAgICAgIEFwcGxpY2F0aW9uOiB7XG4gICAgICAgIE5hbWU6IHRoaXMuTmFtZUZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5EZXNjcmlwdGlvbkZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICBQcmlvcml0eVNoaWZ0OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uQXBwbGljYXRpb24/LlByaW9yaXR5U2hpZnQgfHwgMCxcbiAgICAgIH0sXG4gICAgICBBY2Nlc3NSaWdodExvb2t1cHM6IFtdLFxuICAgICAgRGF0YVRva2Vuczoge30sXG4gICAgICBMaWNlbnNlQ29uZmlndXJhdGlvbkxvb2t1cHM6IFtdLFxuICAgICAgTG9va3VwQ29uZmlnOiB7XG4gICAgICAgIElzUHJpdmF0ZTogdGhpcy5Jc1ByaXZhdGVGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgSXNUcmlnZ2VyU2lnbkluOiB0aGlzLklzUHJpdmF0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgPyB0aGlzLklzVHJpZ2dlclNpZ25JbkZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgUGF0aFJlZ2V4OiBgJHt0aGlzLlJvdXRlRm9ybUNvbnRyb2wudmFsdWV9LipgLFxuICAgICAgICBRdWVyeVJlZ2V4OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uTG9va3VwQ29uZmlnPy5RdWVyeVJlZ2V4IHx8ICcnLFxuICAgICAgICBIZWFkZXJSZWdleDogdGhpcy5FZGl0aW5nQXBwbGljYXRpb24/Lkxvb2t1cENvbmZpZz8uSGVhZGVyUmVnZXggfHwgJycsXG4gICAgICAgIEFsbG93ZWRNZXRob2RzOiB0aGlzLk1ldGhvZHNGb3JtQ29udHJvbD8udmFsdWVcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKCh2OiBzdHJpbmcpID0+ICEhdiksXG4gICAgICB9LFxuICAgICAgUHJvY2Vzc29yOiB7XG4gICAgICAgIFR5cGU6IHRoaXMuUHJvY2Vzc29yVHlwZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHN3aXRjaCAoYXBwLlByb2Nlc3Nvci5UeXBlKSB7XG4gICAgICBjYXNlICdERlMnOlxuICAgICAgICBhcHAuUHJvY2Vzc29yLkJhc2VIcmVmID0gYCR7dGhpcy5Sb3V0ZUZvcm1Db250cm9sLnZhbHVlfS9gLnJlcGxhY2UoXG4gICAgICAgICAgJy8vJyxcbiAgICAgICAgICAnLydcbiAgICAgICAgKTtcblxuICAgICAgICBhcHAuUHJvY2Vzc29yLkRlZmF1bHRGaWxlID1cbiAgICAgICAgICB0aGlzLkRlZmF1bHRGaWxlRm9ybUNvbnRyb2wudmFsdWUgfHwgJ2luZGV4Lmh0bWwnO1xuXG4gICAgICAgIGFwcC5Mb3dDb2RlVW5pdCA9IHtcbiAgICAgICAgICBUeXBlOiB0aGlzLkxDVVR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChhcHAuTG93Q29kZVVuaXQuVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0dpdEh1Yic6XG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuT3JnYW5pemF0aW9uID1cbiAgICAgICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLk9yZ2FuaXphdGlvbkZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUmVwb3NpdG9yeSA9XG4gICAgICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scy5SZXBvc2l0b3J5Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5CdWlsZCA9IHRoaXMuQnVpbGRGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlBhdGggPVxuICAgICAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHMuQnVpbGRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ05QTSc6XG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuUGFja2FnZSA9IHRoaXMuUGFja2FnZUZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuVmVyc2lvbiA9IHRoaXMuVmVyc2lvbkZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdaaXAnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlppcEZpbGUgPSB0aGlzLlppcEZpbGVGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdPQXV0aCc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuU2NvcGVzID0gdGhpcy5TY29wZXNGb3JtQ29udHJvbC52YWx1ZS5zcGxpdCgnICcpO1xuXG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuVG9rZW5Mb29rdXAgPSB0aGlzLlRva2VuTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgIFR5cGU6IHRoaXMuTENVVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnR2l0SHViT0F1dGgnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LkNsaWVudElEID0gdGhpcy5DbGllbnRJREZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBhcHAuTG93Q29kZVVuaXQuQ2xpZW50U2VjcmV0ID0gdGhpcy5DbGllbnRTZWNyZXRGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdQcm94eSc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuSW5ib3VuZFBhdGggPSB0aGlzLkluYm91bmRQYXRoRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgYXBwLkxvd0NvZGVVbml0ID0ge1xuICAgICAgICAgIFR5cGU6IHRoaXMuTENVVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGFwcC5Mb3dDb2RlVW5pdC5UeXBlKSB7XG4gICAgICAgICAgY2FzZSAnQVBJJzpcbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5BUElSb290ID0gdGhpcy5BUElSb290Rm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgIGFwcC5Mb3dDb2RlVW5pdC5TZWN1cml0eSA9IHRoaXMuU2VjdXJpdHlGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdTUEEnOlxuICAgICAgICAgICAgYXBwLkxvd0NvZGVVbml0LlNQQVJvb3QgPSB0aGlzLlNQQVJvb3RGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdSZWRpcmVjdCc6XG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuUGVybWFuZW50ID0gISF0aGlzLlBlcm1hbmVudEZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgICAgIGFwcC5Qcm9jZXNzb3IuUHJlc2VydmVNZXRob2QgPSAhIXRoaXMuUHJlc2VydmVNZXRob2RGb3JtQ29udHJvbC52YWx1ZTtcblxuICAgICAgICBhcHAuUHJvY2Vzc29yLlJlZGlyZWN0ID0gdGhpcy5SZWRpcmVjdEZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWFwcC5Mb29rdXBDb25maWcuUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXggPSBgLyR7YXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlQXBwUmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3QgPSB7XG4gICAgICBQcm9qZWN0TG9va3VwOiB0aGlzLlByb2plY3RMb29rdXAsXG4gICAgICBBcHBsaWNhdGlvbjogYXBwLFxuICAgICAgQXBwbGljYXRpb25Mb29rdXA6IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uTG9va3VwIHx8IEd1aWQuQ3JlYXRlUmF3KCksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLkhhc0J1aWxkRm9ybUNvbnRyb2wudmFsdWUgJiYgdGhpcy5Qcm9jZXNzb3JUeXBlICE9PSAncmVkaXJlY3QnKSB7XG4gICAgICBpZiAoYXBwKSB7XG4gICAgICAgIGFwcC5Tb3VyY2VDb250cm9sTG9va3VwID0gdGhpcy5Tb3VyY2VDb250cm9sTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcHApIHtcbiAgICAgIGFwcC5Tb3VyY2VDb250cm9sTG9va3VwID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmVhY1N2Yy5TYXZlQXBwbGljYXRpb25Bc0NvZGUoc2F2ZUFwcFJlcSk7XG4gIH1cblxuICBwdWJsaWMgU2V0RWRpdGluZ0FwcGxpY2F0aW9uKGFwcExvb2t1cDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb25Mb29rdXAgPSBhcHBMb29rdXA7XG5cbiAgICB0aGlzLnNldHVwQXBwbGljYXRpb25Gb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgU291cmNlQ29udHJvbExvb2t1cENoYW5nZWQoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xuICAgIC8vICBUT0RPOiAgQW55dGhpbmcgdG8gZG8gaGVyZSBvbiBjaGFuZ2U/XG4gIH1cblxuICBwdWJsaWMgU3RhcnRzV2l0aChhcHA6IEVhQ0FwcGxpY2F0aW9uQXNDb2RlLCBhcHBSb3V0ZUJhc2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChhcHBSb3V0ZUJhc2UgPT09ICcvJykge1xuICAgICAgcmV0dXJuIGFwcD8uTG9va3VwQ29uZmlnPy5QYXRoUmVnZXggPT09ICcvLionO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXBwPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5zdGFydHNXaXRoKGFwcFJvdXRlQmFzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIFVucGFjayhhcHBMb29rdXA6IHN0cmluZywgYXBwOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSk6IHZvaWQge1xuICAgIHRoaXMuZWFjU3ZjLlVucGFja0xvd0NvZGVVbml0KHtcbiAgICAgIEFwcGxpY2F0aW9uTG9va3VwOiBhcHBMb29rdXAsXG4gICAgICBBcHBsaWNhdGlvbk5hbWU6IGFwcC5BcHBsaWNhdGlvbj8uTmFtZSxcbiAgICAgIFZlcnNpb246IGFwcC5Mb3dDb2RlVW5pdD8uVmVyc2lvbiB8fCBhcHAuTG93Q29kZVVuaXQ/LkJ1aWxkLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gIEhlbHBlcnNcbiAgcHJvdGVjdGVkIGNsZWFudXBMY3VUeXBlU3ViRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ21ldGhvZHMnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ2FwaVJvb3QnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3NlY3VyaXR5Jyk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3NwYVJvb3QnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnYXBwbGljYXRpb25JZCcpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdidWlsZCcpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdjbGllbnRJZCcpO1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnY2xpZW50U2VjcmV0Jyk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3ppcEZpbGUnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbnVwUHJvY2Vzc29yVHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdkZWZhdWx0RmlsZScpO1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZGZzTGN1VHlwZScpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdvYXV0aExjdVR5cGUnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Njb3BlcycpO1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgndG9rZW5Mb29rdXAnKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnaW5ib3VuZFBhdGgnKTtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Byb3h5TGN1VHlwZScpO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdyZWRpcmVjdCcpO1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncGVybWFuZW50Jyk7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdwcmVzZXJ2ZU1ldGhvZCcpO1xuXG4gICAgdGhpcy5jbGVhbnVwTGN1VHlwZVN1YkZvcm0oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEFwcGxpY2F0aW9uRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLlByb2Nlc3NvclR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uUHJvY2Vzc29yPy5UeXBlIHx8ICcnO1xuICAgIGNvbnNvbGUubG9nKCdQcm9jZXNzb3JUeXBlID0gJywgdGhpcy5Qcm9jZXNzb3JUeXBlKTtcblxuICAgIGlmICh0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwID0gdGhpcy5mb3JtQmxkci5ncm91cCh7XG4gICAgICAgIG5hbWU6IFt0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5BcHBsaWNhdGlvbj8uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uQXBwbGljYXRpb24/LkRlc2NyaXB0aW9uLFxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIF0sXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG9va3VwQ29uZmlnPy5QYXRoUmVnZXgucmVwbGFjZSgnLionLCAnJykgfHxcbiAgICAgICAgICAgICcvJyxcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBdLFxuICAgICAgICAvLyBwcmlvcml0eTogW1xuICAgICAgICAvLyAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkFwcGxpY2F0aW9uPy5Qcmlvcml0eSB8fCAxMDAwMCxcbiAgICAgICAgLy8gICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAvLyBdLFxuICAgICAgICBwcm9jVHlwZTogW3RoaXMuUHJvY2Vzc29yVHlwZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnNldHVwQnVpbGRGb3JtKCk7XG5cbiAgICAgIHRoaXMuc2V0dXBTZWN1cml0eUZvcm0oKTtcblxuICAgICAgdGhpcy5zZXR1cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwQnVpbGRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdoYXNCdWlsZCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgICEhdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlNvdXJjZUNvbnRyb2xMb29rdXAgfHwgZmFsc2UsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnc291cmNlQ29udHJvbExvb2t1cCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5Tb3VyY2VDb250cm9sTG9va3VwIHx8ICcnLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBEZnNGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTENVVHlwZSA9IHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5UeXBlIHx8ICcnO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2RlZmF1bHRGaWxlJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5EZWZhdWx0RmlsZSB8fCAnaW5kZXguaHRtbCcsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnbGN1VHlwZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5MQ1VUeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVUFQSUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ21ldGhvZHMnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LkFsbG93ZWRNZXRob2RzPy5qb2luKCcgJykgfHwgJycsXG4gICAgICAgIFtdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdhcGlSb290JyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkFQSVJvb3QgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnc2VjdXJpdHknLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uU2VjdXJpdHkgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VBcHBsaWNhdGlvblBvaW50ZXJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdhcHBsaWNhdGlvbklkJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkFwcGxpY2F0aW9uSUQgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBMQ1VHaXRIdWJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdidWlsZCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5CdWlsZCB8fCAnbGF0ZXN0JyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVUdpdEh1Yk9BdXRoRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnY2xpZW50SWQnLFxuICAgICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uQ2xpZW50SUQgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnY2xpZW50U2VjcmV0JyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LkNsaWVudFNlY3JldCB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cExDVU5QTUZvcm0oKTogdm9pZCB7XG4gICAgLy8gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgIC8vICAgJ3BhY2thZ2UnLFxuICAgIC8vICAgdGhpcy5mb3JtQmxkci5jb250cm9sKFxuICAgIC8vICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uUGFja2FnZSB8fCAnJyxcbiAgICAvLyAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgLy8gICApXG4gICAgLy8gKTtcbiAgICAvLyB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgLy8gICAndmVyc2lvbicsXG4gICAgLy8gICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgLy8gICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5WZXJzaW9uIHx8ICcnLFxuICAgIC8vICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAvLyAgIClcbiAgICAvLyApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTENVU1BBRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnc3BhUm9vdCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5TUEFSb290IHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTENVWmlwRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnemlwRmlsZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvd0NvZGVVbml0Py5aaXBGaWxlIHx8ICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwTGN1VHlwZVN1YkZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwTGN1VHlwZVN1YkZvcm0oKTtcblxuICAgIC8vIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgncGFja2FnZScpO1xuICAgIC8vIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgndmVyc2lvbicpO1xuXG4gICAgaWYgKHRoaXMuTENVVHlwZSkge1xuICAgICAgc3dpdGNoICh0aGlzLkxDVVR5cGUpIHtcbiAgICAgICAgY2FzZSAnQVBJJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVQVBJRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ0FwcGxpY2F0aW9uUG9pbnRlcic6XG4gICAgICAgICAgdGhpcy5zZXR1cExDVUFwcGxpY2F0aW9uUG9pbnRlckZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdHaXRIdWInOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VHaXRIdWJGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnR2l0SHViT0F1dGgnOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VHaXRIdWJPQXV0aEZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdOUE0nOlxuICAgICAgICAgIHRoaXMuc2V0dXBMQ1VOUE1Gb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnU1BBJzpcbiAgICAgICAgICB0aGlzLnNldHVwTENVU1BBRm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1ppcCc6XG4gICAgICAgICAgdGhpcy5zZXR1cExDVVppcEZvcm0oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBPQXV0aEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5MQ1VUeXBlID0gdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG93Q29kZVVuaXQ/LlR5cGUgfHwgJyc7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnc2NvcGVzJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5TY29wZXM/LkpvaW4oJyAnKSB8fCAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICd0b2tlbkxvb2t1cCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uVG9rZW5Mb29rdXAgfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnbGN1VHlwZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5MQ1VUeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cFByb3h5Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxDVVR5cGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb3dDb2RlVW5pdD8uVHlwZSB8fCAnJztcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdpbmJvdW5kUGF0aCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uSW5ib3VuZFBhdGggfHwgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnbGN1VHlwZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5MQ1VUeXBlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW51cFByb2Nlc3NvclR5cGVTdWJGb3JtKCk7XG5cbiAgICBpZiAodGhpcy5Qcm9jZXNzb3JUeXBlKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuUHJvY2Vzc29yVHlwZSkge1xuICAgICAgICBjYXNlICdERlMnOlxuICAgICAgICAgIHRoaXMuc2V0dXBEZnNGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnT0F1dGgnOlxuICAgICAgICAgIHRoaXMuc2V0dXBPQXV0aEZvcm0oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdQcm94eSc6XG4gICAgICAgICAgdGhpcy5zZXR1cFByb3h5Rm9ybSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1JlZGlyZWN0JzpcbiAgICAgICAgICB0aGlzLnNldHVwUmVkaXJlY3RGb3JtKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cExjdVR5cGVTdWJGb3JtKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBSZWRpcmVjdEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ3JlZGlyZWN0JyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbCh0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Qcm9jZXNzb3I/LlJlZGlyZWN0IHx8ICcnLCBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBdKVxuICAgICk7XG5cbiAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAncGVybWFuZW50JyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbChcbiAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uUHJvY2Vzc29yPy5QZXJtYW5lbnQgfHwgZmFsc2UsXG4gICAgICAgIFtdXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICdwcmVzZXJ2ZU1ldGhvZCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLlByb2Nlc3Nvcj8uUHJlc2VydmVNZXRob2QgfHwgZmFsc2UsXG4gICAgICAgIFtdXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLkRldGVybWluZVRvb2x0aXBUZXh0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBTZWN1cml0eUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2lzUHJpdmF0ZScsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uSXNQcml2YXRlIHx8IGZhbHNlLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2lzVHJpZ2dlclNpZ25JbicsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2woXG4gICAgICAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkxvb2t1cENvbmZpZz8uSXNUcmlnZ2VyU2lnbkluIHx8IGZhbHNlLFxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
2
|
import { FormBuilder, } from '@angular/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { EaCService, } from '../../../../../services/eac.service';
|
|
4
4
|
import { Guid } from '@lcu/common';
|
|
5
5
|
import { SourceControlFormControlsComponent } from '../../forms/source-control/source-control.component';
|
|
6
6
|
import { ProjectHostingDetails } from '../../../../../state/applications-flow.state';
|
|
@@ -8,10 +8,10 @@ import { ApplicationsFlowService } from '../../../../../services/applications-fl
|
|
|
8
8
|
import { HostingDetailsFormGroupComponent } from '../../hosting-details-form-group/hosting-details-form-group.component';
|
|
9
9
|
export class DevOpsComponent {
|
|
10
10
|
// Constructors
|
|
11
|
-
constructor(formBldr, appsFlowSvc,
|
|
11
|
+
constructor(formBldr, appsFlowSvc, eacSvc) {
|
|
12
12
|
this.formBldr = formBldr;
|
|
13
13
|
this.appsFlowSvc = appsFlowSvc;
|
|
14
|
-
this.
|
|
14
|
+
this.eacSvc = eacSvc;
|
|
15
15
|
this.EditingSourceControlLookup = null;
|
|
16
16
|
this.HostingDetails = new ProjectHostingDetails();
|
|
17
17
|
}
|
|
@@ -85,7 +85,7 @@ export class DevOpsComponent {
|
|
|
85
85
|
}
|
|
86
86
|
DeleteSourceControl(scLookup) {
|
|
87
87
|
if (confirm(`Are you sure you want to delete source control '${scLookup}'?`)) {
|
|
88
|
-
this.
|
|
88
|
+
this.eacSvc.DeleteSourceControl(scLookup);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
DevOpsActionLookupChanged(event) {
|
|
@@ -139,7 +139,7 @@ export class DevOpsComponent {
|
|
|
139
139
|
source = Object.assign(Object.assign({}, source), { Type: 'GitHub', Name: this.EditingSourceControlLookup, DevOpsActionTriggerLookups: [devOpsActionLookup], Organization: this.SourceControlFormControls.OrganizationFormControl.value, Repository: this.SourceControlFormControls.RepositoryFormControl.value });
|
|
140
140
|
const scLookup = `github://${source.Organization}/${source.Repository}`;
|
|
141
141
|
saveEnvReq.Environment.Sources[scLookup] = source;
|
|
142
|
-
this.
|
|
142
|
+
this.eacSvc.SaveEnvironmentAsCode(saveEnvReq);
|
|
143
143
|
}
|
|
144
144
|
SetEditingSourceControl(scLookup) {
|
|
145
145
|
this.EditingSourceControlLookup = scLookup;
|
|
@@ -192,11 +192,11 @@ DevOpsComponent.decorators = [
|
|
|
192
192
|
DevOpsComponent.ctorParameters = () => [
|
|
193
193
|
{ type: FormBuilder },
|
|
194
194
|
{ type: ApplicationsFlowService },
|
|
195
|
-
{ type:
|
|
195
|
+
{ type: EaCService }
|
|
196
196
|
];
|
|
197
197
|
DevOpsComponent.propDecorators = {
|
|
198
198
|
Data: [{ type: Input, args: ['data',] }],
|
|
199
199
|
HostingDetailsFormControls: [{ type: ViewChild, args: [HostingDetailsFormGroupComponent,] }],
|
|
200
200
|
SourceControlFormControls: [{ type: ViewChild, args: [SourceControlFormControlsComponent,] }]
|
|
201
201
|
};
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2b3BzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hcHBsaWNhdGlvbnMtZmxvdy9hcHBsaWNhdGlvbnMtZmxvdy9wcm9qZWN0cy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnRzL3Byb2plY3RzL2NvbnRyb2xzL3RhYnMvZGV2b3BzL2Rldm9wcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxXQUFXLEdBSVosTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsNkJBQTZCLEdBRTlCLE1BQU0sMERBQTBELENBQUM7QUFVbEUsT0FBTyxFQUF1QixJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDekcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFPekgsTUFBTSxPQUFPLGVBQWU7SUEwRjFCLGdCQUFnQjtJQUNoQixZQUNZLFFBQXFCLEVBQ3JCLFdBQW9DLEVBQ3BDLGlCQUFnRDtRQUZoRCxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQStCO1FBRTFELElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFFdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDcEQsQ0FBQztJQTdGRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMs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LEVBQUUsWUFBWTtnQkFDdEIsZzZOQUFzQzs7YUFFdkM7OztZQTdCQyxXQUFXO1lBc0JKLHVCQUF1QjtZQWhCOUIsNkJBQTZCOzs7bUJBNEM1QixLQUFLLFNBQUMsTUFBTTt5Q0F3RFosU0FBUyxTQUFDLGdDQUFnQzt3Q0FHMUMsU0FBUyxTQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FyZEZvcm1Db25maWdNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9jYXJkLWZvcm0tY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IERvbWFpbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL2RvbWFpbi5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25zRmxvd0V2ZW50c1NlcnZpY2UsXG4gIFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvYXBwbGljYXRpb25zLWZsb3ctZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRWFDQXBwbGljYXRpb25Bc0NvZGUsXG4gIEVhQ0FydGlmYWN0LFxuICBFYUNEZXZPcHNBY3Rpb24sXG4gIEVhQ0Vudmlyb25tZW50QXNDb2RlLFxuICBFYUNQcm9jZXNzb3IsXG4gIEVhQ1Byb2plY3RBc0NvZGUsXG4gIEVhQ1NvdXJjZUNvbnRyb2wsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlTW9kZWxlZFJlc3BvbnNlLCBHdWlkIH0gZnJvbSAnQGxjdS9jb21tb24nO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IFNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3Jtcy9zb3VyY2UtY29udHJvbC9zb3VyY2UtY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvamVjdEhvc3RpbmdEZXRhaWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25zRmxvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbnMtZmxvdy5zZXJ2aWNlJztcbmltcG9ydCB7IEhvc3RpbmdEZXRhaWxzRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaG9zdGluZy1kZXRhaWxzLWZvcm0tZ3JvdXAvaG9zdGluZy1kZXRhaWxzLWZvcm0tZ3JvdXAuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGN1LWRldm9wcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZvcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZXZvcHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGV2T3BzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gIEZpZWxkc1xuXG4gIC8vICBQcm9wZXJ0aWVzXG4gIHB1YmxpYyBEZXZPcHNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgZ2V0IEFydGlmYWN0KCk6IEVhQ0FydGlmYWN0IHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLkVudmlyb25tZW50LkFydGlmYWN0cyAmJiB0aGlzLkFydGlmYWN0TG9va3VwXG4gICAgICA/IHRoaXMuRGF0YS5FbnZpcm9ubWVudC5BcnRpZmFjdHNbdGhpcy5BcnRpZmFjdExvb2t1cF0gfHwge31cbiAgICAgIDoge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IEFydGlmYWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXJ0TG9va3VwID0gdGhpcy5EZXZPcHNBY3Rpb24/LkFydGlmYWN0TG9va3Vwc1xuICAgICAgPyB0aGlzLkRldk9wc0FjdGlvbj8uQXJ0aWZhY3RMb29rdXBzWzBdXG4gICAgICA6IG51bGw7XG5cbiAgICByZXR1cm4gYXJ0TG9va3VwO1xuICB9XG5cbiAgQElucHV0KCdkYXRhJylcbiAgcHVibGljIERhdGE6IHtcbiAgICBFbnZpcm9ubWVudDogRWFDRW52aXJvbm1lbnRBc0NvZGU7XG4gICAgRW52aXJvbm1lbnRMb29rdXA6IHN0cmluZztcbiAgfTtcblxuICBwdWJsaWMgZ2V0IERlZmF1bHRGaWxlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5EZXZPcHNGb3JtR3JvdXA/LmNvbnRyb2xzLmRlZmF1bHRGaWxlO1xuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb24oKTogRWFDRGV2T3BzQWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5EYXRhLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnMgJiYgdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBcbiAgICAgID8gdGhpcy5EYXRhLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBdIHx8IHt9XG4gICAgICA6IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25Mb29rdXAoKTogc3RyaW5nIHtcbiAgICBpZiAoISF0aGlzLkRldk9wc0FjdGlvbkxvb2t1cEZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCEhdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbD8uRGV2T3BzQWN0aW9uVHJpZ2dlckxvb2t1cHMpIHtcbiAgICAgIHJldHVybiB0aGlzLkVkaXRpbmdTb3VyY2VDb250cm9sPy5EZXZPcHNBY3Rpb25UcmlnZ2VyTG9va3Vwc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25Mb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLkRldk9wc0FjdGlvbnMgfHwge30pO1xuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25Mb29rdXBGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkRldk9wc0Zvcm1Hcm91cC5nZXQoJ2Rldk9wc0FjdGlvbkxvb2t1cCcpO1xuICB9XG5cbiAgcHVibGljIGdldCBEZXZPcHNBY3Rpb25zKCk6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDRGV2T3BzQWN0aW9uIH0ge1xuICAgIHJldHVybiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRWRpdGluZ1NvdXJjZUNvbnRyb2woKTogRWFDU291cmNlQ29udHJvbCB7XG4gICAgbGV0IHNjID0gdGhpcy5EYXRhPy5FbnZpcm9ubWVudD8uU291cmNlc1xuICAgICAgPyB0aGlzLkRhdGE/LkVudmlyb25tZW50Py5Tb3VyY2VzW3RoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2xMb29rdXBdXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAoc2MgPT0gbnVsbCAmJiB0aGlzLkVkaXRpbmdTb3VyY2VDb250cm9sTG9va3VwKSB7XG4gICAgICBzYyA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBzYztcbiAgfVxuXG4gIHB1YmxpYyBFZGl0aW5nU291cmNlQ29udHJvbExvb2t1cDogc3RyaW5nO1xuXG4gIHB1YmxpYyBIb3N0aW5nRGV0YWlsczogUHJvamVjdEhvc3RpbmdEZXRhaWxzO1xuXG4gIEBWaWV3Q2hpbGQoSG9zdGluZ0RldGFpbHNGb3JtR3JvdXBDb21wb25lbnQpXG4gIHB1YmxpYyBIb3N0aW5nRGV0YWlsc0Zvcm1Db250cm9sczogSG9zdGluZ0RldGFpbHNGb3JtR3JvdXBDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZChTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzQ29tcG9uZW50KVxuICBwdWJsaWMgU291cmNlQ29udHJvbEZvcm1Db250cm9sczogU291cmNlQ29udHJvbEZvcm1Db250cm9sc0NvbXBvbmVudDtcblxuICBwdWJsaWMgZ2V0IFNvdXJjZUNvbnRyb2xMb29rdXBzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLlNvdXJjZUNvbnRyb2xzIHx8IHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU291cmNlQ29udHJvbHMoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNTb3VyY2VDb250cm9sIH0ge1xuICAgIHJldHVybiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuU291cmNlcyB8fCB7fTtcbiAgfVxuXG4gIC8vICBDb25zdHJ1Y3RvcnNcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CbGRyOiBGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgYXBwc0Zsb3dTdmM6IEFwcGxpY2F0aW9uc0Zsb3dTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhcHBzRmxvd0V2ZW50c1N2YzogQXBwbGljYXRpb25zRmxvd0V2ZW50c1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbExvb2t1cCA9IG51bGw7XG5cbiAgICB0aGlzLkhvc3RpbmdEZXRhaWxzID0gbmV3IFByb2plY3RIb3N0aW5nRGV0YWlscygpO1xuICB9XG5cbiAgLy8gIExpZmUgQ3ljbGVcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLlNvdXJjZUNvbnRyb2xMb29rdXBzPy5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5DcmVhdGVOZXdTb3VyY2VDb250cm9sKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gIEFQSSBNZXRob2RzXG4gIHB1YmxpYyBCcmFuY2hlc0NoYW5nZWQoYnJhbmNoZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk7XG4gIH1cblxuICBwdWJsaWMgQ3JlYXRlTmV3U291cmNlQ29udHJvbCgpOiB2b2lkIHtcbiAgICB0aGlzLlNldEVkaXRpbmdTb3VyY2VDb250cm9sKEd1aWQuQ3JlYXRlUmF3KCkpO1xuICB9XG5cbiAgcHVibGljIERlbGV0ZVNvdXJjZUNvbnRyb2woc2NMb29rdXA6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNvbmZpcm0oYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgc291cmNlIGNvbnRyb2wgJyR7c2NMb29rdXB9Jz9gKVxuICAgICkge1xuICAgICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5EZWxldGVTb3VyY2VDb250cm9sKHNjTG9va3VwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgRGV2T3BzQWN0aW9uTG9va3VwQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWd1cmVEZXZPcHNBY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBTYXZlRW52aXJvbm1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2F2ZUVudlJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0ID0ge1xuICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLi4udGhpcy5EYXRhLkVudmlyb25tZW50LFxuICAgICAgICBBcnRpZmFjdHM6IHRoaXMuRGF0YS5FbnZpcm9ubWVudC5BcnRpZmFjdHMgfHwge30sXG4gICAgICAgIERldk9wc0FjdGlvbnM6IHRoaXMuRGF0YS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zIHx8IHt9LFxuICAgICAgICBTZWNyZXRzOiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuU2VjcmV0cyB8fCB7fSxcbiAgICAgICAgU291cmNlczogdGhpcy5EYXRhLkVudmlyb25tZW50LlNvdXJjZXMgfHwge30sXG4gICAgICB9LFxuICAgICAgRW52aXJvbm1lbnRMb29rdXA6IHRoaXMuRGF0YS5FbnZpcm9ubWVudExvb2t1cCxcbiAgICAgIEVudGVycHJpc2VEYXRhVG9rZW5zOiB7fSxcbiAgICB9O1xuXG4gICAgbGV0IGFydGlmYWN0TG9va3VwOiBzdHJpbmc7XG5cbiAgICBsZXQgYXJ0aWZhY3Q6IEVhQ0FydGlmYWN0ID0ge1xuICAgICAgLi4udGhpcy5BcnRpZmFjdCxcbiAgICAgIC4uLnRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHNcbiAgICAgICAgLlNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcyxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLkFydGlmYWN0TG9va3VwKSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IEd1aWQuQ3JlYXRlUmF3KCk7XG5cbiAgICAgIGFydGlmYWN0ID0ge1xuICAgICAgICAuLi5hcnRpZmFjdCxcbiAgICAgICAgVHlwZTogdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5TZWxlY3RlZEhvc3RpbmdPcHRpb25cbiAgICAgICAgICAuQXJ0aWZhY3RUeXBlLFxuICAgICAgICBOYW1lOiB0aGlzLkhvc3RpbmdEZXRhaWxzRm9ybUNvbnRyb2xzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5OYW1lLFxuICAgICAgICBOUE1SZWdpc3RyeTogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLycsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IHRoaXMuQXJ0aWZhY3RMb29rdXA7XG4gICAgfVxuXG4gICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5BcnRpZmFjdHNbYXJ0aWZhY3RMb29rdXBdID0gYXJ0aWZhY3Q7XG5cbiAgICBsZXQgZGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBpZiAoIXRoaXMuRGV2T3BzQWN0aW9uTG9va3VwKSB7XG4gICAgICBkZXZPcHNBY3Rpb25Mb29rdXAgPSBHdWlkLkNyZWF0ZVJhdygpO1xuXG4gICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgIEFydGlmYWN0TG9va3VwczogW2FydGlmYWN0TG9va3VwXSxcbiAgICAgICAgTmFtZTogdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgIFBhdGg6IHRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLlBhdGgsXG4gICAgICAgIFRlbXBsYXRlczpcbiAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzRm9ybUNvbnRyb2xzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5UZW1wbGF0ZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5OUE1Ub2tlbkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICBjb25zdCBzZWNyZXRMb29rdXAgPSAnbnBtLWFjY2Vzcy10b2tlbic7XG5cbiAgICAgICAgZG9hLlNlY3JldExvb2t1cHMgPSBbc2VjcmV0TG9va3VwXTtcblxuICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LlNlY3JldHNbc2VjcmV0TG9va3VwXSA9IHtcbiAgICAgICAgICBOYW1lOiAnTlBNIEFjY2VzcyBUb2tlbicsXG4gICAgICAgICAgRGF0YVRva2VuTG9va3VwOiBzZWNyZXRMb29rdXAsXG4gICAgICAgICAgS25vd25BczogJ05QTV9UT0tFTicsXG4gICAgICAgIH07XG5cbiAgICAgICAgc2F2ZUVudlJlcS5FbnRlcnByaXNlRGF0YVRva2Vuc1tzZWNyZXRMb29rdXBdID0ge1xuICAgICAgICAgIE5hbWU6IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgVmFsdWU6IHRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHMuTlBNVG9rZW5Gb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRldk9wc0FjdGlvbkxvb2t1cCA9IHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgIGNvbnN0IGRvYTogRWFDRGV2T3BzQWN0aW9uID0ge1xuICAgICAgICAuLi50aGlzLkRldk9wc0FjdGlvbixcbiAgICAgICAgTmFtZTogdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICB9O1xuXG4gICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbZGV2T3BzQWN0aW9uTG9va3VwXSA9IGRvYTtcbiAgICB9XG5cbiAgICBsZXQgc291cmNlOiBFYUNTb3VyY2VDb250cm9sID0ge1xuICAgICAgLi4udGhpcy5FZGl0aW5nU291cmNlQ29udHJvbCxcbiAgICAgIEJyYW5jaGVzOiB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHMuU2VsZWN0ZWRCcmFuY2hlcyxcbiAgICAgIE1haW5CcmFuY2g6IHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scy5NYWluQnJhbmNoRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgfTtcblxuICAgIHNvdXJjZSA9IHtcbiAgICAgIC4uLnNvdXJjZSxcbiAgICAgIFR5cGU6ICdHaXRIdWInLFxuICAgICAgTmFtZTogdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbExvb2t1cCxcbiAgICAgIERldk9wc0FjdGlvblRyaWdnZXJMb29rdXBzOiBbZGV2T3BzQWN0aW9uTG9va3VwXSxcbiAgICAgIE9yZ2FuaXphdGlvbjpcbiAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLk9yZ2FuaXphdGlvbkZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgUmVwb3NpdG9yeTogdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLlJlcG9zaXRvcnlGb3JtQ29udHJvbC52YWx1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NMb29rdXAgPSBgZ2l0aHViOi8vJHtzb3VyY2UuT3JnYW5pemF0aW9ufS8ke3NvdXJjZS5SZXBvc2l0b3J5fWA7XG5cbiAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LlNvdXJjZXNbc2NMb29rdXBdID0gc291cmNlO1xuXG4gICAgdGhpcy5hcHBzRmxvd0V2ZW50c1N2Yy5TYXZlRW52aXJvbm1lbnRBc0NvZGUoc2F2ZUVudlJlcSk7XG4gIH1cblxuICBwdWJsaWMgU2V0RWRpdGluZ1NvdXJjZUNvbnRyb2woc2NMb29rdXA6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2xMb29rdXAgPSBzY0xvb2t1cDtcblxuICAgIHRoaXMuc2V0dXBEZXZPcHNGb3JtKCk7XG4gIH1cblxuICAvLyAgSGVscGVyc1xuICBwcm90ZWN0ZWQgY29uZmlndXJlRGV2T3BzQWN0aW9uKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLkRldk9wc0FjdGlvbkxvb2t1cCk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBob3N0T3B0aW9uID0gdGhpcy5Ib3N0aW5nRGV0YWlscz8uSG9zdGluZ09wdGlvbnM/LmZpbmQoXG4gICAgICAgICAgKGhvKSA9PiBoby5QYXRoID09PSB0aGlzLkRldk9wc0FjdGlvbi5QYXRoXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scz8uQnVpbGRQaXBlbGluZUZvcm1Db250cm9sLnNldFZhbHVlKFxuICAgICAgICAgIGhvc3RPcHRpb24/Lkxvb2t1cFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHM/LkJ1aWxkUGlwZWxpbmVDaGFuZ2VkKCk7XG4gICAgICB9LCAwKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHM/LlNlbGVjdGVkQnJhbmNoZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IHRydWU7XG5cbiAgICAgIHRoaXMuYXBwc0Zsb3dTdmNcbiAgICAgICAgLkxvYWRQcm9qZWN0SG9zdGluZ0RldGFpbHMoXG4gICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzPy5Pcmdhbml6YXRpb25Gb3JtQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzPy5SZXBvc2l0b3J5Rm9ybUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scz8uTWFpbkJyYW5jaEZvcm1Db250cm9sPy52YWx1ZVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBCYXNlTW9kZWxlZFJlc3BvbnNlPFByb2plY3RIb3N0aW5nRGV0YWlscz4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMgPSByZXNwb25zZS5Nb2RlbDtcblxuICAgICAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlscy5Mb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJlRGV2T3BzQWN0aW9uKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzLkxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwRGV2T3BzRm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5FZGl0aW5nU291cmNlQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLkRldk9wc0Zvcm1Hcm91cCA9IHRoaXMuZm9ybUJsZHIuZ3JvdXAoe30pO1xuXG4gICAgICB0aGlzLnNldHVwQnVpbGRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwQnVpbGRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuRGV2T3BzRm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAnZGV2T3BzQWN0aW9uTG9va3VwJyxcbiAgICAgIHRoaXMuZm9ybUJsZHIuY29udHJvbCh0aGlzLkRldk9wc0FjdGlvbkxvb2t1cCB8fCAnJywgW10pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2b3BzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hcHBsaWNhdGlvbnMtZmxvdy9hcHBsaWNhdGlvbnMtZmxvdy9wcm9qZWN0cy9jb21tb24vc3JjLyIsInNvdXJjZXMiOlsibGliL2VsZW1lbnRzL3Byb2plY3RzL2NvbnRyb2xzL3RhYnMvZGV2b3BzL2Rldm9wcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFFTCxXQUFXLEdBRVosTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsVUFBVSxHQUVYLE1BQU0scUNBQXFDLENBQUM7QUFPN0MsT0FBTyxFQUF1QixJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDekcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFPekgsTUFBTSxPQUFPLGVBQWU7SUEwRjFCLGdCQUFnQjtJQUNoQixZQUNZLFFBQXFCLEVBQ3JCLFdBQW9DLEVBQ3BDLE1BQWtCO1FBRmxCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVk7UUFFNUIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUV2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBN0ZELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMs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Q3RCLGc2TkFBc0M7O2FBRXZDOzs7WUF4QkMsV0FBVztZQWlCSix1QkFBdUI7WUFiOUIsVUFBVTs7O21CQXlDVCxLQUFLLFNBQUMsTUFBTTt5Q0F3RFosU0FBUyxTQUFDLGdDQUFnQzt3Q0FHMUMsU0FBUyxTQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRWFDU2VydmljZSxcbiAgU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9lYWMuc2VydmljZSc7XG5pbXBvcnQge1xuICBFYUNBcnRpZmFjdCxcbiAgRWFDRGV2T3BzQWN0aW9uLFxuICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgRWFDU291cmNlQ29udHJvbCxcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEJhc2VNb2RlbGVkUmVzcG9uc2UsIEd1aWQgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgU291cmNlQ29udHJvbEZvcm1Db250cm9sc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm1zL3NvdXJjZS1jb250cm9sL3NvdXJjZS1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9qZWN0SG9zdGluZ0RldGFpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbnNGbG93U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FwcGxpY2F0aW9ucy1mbG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9zdGluZ0RldGFpbHNGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ob3N0aW5nLWRldGFpbHMtZm9ybS1ncm91cC9ob3N0aW5nLWRldGFpbHMtZm9ybS1ncm91cC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsY3UtZGV2b3BzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rldm9wcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rldm9wcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEZXZPcHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyAgRmllbGRzXG5cbiAgLy8gIFByb3BlcnRpZXNcbiAgcHVibGljIERldk9wc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBnZXQgQXJ0aWZhY3QoKTogRWFDQXJ0aWZhY3Qge1xuICAgIHJldHVybiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuQXJ0aWZhY3RzICYmIHRoaXMuQXJ0aWZhY3RMb29rdXBcbiAgICAgID8gdGhpcy5EYXRhLkVudmlyb25tZW50LkFydGlmYWN0c1t0aGlzLkFydGlmYWN0TG9va3VwXSB8fCB7fVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQXJ0aWZhY3RMb29rdXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcnRMb29rdXAgPSB0aGlzLkRldk9wc0FjdGlvbj8uQXJ0aWZhY3RMb29rdXBzXG4gICAgICA/IHRoaXMuRGV2T3BzQWN0aW9uPy5BcnRpZmFjdExvb2t1cHNbMF1cbiAgICAgIDogbnVsbDtcblxuICAgIHJldHVybiBhcnRMb29rdXA7XG4gIH1cblxuICBASW5wdXQoJ2RhdGEnKVxuICBwdWJsaWMgRGF0YToge1xuICAgIEVudmlyb25tZW50OiBFYUNFbnZpcm9ubWVudEFzQ29kZTtcbiAgICBFbnZpcm9ubWVudExvb2t1cDogc3RyaW5nO1xuICB9O1xuXG4gIHB1YmxpYyBnZXQgRGVmYXVsdEZpbGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkRldk9wc0Zvcm1Hcm91cD8uY29udHJvbHMuZGVmYXVsdEZpbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbigpOiBFYUNEZXZPcHNBY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9ucyAmJiB0aGlzLkRldk9wc0FjdGlvbkxvb2t1cFxuICAgICAgPyB0aGlzLkRhdGEuRW52aXJvbm1lbnQuRGV2T3BzQWN0aW9uc1t0aGlzLkRldk9wc0FjdGlvbkxvb2t1cF0gfHwge31cbiAgICAgIDoge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbkxvb2t1cCgpOiBzdHJpbmcge1xuICAgIGlmICghIXRoaXMuRGV2T3BzQWN0aW9uTG9va3VwRm9ybUNvbnRyb2w/LnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5EZXZPcHNBY3Rpb25Mb29rdXBGb3JtQ29udHJvbC52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoISF0aGlzLkVkaXRpbmdTb3VyY2VDb250cm9sPy5EZXZPcHNBY3Rpb25UcmlnZ2VyTG9va3Vwcykge1xuICAgICAgcmV0dXJuIHRoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2w/LkRldk9wc0FjdGlvblRyaWdnZXJMb29rdXBzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbkxvb2t1cHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuRGV2T3BzQWN0aW9ucyB8fCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbkxvb2t1cEZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuRGV2T3BzRm9ybUdyb3VwLmdldCgnZGV2T3BzQWN0aW9uTG9va3VwJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IERldk9wc0FjdGlvbnMoKTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNEZXZPcHNBY3Rpb24gfSB7XG4gICAgcmV0dXJuIHRoaXMuRGF0YS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zIHx8IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBFZGl0aW5nU291cmNlQ29udHJvbCgpOiBFYUNTb3VyY2VDb250cm9sIHtcbiAgICBsZXQgc2MgPSB0aGlzLkRhdGE/LkVudmlyb25tZW50Py5Tb3VyY2VzXG4gICAgICA/IHRoaXMuRGF0YT8uRW52aXJvbm1lbnQ/LlNvdXJjZXNbdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbExvb2t1cF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChzYyA9PSBudWxsICYmIHRoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2xMb29rdXApIHtcbiAgICAgIHNjID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjO1xuICB9XG5cbiAgcHVibGljIEVkaXRpbmdTb3VyY2VDb250cm9sTG9va3VwOiBzdHJpbmc7XG5cbiAgcHVibGljIEhvc3RpbmdEZXRhaWxzOiBQcm9qZWN0SG9zdGluZ0RldGFpbHM7XG5cbiAgQFZpZXdDaGlsZChIb3N0aW5nRGV0YWlsc0Zvcm1Hcm91cENvbXBvbmVudClcbiAgcHVibGljIEhvc3RpbmdEZXRhaWxzRm9ybUNvbnRyb2xzOiBIb3N0aW5nRGV0YWlsc0Zvcm1Hcm91cENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHNDb21wb25lbnQpXG4gIHB1YmxpYyBTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzOiBTb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBnZXQgU291cmNlQ29udHJvbExvb2t1cHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuU291cmNlQ29udHJvbHMgfHwge30pO1xuICB9XG5cbiAgcHVibGljIGdldCBTb3VyY2VDb250cm9scygpOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ1NvdXJjZUNvbnRyb2wgfSB7XG4gICAgcmV0dXJuIHRoaXMuRGF0YS5FbnZpcm9ubWVudC5Tb3VyY2VzIHx8IHt9O1xuICB9XG5cbiAgLy8gIENvbnN0cnVjdG9yc1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybUJsZHI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBhcHBzRmxvd1N2YzogQXBwbGljYXRpb25zRmxvd1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZVxuICApIHtcbiAgICB0aGlzLkVkaXRpbmdTb3VyY2VDb250cm9sTG9va3VwID0gbnVsbDtcblxuICAgIHRoaXMuSG9zdGluZ0RldGFpbHMgPSBuZXcgUHJvamVjdEhvc3RpbmdEZXRhaWxzKCk7XG4gIH1cblxuICAvLyAgTGlmZSBDeWNsZVxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuU291cmNlQ29udHJvbExvb2t1cHM/Lmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLkNyZWF0ZU5ld1NvdXJjZUNvbnRyb2woKTtcbiAgICB9XG4gIH1cblxuICAvLyAgQVBJIE1ldGhvZHNcbiAgcHVibGljIEJyYW5jaGVzQ2hhbmdlZChicmFuY2hlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRQcm9qZWN0SG9zdGluZ0RldGFpbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBDcmVhdGVOZXdTb3VyY2VDb250cm9sKCk6IHZvaWQge1xuICAgIHRoaXMuU2V0RWRpdGluZ1NvdXJjZUNvbnRyb2woR3VpZC5DcmVhdGVSYXcoKSk7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlU291cmNlQ29udHJvbChzY0xvb2t1cDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBzb3VyY2UgY29udHJvbCAnJHtzY0xvb2t1cH0nP2ApXG4gICAgKSB7XG4gICAgICB0aGlzLmVhY1N2Yy5EZWxldGVTb3VyY2VDb250cm9sKHNjTG9va3VwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgRGV2T3BzQWN0aW9uTG9va3VwQ2hhbmdlZChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWd1cmVEZXZPcHNBY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBTYXZlRW52aXJvbm1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2F2ZUVudlJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0ID0ge1xuICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgLi4udGhpcy5EYXRhLkVudmlyb25tZW50LFxuICAgICAgICBBcnRpZmFjdHM6IHRoaXMuRGF0YS5FbnZpcm9ubWVudC5BcnRpZmFjdHMgfHwge30sXG4gICAgICAgIERldk9wc0FjdGlvbnM6IHRoaXMuRGF0YS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zIHx8IHt9LFxuICAgICAgICBTZWNyZXRzOiB0aGlzLkRhdGEuRW52aXJvbm1lbnQuU2VjcmV0cyB8fCB7fSxcbiAgICAgICAgU291cmNlczogdGhpcy5EYXRhLkVudmlyb25tZW50LlNvdXJjZXMgfHwge30sXG4gICAgICB9LFxuICAgICAgRW52aXJvbm1lbnRMb29rdXA6IHRoaXMuRGF0YS5FbnZpcm9ubWVudExvb2t1cCxcbiAgICAgIEVudGVycHJpc2VEYXRhVG9rZW5zOiB7fSxcbiAgICB9O1xuXG4gICAgbGV0IGFydGlmYWN0TG9va3VwOiBzdHJpbmc7XG5cbiAgICBsZXQgYXJ0aWZhY3Q6IEVhQ0FydGlmYWN0ID0ge1xuICAgICAgLi4udGhpcy5BcnRpZmFjdCxcbiAgICAgIC4uLnRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHNcbiAgICAgICAgLlNlbGVjdGVkSG9zdGluZ09wdGlvbklucHV0Q29udHJvbFZhbHVlcyxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLkFydGlmYWN0TG9va3VwKSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IEd1aWQuQ3JlYXRlUmF3KCk7XG5cbiAgICAgIGFydGlmYWN0ID0ge1xuICAgICAgICAuLi5hcnRpZmFjdCxcbiAgICAgICAgVHlwZTogdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5TZWxlY3RlZEhvc3RpbmdPcHRpb25cbiAgICAgICAgICAuQXJ0aWZhY3RUeXBlLFxuICAgICAgICBOYW1lOiB0aGlzLkhvc3RpbmdEZXRhaWxzRm9ybUNvbnRyb2xzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5OYW1lLFxuICAgICAgICBOUE1SZWdpc3RyeTogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLycsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnRpZmFjdExvb2t1cCA9IHRoaXMuQXJ0aWZhY3RMb29rdXA7XG4gICAgfVxuXG4gICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5BcnRpZmFjdHNbYXJ0aWZhY3RMb29rdXBdID0gYXJ0aWZhY3Q7XG5cbiAgICBsZXQgZGV2T3BzQWN0aW9uTG9va3VwOiBzdHJpbmc7XG5cbiAgICBpZiAoIXRoaXMuRGV2T3BzQWN0aW9uTG9va3VwKSB7XG4gICAgICBkZXZPcHNBY3Rpb25Mb29rdXAgPSBHdWlkLkNyZWF0ZVJhdygpO1xuXG4gICAgICBjb25zdCBkb2E6IEVhQ0Rldk9wc0FjdGlvbiA9IHtcbiAgICAgICAgLi4udGhpcy5EZXZPcHNBY3Rpb24sXG4gICAgICAgIEFydGlmYWN0TG9va3VwczogW2FydGlmYWN0TG9va3VwXSxcbiAgICAgICAgTmFtZTogdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICAgIFBhdGg6IHRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHMuU2VsZWN0ZWRIb3N0aW5nT3B0aW9uLlBhdGgsXG4gICAgICAgIFRlbXBsYXRlczpcbiAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzRm9ybUNvbnRyb2xzLlNlbGVjdGVkSG9zdGluZ09wdGlvbi5UZW1wbGF0ZXMsXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5OUE1Ub2tlbkZvcm1Db250cm9sPy52YWx1ZSkge1xuICAgICAgICBjb25zdCBzZWNyZXRMb29rdXAgPSAnbnBtLWFjY2Vzcy10b2tlbic7XG5cbiAgICAgICAgZG9hLlNlY3JldExvb2t1cHMgPSBbc2VjcmV0TG9va3VwXTtcblxuICAgICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LlNlY3JldHNbc2VjcmV0TG9va3VwXSA9IHtcbiAgICAgICAgICBOYW1lOiAnTlBNIEFjY2VzcyBUb2tlbicsXG4gICAgICAgICAgRGF0YVRva2VuTG9va3VwOiBzZWNyZXRMb29rdXAsXG4gICAgICAgICAgS25vd25BczogJ05QTV9UT0tFTicsXG4gICAgICAgIH07XG5cbiAgICAgICAgc2F2ZUVudlJlcS5FbnRlcnByaXNlRGF0YVRva2Vuc1tzZWNyZXRMb29rdXBdID0ge1xuICAgICAgICAgIE5hbWU6IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHNhdmVFbnZSZXEuRW52aXJvbm1lbnQuU2VjcmV0c1tzZWNyZXRMb29rdXBdLk5hbWUsXG4gICAgICAgICAgVmFsdWU6IHRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHMuTlBNVG9rZW5Gb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc2F2ZUVudlJlcS5FbnZpcm9ubWVudC5EZXZPcHNBY3Rpb25zW2Rldk9wc0FjdGlvbkxvb2t1cF0gPSBkb2E7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRldk9wc0FjdGlvbkxvb2t1cCA9IHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwRm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICAgIGNvbnN0IGRvYTogRWFDRGV2T3BzQWN0aW9uID0ge1xuICAgICAgICAuLi50aGlzLkRldk9wc0FjdGlvbixcbiAgICAgICAgTmFtZTogdGhpcy5Ib3N0aW5nRGV0YWlsc0Zvcm1Db250cm9scy5EZXZPcHNBY3Rpb25OYW1lRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICB9O1xuXG4gICAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LkRldk9wc0FjdGlvbnNbZGV2T3BzQWN0aW9uTG9va3VwXSA9IGRvYTtcbiAgICB9XG5cbiAgICBsZXQgc291cmNlOiBFYUNTb3VyY2VDb250cm9sID0ge1xuICAgICAgLi4udGhpcy5FZGl0aW5nU291cmNlQ29udHJvbCxcbiAgICAgIEJyYW5jaGVzOiB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHMuU2VsZWN0ZWRCcmFuY2hlcyxcbiAgICAgIE1haW5CcmFuY2g6IHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scy5NYWluQnJhbmNoRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgfTtcblxuICAgIHNvdXJjZSA9IHtcbiAgICAgIC4uLnNvdXJjZSxcbiAgICAgIFR5cGU6ICdHaXRIdWInLFxuICAgICAgTmFtZTogdGhpcy5FZGl0aW5nU291cmNlQ29udHJvbExvb2t1cCxcbiAgICAgIERldk9wc0FjdGlvblRyaWdnZXJMb29rdXBzOiBbZGV2T3BzQWN0aW9uTG9va3VwXSxcbiAgICAgIE9yZ2FuaXphdGlvbjpcbiAgICAgICAgdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLk9yZ2FuaXphdGlvbkZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgUmVwb3NpdG9yeTogdGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzLlJlcG9zaXRvcnlGb3JtQ29udHJvbC52YWx1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NMb29rdXAgPSBgZ2l0aHViOi8vJHtzb3VyY2UuT3JnYW5pemF0aW9ufS8ke3NvdXJjZS5SZXBvc2l0b3J5fWA7XG5cbiAgICBzYXZlRW52UmVxLkVudmlyb25tZW50LlNvdXJjZXNbc2NMb29rdXBdID0gc291cmNlO1xuXG4gICAgdGhpcy5lYWNTdmMuU2F2ZUVudmlyb25tZW50QXNDb2RlKHNhdmVFbnZSZXEpO1xuICB9XG5cbiAgcHVibGljIFNldEVkaXRpbmdTb3VyY2VDb250cm9sKHNjTG9va3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLkVkaXRpbmdTb3VyY2VDb250cm9sTG9va3VwID0gc2NMb29rdXA7XG5cbiAgICB0aGlzLnNldHVwRGV2T3BzRm9ybSgpO1xuICB9XG5cbiAgLy8gIEhlbHBlcnNcbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZURldk9wc0FjdGlvbigpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuRGV2T3BzQWN0aW9uTG9va3VwRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5EZXZPcHNBY3Rpb25Mb29rdXApO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaG9zdE9wdGlvbiA9IHRoaXMuSG9zdGluZ0RldGFpbHM/Lkhvc3RpbmdPcHRpb25zPy5maW5kKFxuICAgICAgICAgIChobykgPT4gaG8uUGF0aCA9PT0gdGhpcy5EZXZPcHNBY3Rpb24uUGF0aFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHNGb3JtQ29udHJvbHM/LkJ1aWxkUGlwZWxpbmVGb3JtQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICBob3N0T3B0aW9uPy5Mb29rdXBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzRm9ybUNvbnRyb2xzPy5CdWlsZFBpcGVsaW5lQ2hhbmdlZCgpO1xuICAgICAgfSwgMCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbG9hZFByb2plY3RIb3N0aW5nRGV0YWlscygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5Tb3VyY2VDb250cm9sRm9ybUNvbnRyb2xzPy5TZWxlY3RlZEJyYW5jaGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzLkxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICB0aGlzLmFwcHNGbG93U3ZjXG4gICAgICAgIC5Mb2FkUHJvamVjdEhvc3RpbmdEZXRhaWxzKFxuICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scz8uT3JnYW5pemF0aW9uRm9ybUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgIHRoaXMuU291cmNlQ29udHJvbEZvcm1Db250cm9scz8uUmVwb3NpdG9yeUZvcm1Db250cm9sPy52YWx1ZSxcbiAgICAgICAgICB0aGlzLlNvdXJjZUNvbnRyb2xGb3JtQ29udHJvbHM/Lk1haW5CcmFuY2hGb3JtQ29udHJvbD8udmFsdWVcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZTogQmFzZU1vZGVsZWRSZXNwb25zZTxQcm9qZWN0SG9zdGluZ0RldGFpbHM+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLkhvc3RpbmdEZXRhaWxzID0gcmVzcG9uc2UuTW9kZWw7XG5cbiAgICAgICAgICAgIHRoaXMuSG9zdGluZ0RldGFpbHMuTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZURldk9wc0FjdGlvbigpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgdGhpcy5Ib3N0aW5nRGV0YWlscy5Mb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cERldk9wc0Zvcm0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRWRpdGluZ1NvdXJjZUNvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgdGhpcy5EZXZPcHNGb3JtR3JvdXAgPSB0aGlzLmZvcm1CbGRyLmdyb3VwKHt9KTtcblxuICAgICAgdGhpcy5zZXR1cEJ1aWxkRm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cEJ1aWxkRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkRldk9wc0Zvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgJ2Rldk9wc0FjdGlvbkxvb2t1cCcsXG4gICAgICB0aGlzLmZvcm1CbGRyLmNvbnRyb2wodGhpcy5EZXZPcHNBY3Rpb25Mb29rdXAgfHwgJycsIFtdKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|