@wemake4u/form-player-se 1.0.21 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/directives/collapse.directive.mjs +8 -6
- package/esm2022/lib/directives/dropdown.directive.mjs +3 -2
- package/esm2022/lib/directives/text.directive.mjs +4 -1
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +3 -3
- package/esm2022/lib/interact/confirmation.mjs +37 -0
- package/esm2022/lib/interact/notification.mjs +36 -0
- package/esm2022/lib/interact/prompt.mjs +34 -0
- package/esm2022/lib/services/dialog.service.mjs +39 -1
- package/esm2022/lib/services/grid.service.mjs +45 -15
- package/esm2022/lib/services/programmability.service.mjs +6 -4
- package/esm2022/lib/services/toast.service.mjs +12 -11
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/wemake4u-form-player-se.mjs +210 -37
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/interact/confirmation.d.ts +11 -0
- package/lib/interact/notification.d.ts +10 -0
- package/lib/interact/prompt.d.ts +11 -0
- package/lib/services/dialog.service.d.ts +2 -0
- package/lib/services/grid.service.d.ts +3 -0
- package/lib/services/toast.service.d.ts +4 -4
- package/package.json +3 -2
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/dialog.service";
|
|
5
|
+
export class DefaultConfirmationController {
|
|
6
|
+
dialogService;
|
|
7
|
+
constructor(dialogService) {
|
|
8
|
+
this.dialogService = dialogService;
|
|
9
|
+
}
|
|
10
|
+
confirm(message, title) {
|
|
11
|
+
return new Observable(observer => {
|
|
12
|
+
const options = {
|
|
13
|
+
title: title,
|
|
14
|
+
type: 'info',
|
|
15
|
+
onResult: result => {
|
|
16
|
+
if (result.action === 'Yes') {
|
|
17
|
+
observer.next(true);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
observer.next(false);
|
|
21
|
+
}
|
|
22
|
+
observer.complete();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
this.dialogService.confirm(message ?? "", options);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultConfirmationController, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultConfirmationController, providedIn: 'root' });
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultConfirmationController, decorators: [{
|
|
32
|
+
type: Injectable,
|
|
33
|
+
args: [{
|
|
34
|
+
providedIn: 'root'
|
|
35
|
+
}]
|
|
36
|
+
}], ctorParameters: () => [{ type: i1.DialogService }] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvaW50ZXJhY3QvY29uZmlybWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS2xDLE1BQU0sT0FBTyw2QkFBNkI7SUFFcEI7SUFBcEIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFDaEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFnQixFQUFFLEtBQWM7UUFFdEMsT0FBTyxJQUFJLFVBQVUsQ0FBVSxRQUFRLENBQUMsRUFBRTtZQUN4QyxNQUFNLE9BQU8sR0FBa0I7Z0JBQzdCLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxNQUFNO2dCQUNaLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDakIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QixDQUFDO3lCQUFNLENBQUM7d0JBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkIsQ0FBQztvQkFDRCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUM7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBdkJVLDZCQUE2Qjs0R0FBN0IsNkJBQTZCLGNBRjVCLE1BQU07OzRGQUVQLDZCQUE2QjtrQkFIekMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbnRyb2xsZXIgfSBmcm9tICdAd2VtYWtlNHUvaW50ZXJhY3QnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbiBcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdENvbmZpcm1hdGlvbkNvbnRyb2xsZXIgaW1wbGVtZW50cyBDb25maXJtYXRpb25Db250cm9sbGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKG1lc3NhZ2U/OiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KG9ic2VydmVyID0+IHtcclxuICAgICAgY29uc3Qgb3B0aW9uczogRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgdHlwZTogJ2luZm8nLFxyXG4gICAgICAgIG9uUmVzdWx0OiByZXN1bHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5hY3Rpb24gPT09ICdZZXMnKSB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0obWVzc2FnZSA/PyBcIlwiLCBvcHRpb25zKTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../services/toast.service";
|
|
4
|
+
export class DefaultNotificationController {
|
|
5
|
+
toast;
|
|
6
|
+
constructor(toast) {
|
|
7
|
+
this.toast = toast;
|
|
8
|
+
}
|
|
9
|
+
notify(type, message, title) {
|
|
10
|
+
const delay = 5000;
|
|
11
|
+
switch (type) {
|
|
12
|
+
case 'info':
|
|
13
|
+
this.toast.notifyInfo(message, title, delay);
|
|
14
|
+
break;
|
|
15
|
+
case 'warning':
|
|
16
|
+
this.toast.notifyWarning(message, title, delay);
|
|
17
|
+
break;
|
|
18
|
+
case 'error':
|
|
19
|
+
this.toast.notifyError(message, title, delay);
|
|
20
|
+
break;
|
|
21
|
+
case 'success':
|
|
22
|
+
this.toast.notifySuccess(message, title, delay);
|
|
23
|
+
break;
|
|
24
|
+
default: break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultNotificationController, deps: [{ token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultNotificationController, providedIn: 'root' });
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultNotificationController, decorators: [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{
|
|
33
|
+
providedIn: 'root'
|
|
34
|
+
}]
|
|
35
|
+
}], ctorParameters: () => [{ type: i1.ToastService }] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvaW50ZXJhY3Qvbm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sNkJBQTZCO0lBRXBCO0lBQXBCLFlBQW9CLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFpQixFQUFFLE9BQWUsRUFBRSxLQUFjO1FBRXZELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQztRQUVuQixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxNQUFNO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUNqRSxLQUFLLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQ3ZFLEtBQUssT0FBTztnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDbkUsS0FBSyxTQUFTO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUN2RSxPQUFPLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLENBQUM7SUFDSCxDQUFDO3dHQWhCVSw2QkFBNkI7NEdBQTdCLDZCQUE2QixjQUY1QixNQUFNOzs0RkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25Db250cm9sbGVyLCBOb3RpZnlUeXBlcyB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIgaW1wbGVtZW50cyBOb3RpZmljYXRpb25Db250cm9sbGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBub3RpZnkodHlwZTogTm90aWZ5VHlwZXMsIG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBkZWxheSA9IDUwMDA7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2luZm8nOiB0aGlzLnRvYXN0Lm5vdGlmeUluZm8obWVzc2FnZSwgdGl0bGUsIGRlbGF5KTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOiB0aGlzLnRvYXN0Lm5vdGlmeVdhcm5pbmcobWVzc2FnZSwgdGl0bGUsIGRlbGF5KTsgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Vycm9yJzogdGhpcy50b2FzdC5ub3RpZnlFcnJvcihtZXNzYWdlLCB0aXRsZSwgZGVsYXkpOyBicmVhaztcclxuICAgICAgY2FzZSAnc3VjY2Vzcyc6IHRoaXMudG9hc3Qubm90aWZ5U3VjY2VzcyhtZXNzYWdlLCB0aXRsZSwgZGVsYXkpOyBicmVhaztcclxuICAgICAgZGVmYXVsdDogYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../services/dialog.service";
|
|
5
|
+
export class DefaultPromptController {
|
|
6
|
+
dialogService;
|
|
7
|
+
constructor(dialogService) {
|
|
8
|
+
this.dialogService = dialogService;
|
|
9
|
+
}
|
|
10
|
+
prompt(message, defaultValue, title) {
|
|
11
|
+
return new Observable(observer => {
|
|
12
|
+
const options = {
|
|
13
|
+
title: title,
|
|
14
|
+
type: 'info',
|
|
15
|
+
onResult: result => {
|
|
16
|
+
if (result.action === 'OK') {
|
|
17
|
+
observer.next(result.value.input);
|
|
18
|
+
}
|
|
19
|
+
observer.complete();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
this.dialogService.prompt(message ?? "Prompt", defaultValue, options);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPromptController, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPromptController, providedIn: 'root' });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPromptController, decorators: [{
|
|
29
|
+
type: Injectable,
|
|
30
|
+
args: [{
|
|
31
|
+
providedIn: 'root'
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: () => [{ type: i1.DialogService }] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvaW50ZXJhY3QvcHJvbXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS2xDLE1BQU0sT0FBTyx1QkFBdUI7SUFFZDtJQUFwQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNoRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWdCLEVBQUUsWUFBcUIsRUFBRSxLQUFjO1FBQzVELE9BQU8sSUFBSSxVQUFVLENBQWdCLFFBQVEsQ0FBQyxFQUFFO1lBQzlDLE1BQU0sT0FBTyxHQUFrQjtnQkFDN0IsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNqQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsQ0FBQztvQkFDRCxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUM7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQXBCVSx1QkFBdUI7NEdBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9tcHRDb250cm9sbGVyIH0gZnJvbSAnQHdlbWFrZTR1L2ludGVyYWN0JztcclxuaW1wb3J0IHsgRGlhbG9nT3B0aW9ucywgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG4gXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRQcm9tcHRDb250cm9sbGVyIGltcGxlbWVudHMgUHJvbXB0Q29udHJvbGxlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgcHJvbXB0KG1lc3NhZ2U/OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPihvYnNlcnZlciA9PiB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnM6IERpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIHR5cGU6ICdpbmZvJyxcclxuICAgICAgICBvblJlc3VsdDogcmVzdWx0ID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQuYWN0aW9uID09PSAnT0snKSB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzdWx0LnZhbHVlLmlucHV0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnByb21wdChtZXNzYWdlID8/IFwiUHJvbXB0XCIsIGRlZmF1bHRWYWx1ZSwgb3B0aW9ucyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -54,6 +54,20 @@ export class DialogService {
|
|
|
54
54
|
};
|
|
55
55
|
this.showDialog(formSchema, formOptions);
|
|
56
56
|
}
|
|
57
|
+
prompt(text, defaultValue, options) {
|
|
58
|
+
const formSchema = this.createInputSchema(text, defaultValue);
|
|
59
|
+
const formOptions = {
|
|
60
|
+
...options,
|
|
61
|
+
type: "info",
|
|
62
|
+
buttons: 'OKCancel',
|
|
63
|
+
isDrawer: false,
|
|
64
|
+
showNav: false,
|
|
65
|
+
showNavButton: false,
|
|
66
|
+
showProgress: false,
|
|
67
|
+
showFormTitle: false
|
|
68
|
+
};
|
|
69
|
+
this.showDialog(formSchema, formOptions);
|
|
70
|
+
}
|
|
57
71
|
getContext() {
|
|
58
72
|
return ToBoundArrows(this, [
|
|
59
73
|
'openDialog',
|
|
@@ -93,6 +107,30 @@ export class DialogService {
|
|
|
93
107
|
]
|
|
94
108
|
};
|
|
95
109
|
}
|
|
110
|
+
createInputSchema(label, defaultValue) {
|
|
111
|
+
return {
|
|
112
|
+
"forms": [
|
|
113
|
+
{
|
|
114
|
+
"components": [
|
|
115
|
+
{
|
|
116
|
+
"label": label,
|
|
117
|
+
"defaultValue": defaultValue,
|
|
118
|
+
"type": "textfield",
|
|
119
|
+
"layout": {
|
|
120
|
+
"row": "Row_1wxz5gd",
|
|
121
|
+
"columns": null
|
|
122
|
+
},
|
|
123
|
+
"id": "Field_1tau53x",
|
|
124
|
+
"key": "input"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"type": "default",
|
|
128
|
+
"id": "Form_1ontwnx",
|
|
129
|
+
"schemaVersion": 18
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
};
|
|
133
|
+
}
|
|
96
134
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, deps: [{ token: i1.SirioDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
97
135
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, providedIn: 'root' });
|
|
98
136
|
}
|
|
@@ -102,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
102
140
|
providedIn: 'root'
|
|
103
141
|
}]
|
|
104
142
|
}], ctorParameters: () => [{ type: i1.SirioDialogService }] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQXNCO1lBQ3JDLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLE9BQXVCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBc0I7WUFDckMsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixPQUFPO1lBQ1AsTUFBTTtZQUNOLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLFVBQWUsRUFBRSxPQUEyQjtRQUU3RCxNQUFNLElBQUksR0FBRztZQUNYLFVBQVU7WUFDVixPQUFPO1lBQ1AsZUFBZSxFQUFFLG9CQUFvQjtTQUN0QyxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWE7YUFDZixVQUFVLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ25DLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsWUFBWSxFQUFFO3dCQUNaOzRCQUNFLE1BQU0sRUFBRSxJQUFJOzRCQUNaLE1BQU0sRUFBRSxNQUFNOzRCQUNkLFFBQVEsRUFBRTtnQ0FDUixLQUFLLEVBQUUsYUFBYTtnQ0FDcEIsU0FBUyxFQUFFLElBQUk7NkJBQ2hCOzRCQUNELElBQUksRUFBRSxlQUFlO3lCQUN0QjtxQkFDRjtvQkFDRCxNQUFNLEVBQUUsU0FBUztvQkFDakIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLGVBQWUsRUFBRSxFQUFFO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7d0dBbEdVLGFBQWE7NEdBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lyaW9EaWFsb2dTZXJ2aWNlLCBEaWFsb2dUeXBlcywgRGlhbG9nU2l6ZXMgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgSUV2YWx1YXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb0JvdW5kQXJyb3dzIH0gZnJvbSAnLi4vdXRpbHMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2UgaW1wbGVtZW50cyBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogU2lyaW9EaWFsb2dTZXJ2aWNlXHJcbiAgICApXHJcbiAgeyB9XHJcblxyXG4gIG9wZW5EaWFsb2coZm9ybVNjaGVtYTogYW55LCBvcHRpb25zPzogRm9ybURpYWxvZ09wdGlvbnMpIHtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFsZXJ0KHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9ucyA6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGluZm8odGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnWWVzTm8nLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07ICAgIFxyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybSdcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGR5bmFtaWNGb3JtVHlwZTogRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbiAgdHlwZT86IERpYWxvZ1R5cGVzO1xyXG4gIHNpemU/OiBEaWFsb2dTaXplcztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpc0RyYXdlcj86IGJvb2xlYW47ICBcclxuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgYnV0dG9ucz86IERpYWxvZ0J1dHRvbnM7ICBcclxuICBvblJlc3VsdD86IChyZXN1bHQ6IERpYWxvZ1Jlc3VsdCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIGluamVjdG9yPzogSW5qZWN0b3I7XHJcbiAgc2hvd05hdj86IGJvb2xlYW47XHJcbiAgc2hvd05hdkJ1dHRvbj86IGJvb2xlYW47XHJcbiAgc2hvd1Byb2dyZXNzPzogYm9vbGVhbjtcclxuICBzaG93Rm9ybVRpdGxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG4gIGFjdGlvbjogRGlhbG9nQWN0aW9uO1xyXG4gIHZhbHVlPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dBY3Rpb24gPSAnT0snXHJcbiAgfCAnQ2FuY2VsJ1xyXG4gIHwgJ1llcydcclxuICB8ICdObydcclxuICB8ICdDb25maXJtJ1xyXG4gIHwgJ0Nsb3NlJ1xyXG4gIHwgJ0Fib3J0J1xyXG4gIHwgJ1JldHJ5J1xyXG4gIHwgJ0lnbm9yZSdcclxuICB8ICdUcnknXHJcbiAgfCAnQ29udGludWUnO1xyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQnV0dG9ucyA9ICdPSydcclxuICB8ICdPS0NhbmNlbCdcclxuICB8ICdDb25maXJtQ2FuY2VsJ1xyXG4gIHwgJ0Fib3J0UmV0cnlJZ25vcmUnXHJcbiAgfCAnWWVzTm9DYW5jZWwnXHJcbiAgfCAnWWVzTm8nXHJcbiAgfCAnUmV0cnlDYW5jZWwnXHJcbiAgfCAnQ2FuY2VsVHJ5Q29udGludWUnO1xyXG4iXX0=
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FB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QUFJOzZCQUNoQjs0QkFDRCxJQUFJLEVBQUUsZUFBZTs0QkFDckIsS0FBSyxFQUFFLE9BQU87eUJBQ2Y7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxjQUFjO29CQUNwQixlQUFlLEVBQUUsRUFBRTtpQkFDcEI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO3dHQTFJVSxhQUFhOzRHQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvRGlhbG9nU2VydmljZSwgRGlhbG9nVHlwZXMsIERpYWxvZ1NpemVzIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWZvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIGltcGxlbWVudHMgSUV2YWx1YXRvclByb3ZpZGVyIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IFNpcmlvRGlhbG9nU2VydmljZVxyXG4gICAgKVxyXG4gIHsgfVxyXG5cclxuICBvcGVuRGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBhbGVydCh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnMgOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJ3YXJuaW5nXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBpbmZvKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnT0snLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ1llc05vJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9OyAgICBcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcm9tcHQodGV4dDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVJbnB1dFNjaGVtYSh0ZXh0LCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ09LQ2FuY2VsJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybSdcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGR5bmFtaWNGb3JtVHlwZTogRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlSW5wdXRTY2hlbWEobGFiZWw6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJsYWJlbFwiOiBsYWJlbCxcclxuICAgICAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBkZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dGZpZWxkXCIsXHJcbiAgICAgICAgICAgICAgXCJsYXlvdXRcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJyb3dcIjogXCJSb3dfMXd4ejVnZFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IG51bGxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIFwiaWRcIjogXCJGaWVsZF8xdGF1NTN4XCIsXHJcbiAgICAgICAgICAgICAgXCJrZXlcIjogXCJpbnB1dFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8xb250d254XCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ09wdGlvbnMge1xyXG4gIHR5cGU/OiBEaWFsb2dUeXBlcztcclxuICBzaXplPzogRGlhbG9nU2l6ZXM7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaXNEcmF3ZXI/OiBib29sZWFuOyAgXHJcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xyXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xyXG4gIGJ1dHRvbnM/OiBEaWFsb2dCdXR0b25zOyAgXHJcbiAgb25SZXN1bHQ/OiAocmVzdWx0OiBEaWFsb2dSZXN1bHQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybURpYWxvZ09wdGlvbnMgZXh0ZW5kcyBEaWFsb2dPcHRpb25zIHtcclxuICB2YWx1ZT86IGFueTtcclxuICBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gIHNob3dOYXY/OiBib29sZWFuO1xyXG4gIHNob3dOYXZCdXR0b24/OiBib29sZWFuO1xyXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgc2hvd0Zvcm1UaXRsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUmVzdWx0IHtcclxuICBhY3Rpb246IERpYWxvZ0FjdGlvbjtcclxuICB2YWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQWN0aW9uID0gJ09LJ1xyXG4gIHwgJ0NhbmNlbCdcclxuICB8ICdZZXMnXHJcbiAgfCAnTm8nXHJcbiAgfCAnQ29uZmlybSdcclxuICB8ICdDbG9zZSdcclxuICB8ICdBYm9ydCdcclxuICB8ICdSZXRyeSdcclxuICB8ICdJZ25vcmUnXHJcbiAgfCAnVHJ5J1xyXG4gIHwgJ0NvbnRpbnVlJztcclxuXHJcbmV4cG9ydCB0eXBlIERpYWxvZ0J1dHRvbnMgPSAnT0snXHJcbiAgfCAnT0tDYW5jZWwnXHJcbiAgfCAnQ29uZmlybUNhbmNlbCdcclxuICB8ICdBYm9ydFJldHJ5SWdub3JlJ1xyXG4gIHwgJ1llc05vQ2FuY2VsJ1xyXG4gIHwgJ1llc05vJ1xyXG4gIHwgJ1JldHJ5Q2FuY2VsJ1xyXG4gIHwgJ0NhbmNlbFRyeUNvbnRpbnVlJztcclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule, LocaleModule, CellStyleModule,
|
|
2
|
+
import { PaginationModule, ClientSideRowModelModule, InfiniteRowModelModule, LocaleModule, CellStyleModule, RowApiModule, RowSelectionModule, TextFilterModule, NumberFilterModule, DateFilterModule, themeQuartz, iconSetAlpine, ClientSideRowModelApiModule, ColumnAutoSizeModule, ColumnApiModule } from 'ag-grid-community';
|
|
3
3
|
import { ObjectURLRendererComponent, DeleteRowCellRenderer, ActionsCellRenderer } from '../utils/gridCells';
|
|
4
4
|
import { SetFilterComponent } from '../utils/setFilter';
|
|
5
5
|
import { getFocusables } from '../utils/focusable';
|
|
@@ -32,7 +32,8 @@ export class GridService {
|
|
|
32
32
|
ColumnAutoSizeModule,
|
|
33
33
|
ColumnApiModule,
|
|
34
34
|
RowSelectionModule,
|
|
35
|
-
|
|
35
|
+
RowApiModule
|
|
36
|
+
//, ValidationModule
|
|
36
37
|
];
|
|
37
38
|
}
|
|
38
39
|
;
|
|
@@ -65,6 +66,9 @@ export class GridService {
|
|
|
65
66
|
onGridSizeChanged: (params) => {
|
|
66
67
|
params.api.autoSizeColumns(["actions"]);
|
|
67
68
|
},
|
|
69
|
+
onModelUpdated: (params) => {
|
|
70
|
+
this.onRowSelecting(component, formGroup, params);
|
|
71
|
+
}
|
|
68
72
|
};
|
|
69
73
|
}
|
|
70
74
|
onSelectionChanged(component, formGroup, event) {
|
|
@@ -279,26 +283,24 @@ export class GridService {
|
|
|
279
283
|
}
|
|
280
284
|
}
|
|
281
285
|
getRowSelection(component, formGroup) {
|
|
286
|
+
let options = undefined;
|
|
282
287
|
if (component.selection === "singleRow") {
|
|
283
|
-
|
|
288
|
+
options = { mode: "singleRow" };
|
|
284
289
|
}
|
|
285
290
|
else if (component.selection === "multiRow") {
|
|
286
|
-
|
|
291
|
+
options = {
|
|
287
292
|
mode: "multiRow",
|
|
288
293
|
selectAll: 'filtered',
|
|
289
294
|
hideDisabledCheckboxes: true
|
|
290
295
|
};
|
|
291
|
-
if (component.isSelectable) {
|
|
292
|
-
return {
|
|
293
|
-
...options,
|
|
294
|
-
isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
else {
|
|
298
|
-
return options;
|
|
299
|
-
}
|
|
300
296
|
}
|
|
301
|
-
|
|
297
|
+
if (options && component.isSelectable) {
|
|
298
|
+
options = {
|
|
299
|
+
...options,
|
|
300
|
+
isRowSelectable: (rowNode) => this.onRowSelectable(component, formGroup, rowNode.data)
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
return options;
|
|
302
304
|
}
|
|
303
305
|
onRowSelectable(component, formGroup, data) {
|
|
304
306
|
if (!data)
|
|
@@ -313,6 +315,34 @@ export class GridService {
|
|
|
313
315
|
});
|
|
314
316
|
return result === true;
|
|
315
317
|
}
|
|
318
|
+
onRowSelected(component, formGroup, data) {
|
|
319
|
+
if (!data)
|
|
320
|
+
return false;
|
|
321
|
+
const result = this.programmability.evaluate(formGroup, component.isSelected, {
|
|
322
|
+
cacheable: false,
|
|
323
|
+
extendContext: () => ({
|
|
324
|
+
"event": {
|
|
325
|
+
data: data
|
|
326
|
+
}
|
|
327
|
+
})
|
|
328
|
+
});
|
|
329
|
+
return result === true;
|
|
330
|
+
}
|
|
331
|
+
onRowSelecting(component, formGroup, params) {
|
|
332
|
+
if (params.newData
|
|
333
|
+
&& component.isSelected
|
|
334
|
+
&& this.hasSelection(component)) {
|
|
335
|
+
params.api.forEachNode((node) => {
|
|
336
|
+
if (this.onRowSelected(component, formGroup, node.data)) {
|
|
337
|
+
node.setSelected(true);
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
hasSelection(component) {
|
|
343
|
+
return component.selection === "singleRow"
|
|
344
|
+
|| component.selection === "multiRow";
|
|
345
|
+
}
|
|
316
346
|
getPaginable(component) {
|
|
317
347
|
return (typeof component.rowCount === 'number' && component.rowCount > 0);
|
|
318
348
|
}
|
|
@@ -555,4 +585,4 @@ export class GridService {
|
|
|
555
585
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridService, decorators: [{
|
|
556
586
|
type: Injectable
|
|
557
587
|
}], ctorParameters: () => [{ type: i1.FormatterService }, { type: i2.ProgrammabilityService }] });
|
|
558
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNHLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUN4RSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUMvQyxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQzlDLFdBQVcsRUFBRSxhQUFhLEVBQ2xDLDJCQUEyQixFQUNMLG9CQUFvQixFQUFFLGVBQWUsRUFFOUQsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNsQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFLOUMsTUFBTSxPQUFPLFdBQVc7SUFFRjtJQUNW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IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE1vZHVsZSwgUGFnaW5hdGlvbk1vZHVsZSwgQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlLCBJbmZpbml0ZVJvd01vZGVsTW9kdWxlXHJcbiAgLCBMb2NhbGVNb2R1bGUsIENlbGxTdHlsZU1vZHVsZSwgVmFsaWRhdGlvbk1vZHVsZVxyXG4gICwgUm93U2VsZWN0aW9uTW9kdWxlLCBSb3dTZWxlY3Rpb25PcHRpb25zIFxyXG4gICwgVGV4dEZpbHRlck1vZHVsZSwgTnVtYmVyRmlsdGVyTW9kdWxlLCBEYXRlRmlsdGVyTW9kdWxlXHJcbiAgLCBDb2xEZWYsIHRoZW1lUXVhcnR6LCBpY29uU2V0QWxwaW5lLCBHcmlkT3B0aW9ucywgRGF0YVR5cGVEZWZpbml0aW9uXHJcbiAgLCBDbGllbnRTaWRlUm93TW9kZWxBcGlNb2R1bGVcclxuICAsIEdyaWRTaXplQ2hhbmdlZEV2ZW50LCBDb2x1bW5BdXRvU2l6ZU1vZHVsZSwgQ29sdW1uQXBpTW9kdWxlXHJcbiAgLCBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXNcclxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JqZWN0VVJMUmVuZGVyZXJDb21wb25lbnQsIERlbGV0ZVJvd0NlbGxSZW5kZXJlciwgQWN0aW9uc0NlbGxSZW5kZXJlciB9IGZyb20gJy4uL3V0aWxzL2dyaWRDZWxscyc7XHJcbmltcG9ydCB7IEZvcm1hdHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtYXR0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNldEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxzL3NldEZpbHRlcic7XHJcbmltcG9ydCB7IGdldEZvY3VzYWJsZXMgfSBmcm9tICcuLi91dGlscy9mb2N1c2FibGUnO1xyXG5pbXBvcnQgeyBpc1JlY29yZCwgaXNMYWJlbGVkUmVjb3JkLCBpc051bWVyaWNLZXkgfSBmcm9tICcuLi9jb21tb24vcmVjb3JkJztcclxuaW1wb3J0IHsgZ2V0TGFiZWxTeW1ib2wgfSBmcm9tICcuLi9jb21tb24vc3ltYm9scyc7XHJcbmltcG9ydCB7XHJcbiAgQUdfR1JJRF9MT0NBTEVfSVQsXHJcbiAgQUdfR1JJRF9MT0NBTEVfRU4sXHJcbiAgQUdfR1JJRF9MT0NBTEVfREUsXHJcbiAgQUdfR1JJRF9MT0NBTEVfRlIsXHJcbiAgQUdfR1JJRF9MT0NBTEVfRVMsXHJcbiAgQUdfR1JJRF9MT0NBTEVfUFQgIFxyXG59IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9sb2NhbGUnO1xyXG5cclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlJztcclxuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxpemUnO1xyXG5cclxudHlwZSBNYXBUeXBlID0gUmVjb3JkPHN0cmluZyB8IG51bWJlciwgc3RyaW5nPiB8IG51bGw7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBHcmlkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybWF0dGVyOiBGb3JtYXR0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGdldE1vZHVsZXMoKTogTW9kdWxlW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgQ2xpZW50U2lkZVJvd01vZGVsTW9kdWxlXHJcbiAgICAgICwgSW5maW5pdGVSb3dNb2RlbE1vZHVsZVxyXG4gICAgICAsIFBhZ2luYXRpb25Nb2R1bGVcclxuICAgICAgLCBMb2NhbGVNb2R1bGVcclxuICAgICAgLCBDZWxsU3R5bGVNb2R1bGVcclxuICAgICAgLCBDbGllbnRTaWRlUm93TW9kZWxBcGlNb2R1bGVcclxuICAgICAgLCBUZXh0RmlsdGVyTW9kdWxlXHJcbiAgICAgICwgTnVtYmVyRmlsdGVyTW9kdWxlXHJcbiAgICAgICwgRGF0ZUZpbHRlck1vZHVsZVxyXG4gICAgICAsIENvbHVtbkF1dG9TaXplTW9kdWxlXHJcbiAgICAgICwgQ29sdW1uQXBpTW9kdWxlXHJcbiAgICAgICwgUm93U2VsZWN0aW9uTW9kdWxlXHJcbiAgICAgICwgVmFsaWRhdGlvbk1vZHVsZVxyXG4gICAgXTtcclxuICB9O1xyXG5cclxuICBnZXRPcHRpb25zKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbGFuZ3VhZ2U6IHN0cmluZyk6IEdyaWRPcHRpb25zIHtcclxuICAgIGNvbnN0IGNvbHVtbkRlZnMgPSB0aGlzLmdldENvbHVtbnMoY29tcG9uZW50LCBmb3JtR3JvdXAsIGxhbmd1YWdlKTtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0Um93U2VsZWN0aW9uKGNvbXBvbmVudCwgZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLmdldFBhZ2luYWJsZShjb21wb25lbnQpO1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLmdldFBhZ2VTaXplKGNvbXBvbmVudCk7XHJcbiAgICBjb25zdCB0ZXh0cyA9IHRoaXMuZ2V0VGV4dHMobGFuZ3VhZ2UpO1xyXG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLmdldFRoZW1lKCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XHJcbiAgICAgICAgZmxvYXRpbmdGaWx0ZXI6IChjb21wb25lbnQuZmxvYXRpbmdGaWx0ZXIgPT09IHRydWUpLFxyXG4gICAgICAgIGhlYWRlckNsYXNzOiAoY29tcG9uZW50LmZsb2F0aW5nRmlsdGVyID09PSB0cnVlKVxyXG4gICAgICAgICAgPyAnc2hvdy1maWx0ZXInIDogJ2hpZGUtZmlsdGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICBzZWxlY3Rpb25Db2x1bW5EZWY6IHtcclxuICAgICAgICBwaW5uZWQ6ICdsZWZ0J1xyXG4gICAgICB9LFxyXG4gICAgICBkYXRhVHlwZURlZmluaXRpb25zOiB0aGlzLmdldERhdGFUeXBlRGVmaW5pdGlvbnMoKSxcclxuICAgICAgY29sdW1uRGVmczogY29sdW1uRGVmcyxcclxuICAgICAgcm93U2VsZWN0aW9uOiBzZWxlY3Rpb24sXHJcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sXHJcbiAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZTogcGFnZVNpemUsXHJcbiAgICAgIGNhY2hlQmxvY2tTaXplOiBwYWdlU2l6ZSxcclxuICAgICAgcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3I6IFs1LCAxMCwgMjAsIDUwXSxcclxuICAgICAgbG9jYWxlVGV4dDogdGV4dHMsXHJcbiAgICAgIGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICB0aGVtZTogdGhlbWUsICAgICAgXHJcbiAgICAgIG9uR3JpZFNpemVDaGFuZ2VkOiAocGFyYW1zOiBHcmlkU2l6ZUNoYW5nZWRFdmVudCkgPT4ge1xyXG4gICAgICAgIHBhcmFtcy5hcGkuYXV0b1NpemVDb2x1bW5zKFtcImFjdGlvbnNcIl0pO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChjb21wb25lbnQuc2VsZWN0aW9uQ2hhbmdlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBjb21wb25lbnQuc2VsZWN0aW9uQ2hhbmdlZCwge1xyXG4gICAgICAgIGNhY2hlYWJsZTogZmFsc2UsXHJcbiAgICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICAgIFwiZXZlbnRcIjoge1xyXG4gICAgICAgICAgICBzZWxlY3RlZFJvd3M6IGV2ZW50LmFwaS5nZXRTZWxlY3RlZFJvd3MoKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZShsYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb2x1bW5zKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbGFuZ3VhZ2U6IHN0cmluZyk6IENvbERlZltdIHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBvbmVudC5jb2x1bW5zKSkge1xyXG4gICAgICBjb25zdCBjb2x1bW5zID0gY29tcG9uZW50LmNvbHVtbnMubWFwKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbERlZjogQ29sRGVmID0ge1xyXG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5rZXksXHJcbiAgICAgICAgICBoZWFkZXJOYW1lOiB0aGlzLmxvY2FsZShjb2x1bW4sICdsYWJlbCcsIGxhbmd1YWdlKSxcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0Q2VsbERhdGFUeXBlKGNvbHVtbiwgY29sRGVmKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWFwID0gdGhpcy5nZXRNYXAoY29sdW1uLCBjb2xEZWYsIGZvcm1Hcm91cCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0Q2VsbFJlbmRlcmVyKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0UmVzaXphYmxlKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFNvcnRhYmxlKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldEZpbHRlcihjb2x1bW4sIGNvbERlZiwgbWFwKTtcclxuICAgICAgICB0aGlzLnNldEZpbHRlclBhcmFtcyhjb2x1bW4sIGNvbERlZiwgbWFwKTtcclxuICAgICAgICB0aGlzLnNldFN1cHByZXNzTW92YWJsZShjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRGbGV4KGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldEFsaWduKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFBpbm5lZChjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRXaWR0aChjb2x1bW4sIGNvbERlZik7XHJcbiAgICAgICAgdGhpcy5zZXRWYWx1ZUZvcm1hdHRlcihjb2x1bW4sIGNvbERlZiwgbWFwKTsgICAgICAgIFxyXG4gICAgICAgIHJldHVybiBjb2xEZWY7XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBvbmVudC5hY3Rpb25zKSAmJiBjb21wb25lbnQuYWN0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29sdW1ucy5wdXNoKHtcclxuICAgICAgICAgIGNvbElkOiAnYWN0aW9ucycsXHJcbiAgICAgICAgICBoZWFkZXJOYW1lOiB0aGlzLmxvY2FsZShUZXh0cywgJ0FjdGlvbnMnLCBsYW5ndWFnZSksXHJcbiAgICAgICAgICByZXNpemFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgZmlsdGVyOiBmYWxzZSxcclxuICAgICAgICAgIGNlbGxEYXRhVHlwZTogZmFsc2UsXHJcbiAgICAgICAgICBwaW5uZWQ6IFwicmlnaHRcIixcclxuICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcclxuICAgICAgICAgICAgZm9ybUdyb3VwOiBmb3JtR3JvdXBcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjZWxsUmVuZGVyZXI6IEFjdGlvbnNDZWxsUmVuZGVyZXIsXHJcbiAgICAgICAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IHRoaXMubmF2aWdhdGVJbnNpZGVDZWxsLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGNvbHVtbnM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDZWxsRGF0YVR5cGUoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi5kYXRhVHlwZSA9PT0gXCJzdHJpbmdcIlxyXG4gICAgICAmJiBjb2x1bW4uZGF0YVR5cGUudHJpbSgpICE9PSBcIlwiXHJcbiAgICAgICYmIGNvbHVtbi5kYXRhVHlwZSAhPT0gXCJhdXRvXCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxEYXRhVHlwZSA9IGNvbHVtbi5kYXRhVHlwZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q2VsbFJlbmRlcmVyKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgbWFwOiBNYXBUeXBlKSB7XHJcbiAgICBpZiAoY29sdW1uLmZvcm1hdCA9PT0gXCJvYmplY3RVUkxcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gT2JqZWN0VVJMUmVuZGVyZXJDb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbHVtbi5mb3JtYXQgPT09IFwiZGVsZXRlUm93XCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IERlbGV0ZVJvd0NlbGxSZW5kZXJlcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJib29sZWFuXCIgJiYgbWFwKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRNYXAocGFyYW1zLnZhbHVlLCBtYXApOyBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSZXNpemFibGUoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmICkge1xyXG4gICAgY29sRGVmLnJlc2l6YWJsZSA9IChjb2x1bW4ucmVzaXplID09PSB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U29ydGFibGUoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBjb2xEZWYuc29ydGFibGUgPSAoY29sdW1uLnNvcnQgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGaWx0ZXIoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmIChjb2x1bW4uZmlsdGVyID09PSB0cnVlKSB7XHJcbiAgICAgIGNvbERlZi5maWx0ZXIgPSB0cnVlO1xyXG4gICAgICBpZiAobWFwKSB7XHJcbiAgICAgICAgY29sRGVmLmZpbHRlciA9IFNldEZpbHRlckNvbXBvbmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGaWx0ZXJQYXJhbXMoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUpIHtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJQYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuICAgIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09ICd1dWlkJykge1xyXG4gICAgICB0aGlzLnNldFV1aWRGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ2ludGVnZXInKSB7XHJcbiAgICAgIHRoaXMuc2V0SW50ZWdlckZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5zZXREYXRlRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLnNldEJvb2xlYW5GaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKG1hcCkge1xyXG4gICAgICBmaWx0ZXJQYXJhbXMubWFwID0gbWFwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbERlZi5maWx0ZXJQYXJhbXMgPSBmaWx0ZXJQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFV1aWRGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gWydlcXVhbHMnLCAnbm90RXF1YWwnXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW50ZWdlckZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmFsbG93ZWRDaGFyUGF0dGVybiA9ICdcXFxcZCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGVGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIGZpbHRlclBhcmFtcy5jb21wYXJhdG9yID0gKGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQ6IERhdGUsIGNlbGxWYWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghY2VsbFZhbHVlKSByZXR1cm4gLTE7XHJcbiAgICAgIGNvbnN0IGNlbGxEYXRlID0gbmV3IERhdGUoY2VsbFZhbHVlKTtcclxuICAgICAgaWYgKGlzTmFOKGNlbGxEYXRlLmdldFRpbWUoKSkpIHJldHVybiAtMTtcclxuXHJcbiAgICAgIGNvbnN0IGNlbGxEYXRlTm9UaW1lID0gbmV3IERhdGUoY2VsbERhdGUuZ2V0RnVsbFllYXIoKSwgY2VsbERhdGUuZ2V0TW9udGgoKSwgY2VsbERhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChjZWxsRGF0ZU5vVGltZSA8IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHJldHVybiAtMTtcclxuICAgICAgaWYgKGNlbGxEYXRlTm9UaW1lID4gZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkgcmV0dXJuIDE7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRCb29sZWFuRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICdpbmNsdWRlQWxsJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuQ2hvb3NlT25lLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ3RydWUnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5UcnVlLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdmFsdWUgPT09IHRydWVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICdmYWxzZScsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLkZhbHNlLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdmFsdWUgPT09IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAnYmxhbmsnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5CbGFuayxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHZhbHVlID09PSBudWxsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAnbm90QmxhbmsnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5Ob3RCbGFuayxcclxuICAgICAgICBudW1iZXJPZklucHV0czogMCxcclxuICAgICAgICBwcmVkaWNhdGU6IChbZmlsdGVyXTogW2FueV0sIHZhbHVlOiBhbnkpID0+IHZhbHVlICE9PSBudWxsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgZmlsdGVyUGFyYW1zLnN1cHByZXNzQW5kT3JDb25kaXRpb24gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTdXBwcmVzc01vdmFibGUoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAoIShjb2x1bW4ubW92ZSA9PT0gdHJ1ZSkpIHsgXHJcbiAgICAgIGNvbERlZi5zdXBwcmVzc01vdmFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGbGV4KGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKGNvbHVtbi5mbGV4ID09PSB0cnVlKSB7IFxyXG4gICAgICBjb2xEZWYuZmxleCA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFsaWduKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKGNvbHVtbi5hbGlnbiA9PT0gXCJsZWZ0XCIpIHtcclxuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsgdGV4dEFsaWduOiAnbGVmdCcgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5hbGlnbiA9PT0gXCJjZW50ZXJcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geyB0ZXh0QWxpZ246ICdjZW50ZXInIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uYWxpZ24gPT09IFwicmlnaHRcIikgeyBcclxuICAgICAgY29sRGVmLmNlbGxTdHlsZSA9IHsgdGV4dEFsaWduOiAncmlnaHQnIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFBpbm5lZChjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uLnBpbm5lZCA9PT0gXCJzdHJpbmdcIikgeyBcclxuICAgICAgY29sRGVmLnBpbm5lZCA9IGNvbHVtbi5waW5uZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFdpZHRoKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ud2lkdGggPT09IFwibnVtYmVyXCIpIHsgXHJcbiAgICAgIGNvbERlZi53aWR0aCA9IGNvbHVtbi53aWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi5taW5XaWR0aCA9PT0gXCJudW1iZXJcIikgeyBcclxuICAgICAgY29sRGVmLm1pbldpZHRoID0gY29sdW1uLm1pbldpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgY29sdW1uLm1heFdpZHRoID09PSBcIm51bWJlclwiKSB7IFxyXG4gICAgICBjb2xEZWYubWF4V2lkdGggPSBjb2x1bW4ubWF4V2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFZhbHVlRm9ybWF0dGVyKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgbWFwOiBNYXBUeXBlKSB7XHJcbiAgICBpZiAobWFwKSB7XHJcbiAgICAgIGNvbERlZi52YWx1ZUZvcm1hdHRlciA9IChwYXJhbXMpID0+IHRoaXMuZm9ybWF0TWFwKHBhcmFtcy52YWx1ZSwgbWFwKTsgICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Um93U2VsZWN0aW9uKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IFJvd1NlbGVjdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQgIHtcclxuICAgIGlmIChjb21wb25lbnQuc2VsZWN0aW9uID09PSBcInNpbmdsZVJvd1wiKSB7XHJcbiAgICAgIHJldHVybiB7IG1vZGU6IFwic2luZ2xlUm93XCIgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbXBvbmVudC5zZWxlY3Rpb24gPT09IFwibXVsdGlSb3dcIikge1xyXG4gICAgICBjb25zdCBvcHRpb25zOiBSb3dTZWxlY3Rpb25PcHRpb25zID0ge1xyXG4gICAgICAgIG1vZGU6IFwibXVsdGlSb3dcIixcclxuICAgICAgICBzZWxlY3RBbGw6ICdmaWx0ZXJlZCcsXHJcbiAgICAgICAgaGlkZURpc2FibGVkQ2hlY2tib3hlczogdHJ1ZVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGNvbXBvbmVudC5pc1NlbGVjdGFibGUpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgICAgIGlzUm93U2VsZWN0YWJsZTogKHJvd05vZGUpID0+IHRoaXMub25Sb3dTZWxlY3RhYmxlKGNvbXBvbmVudCwgZm9ybUdyb3VwLCByb3dOb2RlLmRhdGEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Sb3dTZWxlY3RhYmxlKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZGF0YTogYW55KSA6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFkYXRhKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBjb21wb25lbnQuaXNTZWxlY3RhYmxlLCB7XHJcbiAgICAgIGNhY2hlYWJsZTogZmFsc2UsXHJcbiAgICAgIGV4dGVuZENvbnRleHQ6ICgpID0+ICh7XHJcbiAgICAgICAgXCJldmVudFwiOiB7XHJcbiAgICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gdHJ1ZTsgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2luYWJsZShjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgY29tcG9uZW50LnJvd0NvdW50ID09PSAnbnVtYmVyJyAmJiBjb21wb25lbnQucm93Q291bnQgPiAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFnZVNpemUoY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgY29tcG9uZW50LnJvd0NvdW50ID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gY29tcG9uZW50LnJvd0NvdW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUZXh0cyhsYW5ndWFnZTogc3RyaW5nKTogYW55IHtcclxuICAgIGlmIChsYW5ndWFnZSA9PT0gJ2l0Jykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfSVQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2VuJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRU47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2RlJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfREU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2ZyJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRlI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ2VzJykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfRVM7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJ3B0Jykge1xyXG4gICAgICByZXR1cm4gQUdfR1JJRF9MT0NBTEVfUFQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChsYW5ndWFnZSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0lUOyAvLyBuZXV0cmFsXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0VOOyAvLyBmYWxsYmFja1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUaGVtZSgpIHtcclxuICAgIHJldHVybiB0aGVtZVF1YXJ0elxyXG4gICAgICAud2l0aFBhcnQoaWNvblNldEFscGluZSlcclxuICAgICAgLndpdGhQYXJhbXMoe1xyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjRkFGQUZBXCIsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IFwiI0Q5RTRGN1wiLFxyXG4gICAgICAgIGJyb3dzZXJDb2xvclNjaGVtZTogXCJsaWdodFwiLFxyXG4gICAgICAgIGNlbGxUZXh0Q29sb3I6IFwiIzAwMTIxQVwiLFxyXG4gICAgICAgIGNvbHVtbkJvcmRlcjogdHJ1ZSxcclxuICAgICAgICBmb250RmFtaWx5OiBcImluaGVyaXRcIixcclxuICAgICAgICBmb250U2l6ZTogMTYsXHJcbiAgICAgICAgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBcIiMwMDI0NjBcIixcclxuICAgICAgICBoZWFkZXJDb2x1bW5Cb3JkZXI6IHRydWUsXHJcbiAgICAgICAgaGVhZGVyQ29sdW1uUmVzaXplSGFuZGxlQ29sb3I6IFwiI0YyRjZGQ1wiLFxyXG4gICAgICAgIGhlYWRlckNvbHVtblJlc2l6ZUhhbmRsZVdpZHRoOiAyLFxyXG4gICAgICAgIGhlYWRlckZvbnRTaXplOiAxNixcclxuICAgICAgICBoZWFkZXJGb250V2VpZ2h0OiA2MDAsXHJcbiAgICAgICAgaGVhZGVyUm93Qm9yZGVyOiBmYWxzZSxcclxuICAgICAgICBoZWFkZXJUZXh0Q29sb3I6IFwiI0YyRjZGQ1wiLFxyXG4gICAgICAgIHJvd0JvcmRlcjogdHJ1ZVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YVR5cGVEZWZpbml0aW9ucygpOiB7IFtjZWxsRGF0YVR5cGU6IHN0cmluZ106IERhdGFUeXBlRGVmaW5pdGlvbjxhbnk+OyB9IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHV1aWQ6IHtcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICd0ZXh0JyxcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICd0ZXh0J1xyXG4gICAgICB9LFxyXG4gICAgICBkYXRlOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdERhdGUocGFyYW1zLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGVUaW1lOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnZGF0ZVN0cmluZycsXHJcbiAgICAgICAgZGF0ZVBhcnNlcjogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lKHBhcmFtcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjdXJyZW5jeToge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IHRoaXMuZm9ybWF0dGVyLmZvcm1hdEN1cnJlbmN5KHBhcmFtcy52YWx1ZSlcclxuICAgICAgfSxcclxuICAgICAgaW50ZWdlcjoge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IHRoaXMuZm9ybWF0dGVyLmZvcm1hdEludGVnZXIocGFyYW1zLnZhbHVlKVxyXG4gICAgICB9LFxyXG4gICAgICBwZXJjZW50YWdlOiB7XHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICBiYXNlRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiBwYXJhbXMgPT4gcGFyYW1zLnZhbHVlID09IG51bGxcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogYCR7TWF0aC5yb3VuZChwYXJhbXMudmFsdWUgKiAxMDApfSVgLFxyXG4gICAgICB9LFxyXG4gICAgICBmbGFnczoge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJ1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNYXAoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IE1hcFR5cGUge1xyXG5cclxuICAgIGNvbnN0IGFsbG93ZWQgPSAoY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJib29sZWFuXCJcclxuICAgICAgfHwgY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJ0ZXh0XCJcclxuICAgICAgfHwgY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJudW1iZXJcIlxyXG4gICAgICB8fCBjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImZsYWdzXCIpO1xyXG5cclxuICAgIGlmIChhbGxvd2VkICYmIGNvbHVtbi5tYXApIHtcclxuICAgICAgY29uc3QgbWFwID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBjb2x1bW4ubWFwVmFsdWVzKTtcclxuXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gaXNSZWNvcmQoXHJcbiAgICAgICAgbWFwLFxyXG4gICAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgICB2YWwgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZydcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWQpXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBpZiAoY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJmbGFnc1wiKSB7XHJcbiAgICAgICAgKG1hcCBhcyBhbnkpW2dldExhYmVsU3ltYm9sXSA9IChrZXk6IGFueSkgPT4gdGhpcy5mb3JtYXRGbGFncyhrZXksIG1hcCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBtYXA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdE1hcCh2YWx1ZTogYW55LCBtYXA6IE1hcFR5cGUpXHJcbiAge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtYXApIHtcclxuICAgICAgdmFyIHJlc3VsdCA9IG1hcFt2YWx1ZV07XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBsYWJlbGVkID0gaXNMYWJlbGVkUmVjb3JkKFxyXG4gICAgICAgICAgbWFwLFxyXG4gICAgICAgICAga2V5ID0+IHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBrZXkgPT09ICdudW1iZXInLFxyXG4gICAgICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnLFxyXG4gICAgICAgICAgZ2V0TGFiZWxTeW1ib2xcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAobGFiZWxlZCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbWFwW2dldExhYmVsU3ltYm9sXSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gcmVzdWx0ID8/IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdEZsYWdzKHZhbHVlOiBhbnksIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiZcclxuICAgICAgaXNSZWNvcmQobWFwLCBpc051bWVyaWNLZXksIHZhbCA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJylcclxuICAgICkge1xyXG4gICAgICBpZiAodmFsdWUgPT0gMCkge1xyXG4gICAgICAgIHJldHVybiBtYXBbMF0gPz8gXCIwXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGF2YWlsYWJsZUZsYWdzID0gT2JqZWN0LmtleXMobWFwKVxyXG4gICAgICAgIC5tYXAoTnVtYmVyKVxyXG4gICAgICAgIC5maWx0ZXIoZmxhZyA9PiBmbGFnICE9PSAwKTtcclxuXHJcbiAgICAgIGNvbnN0IGZsYWdzID0gYXZhaWxhYmxlRmxhZ3MuZmlsdGVyKGZsYWcgPT4gKHZhbHVlICYgZmxhZykgPT09IGZsYWcpO1xyXG5cclxuICAgICAgY29uc3Qgc3VtRmxhZ3MgPSBmbGFncy5yZWR1Y2UoKHN1bSwgZikgPT4gc3VtIHwgZiwgMCk7XHJcblxyXG4gICAgICBpZiAoKHZhbHVlICYgc3VtRmxhZ3MpICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmxhZ3NcclxuICAgICAgICAubWFwKGZsYWcgPT4gbWFwW2ZsYWddKVxyXG4gICAgICAgIC5maWx0ZXIoKGxhYmVsKTogbGFiZWwgaXMgc3RyaW5nID0+ICEhbGFiZWwpXHJcbiAgICAgICAgLmpvaW4oJywgJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGVJbnNpZGVDZWxsKHsgZXZlbnQgfTogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zPGFueT4pIHtcclxuICAgIGNvbnN0IEdSSURfQ0VMTF9DTEFTU05BTUUgPSBcImFnLWNlbGxcIjtcclxuICAgIGNvbnN0IHsga2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XHJcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRFdmVudFBhdGgoZXZlbnQpO1xyXG4gICAgY29uc3QgaXNUYWJGb3J3YXJkID0ga2V5ID09PSBcIlRhYlwiICYmIHNoaWZ0S2V5ID09PSBmYWxzZTtcclxuICAgIGNvbnN0IGlzVGFiQmFja3dhcmQgPSBrZXkgPT09IFwiVGFiXCIgJiYgc2hpZnRLZXkgPT09IHRydWU7XHJcbiAgICBsZXQgc3VwcHJlc3NFdmVudCA9IGZhbHNlO1xyXG4gICAgLy8gSGFuZGxlIGNlbGwgY2hpbGRyZW4gdGFiYmluZ1xyXG4gICAgaWYgKGlzVGFiRm9yd2FyZCB8fCBpc1RhYkJhY2t3YXJkKSB7XHJcbiAgICAgIGNvbnN0IGVHcmlkQ2VsbCA9IHBhdGguZmluZCgoZWwpID0+IHtcclxuICAgICAgICBpZiAoZWwuY2xhc3NMaXN0ID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gZWwuY2xhc3NMaXN0LmNvbnRhaW5zKEdSSURfQ0VMTF9DTEFTU05BTUUpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKCFlR3JpZENlbGwpIHtcclxuICAgICAgICByZXR1cm4gc3VwcHJlc3NFdmVudDtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzID0gZ2V0Rm9jdXNhYmxlcyhlR3JpZENlbGwpO1xyXG4gICAgICBjb25zdCBsYXN0Q2VsbENoaWxkRWwgPVxyXG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50cy5sZW5ndGggLSAxXTtcclxuICAgICAgY29uc3QgZmlyc3RDZWxsQ2hpbGRFbCA9IGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbMF07XHJcbiAgICAgIC8vIFN1cHByZXNzIGtleWJvYXJkIGV2ZW50IGlmIHRhYmJpbmcgZm9yd2FyZCB3aXRoaW4gdGhlIGNlbGwgYW5kIHRoZSBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpcyBub3QgdGhlIGxhc3QgY2hpbGRcclxuICAgICAgaWYgKGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMuaW5kZXhPZihcclxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaXNUYWJGb3J3YXJkKSB7XHJcbiAgICAgICAgY29uc3QgaXNMYXN0Q2hpbGRGb2N1c2VkID1cclxuICAgICAgICAgIGxhc3RDZWxsQ2hpbGRFbCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0Q2VsbENoaWxkRWw7XHJcbiAgICAgICAgaWYgKCFpc0xhc3RDaGlsZEZvY3VzZWQpIHtcclxuICAgICAgICAgIHN1cHByZXNzRXZlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZUdyaWRDZWxsKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbY3VycmVudEluZGV4ICsgMV0uZm9jdXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gU3VwcHJlc3Mga2V5Ym9hcmQgZXZlbnQgaWYgdGFiYmluZyBiYWNrd2FyZHMgd2l0aGluIHRoZSBjZWxsLCBhbmQgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50IGlzIG5vdCB0aGUgZmlyc3QgY2hpbGRcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY2VsbEhhc0ZvY3VzZWRDaGlsZHJlbiA9XHJcbiAgICAgICAgICBlR3JpZENlbGwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgJiZcclxuICAgICAgICAgIGVHcmlkQ2VsbCAhPT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcclxuICAgICAgICAvLyBNYW51YWxseSBzZXQgZm9jdXMgdG8gdGhlIGxhc3QgY2hpbGQgZWxlbWVudCBpZiBjZWxsIGRvZXNuJ3QgaGF2ZSBmb2N1c2VkIGNoaWxkcmVuXHJcbiAgICAgICAgaWYgKCFjZWxsSGFzRm9jdXNlZENoaWxkcmVuKSB7XHJcbiAgICAgICAgICBsYXN0Q2VsbENoaWxkRWwuZm9jdXMoKTtcclxuICAgICAgICAgIC8vIENhbmNlbCBrZXlib2FyZCBwcmVzcywgc28gdGhhdCBpdCBkb2Vzbid0IGZvY3VzIG9uIHRoZSBsYXN0IGNoaWxkIGFuZCB0aGVuIHBhc3MgdGhyb3VnaCB0aGUga2V5Ym9hcmQgcHJlc3MgdG9cclxuICAgICAgICAgIC8vIG1vdmUgdG8gdGhlIDJuZCBsYXN0IGNoaWxkIGVsZW1lbnRcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGlzRmlyc3RDaGlsZEZvY3VzZWQgPVxyXG4gICAgICAgICAgZmlyc3RDZWxsQ2hpbGRFbCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBmaXJzdENlbGxDaGlsZEVsO1xyXG4gICAgICAgIGlmICghaXNGaXJzdENoaWxkRm9jdXNlZCkge1xyXG4gICAgICAgICAgc3VwcHJlc3NFdmVudCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoY3VycmVudEluZGV4ICE9PSAtMSB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBlR3JpZENlbGwpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50c1tjdXJyZW50SW5kZXggLSAxXS5mb2N1cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1cHByZXNzRXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV2ZW50UGF0aChldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudFtdIHtcclxuICAgIGNvbnN0IHBhdGg6IEhUTUxFbGVtZW50W10gPSBbXTtcclxuICAgIGxldCBjdXJyZW50VGFyZ2V0OiBhbnkgPSBldmVudC50YXJnZXQ7XHJcbiAgICB3aGlsZSAoY3VycmVudFRhcmdldCkge1xyXG4gICAgICBwYXRoLnB1c2goY3VycmVudFRhcmdldCk7XHJcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBjdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aDtcclxuICB9XHJcbn1cclxuIl19
|
|
588
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNHLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUN4RSxZQUFZLEVBQUUsZUFBZSxFQUFvQixZQUFZLEVBQzdELGtCQUFrQixFQUNsQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDOUMsV0FBVyxFQUFFLGFBQWEsRUFDbEMsMkJBQTJCLEVBQzhCLG9CQUFvQixFQUFFLGVBQWUsRUFFakcsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNsQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFLOUMsTUFBTSxPQUFPLFdBQVc7SUFFRjtJQUNW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Q29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTW9kdWxlLCBQYWdpbmF0aW9uTW9kdWxlLCBDbGllbnRTaWRlUm93TW9kZWxNb2R1bGUsIEluZmluaXRlUm93TW9kZWxNb2R1bGVcclxuICAsIExvY2FsZU1vZHVsZSwgQ2VsbFN0eWxlTW9kdWxlLCBWYWxpZGF0aW9uTW9kdWxlLCBSb3dBcGlNb2R1bGUgXHJcbiAgLCBSb3dTZWxlY3Rpb25Nb2R1bGUsIFJvd1NlbGVjdGlvbk9wdGlvbnMgXHJcbiAgLCBUZXh0RmlsdGVyTW9kdWxlLCBOdW1iZXJGaWx0ZXJNb2R1bGUsIERhdGVGaWx0ZXJNb2R1bGVcclxuICAsIENvbERlZiwgdGhlbWVRdWFydHosIGljb25TZXRBbHBpbmUsIEdyaWRPcHRpb25zLCBEYXRhVHlwZURlZmluaXRpb25cclxuICAsIENsaWVudFNpZGVSb3dNb2RlbEFwaU1vZHVsZVxyXG4gICwgR3JpZFNpemVDaGFuZ2VkRXZlbnQsIEdyaWRSZWFkeUV2ZW50LCBNb2RlbFVwZGF0ZWRFdmVudCwgQ29sdW1uQXV0b1NpemVNb2R1bGUsIENvbHVtbkFwaU1vZHVsZVxyXG4gICwgU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zXHJcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9iamVjdFVSTFJlbmRlcmVyQ29tcG9uZW50LCBEZWxldGVSb3dDZWxsUmVuZGVyZXIsIEFjdGlvbnNDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi91dGlscy9ncmlkQ2VsbHMnO1xyXG5pbXBvcnQgeyBGb3JtYXR0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybWF0dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXRGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi91dGlscy9zZXRGaWx0ZXInO1xyXG5pbXBvcnQgeyBnZXRGb2N1c2FibGVzIH0gZnJvbSAnLi4vdXRpbHMvZm9jdXNhYmxlJztcclxuaW1wb3J0IHsgaXNSZWNvcmQsIGlzTGFiZWxlZFJlY29yZCwgaXNOdW1lcmljS2V5IH0gZnJvbSAnLi4vY29tbW9uL3JlY29yZCc7XHJcbmltcG9ydCB7IGdldExhYmVsU3ltYm9sIH0gZnJvbSAnLi4vY29tbW9uL3N5bWJvbHMnO1xyXG5pbXBvcnQge1xyXG4gIEFHX0dSSURfTE9DQUxFX0lULFxyXG4gIEFHX0dSSURfTE9DQUxFX0VOLFxyXG4gIEFHX0dSSURfTE9DQUxFX0RFLFxyXG4gIEFHX0dSSURfTE9DQUxFX0ZSLFxyXG4gIEFHX0dSSURfTE9DQUxFX0VTLFxyXG4gIEFHX0dSSURfTE9DQUxFX1BUICBcclxufSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvbG9jYWxlJztcclxuXHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuXHJcbnR5cGUgTWFwVHlwZSA9IFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIHN0cmluZz4gfCBudWxsO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgR3JpZFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1hdHRlcjogRm9ybWF0dGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcHJvZ3JhbW1hYmlsaXR5OiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBnZXRNb2R1bGVzKCk6IE1vZHVsZVtdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIENsaWVudFNpZGVSb3dNb2RlbE1vZHVsZVxyXG4gICAgICAsIEluZmluaXRlUm93TW9kZWxNb2R1bGVcclxuICAgICAgLCBQYWdpbmF0aW9uTW9kdWxlXHJcbiAgICAgICwgTG9jYWxlTW9kdWxlXHJcbiAgICAgICwgQ2VsbFN0eWxlTW9kdWxlXHJcbiAgICAgICwgQ2xpZW50U2lkZVJvd01vZGVsQXBpTW9kdWxlXHJcbiAgICAgICwgVGV4dEZpbHRlck1vZHVsZVxyXG4gICAgICAsIE51bWJlckZpbHRlck1vZHVsZVxyXG4gICAgICAsIERhdGVGaWx0ZXJNb2R1bGVcclxuICAgICAgLCBDb2x1bW5BdXRvU2l6ZU1vZHVsZVxyXG4gICAgICAsIENvbHVtbkFwaU1vZHVsZVxyXG4gICAgICAsIFJvd1NlbGVjdGlvbk1vZHVsZVxyXG4gICAgICAsIFJvd0FwaU1vZHVsZVxyXG4gICAgICAvLywgVmFsaWRhdGlvbk1vZHVsZVxyXG4gICAgXTtcclxuICB9O1xyXG5cclxuICBnZXRPcHRpb25zKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbGFuZ3VhZ2U6IHN0cmluZyk6IEdyaWRPcHRpb25zIHtcclxuICAgIGNvbnN0IGNvbHVtbkRlZnMgPSB0aGlzLmdldENvbHVtbnMoY29tcG9uZW50LCBmb3JtR3JvdXAsIGxhbmd1YWdlKTtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZ2V0Um93U2VsZWN0aW9uKGNvbXBvbmVudCwgZm9ybUdyb3VwKTtcclxuICAgIGNvbnN0IHBhZ2luYXRpb24gPSB0aGlzLmdldFBhZ2luYWJsZShjb21wb25lbnQpO1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLmdldFBhZ2VTaXplKGNvbXBvbmVudCk7XHJcbiAgICBjb25zdCB0ZXh0cyA9IHRoaXMuZ2V0VGV4dHMobGFuZ3VhZ2UpO1xyXG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLmdldFRoZW1lKCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkZWZhdWx0Q29sRGVmOiB7XHJcbiAgICAgICAgZmxvYXRpbmdGaWx0ZXI6IChjb21wb25lbnQuZmxvYXRpbmdGaWx0ZXIgPT09IHRydWUpLFxyXG4gICAgICAgIGhlYWRlckNsYXNzOiAoY29tcG9uZW50LmZsb2F0aW5nRmlsdGVyID09PSB0cnVlKVxyXG4gICAgICAgICAgPyAnc2hvdy1maWx0ZXInIDogJ2hpZGUtZmlsdGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICBzZWxlY3Rpb25Db2x1bW5EZWY6IHtcclxuICAgICAgICBwaW5uZWQ6ICdsZWZ0J1xyXG4gICAgICB9LFxyXG4gICAgICBkYXRhVHlwZURlZmluaXRpb25zOiB0aGlzLmdldERhdGFUeXBlRGVmaW5pdGlvbnMoKSxcclxuICAgICAgY29sdW1uRGVmczogY29sdW1uRGVmcyxcclxuICAgICAgcm93U2VsZWN0aW9uOiBzZWxlY3Rpb24sXHJcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sXHJcbiAgICAgIHBhZ2luYXRpb25QYWdlU2l6ZTogcGFnZVNpemUsXHJcbiAgICAgIGNhY2hlQmxvY2tTaXplOiBwYWdlU2l6ZSxcclxuICAgICAgcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3I6IFs1LCAxMCwgMjAsIDUwXSxcclxuICAgICAgbG9jYWxlVGV4dDogdGV4dHMsXHJcbiAgICAgIGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICB0aGVtZTogdGhlbWUsICAgICAgXHJcbiAgICAgIG9uR3JpZFNpemVDaGFuZ2VkOiAocGFyYW1zOiBHcmlkU2l6ZUNoYW5nZWRFdmVudCkgPT4ge1xyXG4gICAgICAgIHBhcmFtcy5hcGkuYXV0b1NpemVDb2x1bW5zKFtcImFjdGlvbnNcIl0pO1xyXG4gICAgICB9LFxyXG4gICAgICBvbk1vZGVsVXBkYXRlZDogKHBhcmFtczogTW9kZWxVcGRhdGVkRXZlbnQpID0+IHtcclxuICAgICAgICB0aGlzLm9uUm93U2VsZWN0aW5nKGNvbXBvbmVudCwgZm9ybUdyb3VwLCBwYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25DaGFuZ2VkKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGNvbXBvbmVudC5zZWxlY3Rpb25DaGFuZ2VkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGNvbXBvbmVudC5zZWxlY3Rpb25DaGFuZ2VkLCB7XHJcbiAgICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiAoe1xyXG4gICAgICAgICAgXCJldmVudFwiOiB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogZXZlbnQuYXBpLmdldFNlbGVjdGVkUm93cygpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKGxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbHVtbnMoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsYW5ndWFnZTogc3RyaW5nKTogQ29sRGVmW10ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmNvbHVtbnMpKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBjb21wb25lbnQuY29sdW1ucy5tYXAoKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmtleSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKGNvbHVtbiwgJ2xhYmVsJywgbGFuZ3VhZ2UpLFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXRDZWxsRGF0YVR5cGUoY29sdW1uLCBjb2xEZWYpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXAgPSB0aGlzLmdldE1hcChjb2x1bW4sIGNvbERlZiwgZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRDZWxsUmVuZGVyZXIoY29sdW1uLCBjb2xEZWYsIG1hcCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZXNpemFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0U29ydGFibGUoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0RmlsdGVyUGFyYW1zKGNvbHVtbiwgY29sRGVmLCBtYXApO1xyXG4gICAgICAgIHRoaXMuc2V0U3VwcHJlc3NNb3ZhYmxlKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldEZsZXgoY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0QWxpZ24oY29sdW1uLCBjb2xEZWYpO1xyXG4gICAgICAgIHRoaXMuc2V0UGlubmVkKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFdpZHRoKGNvbHVtbiwgY29sRGVmKTtcclxuICAgICAgICB0aGlzLnNldFZhbHVlRm9ybWF0dGVyKGNvbHVtbiwgY29sRGVmLCBtYXApOyAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGNvbERlZjtcclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50LmFjdGlvbnMpICYmIGNvbXBvbmVudC5hY3Rpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb2x1bW5zLnB1c2goe1xyXG4gICAgICAgICAgY29sSWQ6ICdhY3Rpb25zJyxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IHRoaXMubG9jYWxlKFRleHRzLCAnQWN0aW9ucycsIGxhbmd1YWdlKSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgICAgY2VsbERhdGFUeXBlOiBmYWxzZSxcclxuICAgICAgICAgIHBpbm5lZDogXCJyaWdodFwiLFxyXG4gICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxyXG4gICAgICAgICAgICBmb3JtR3JvdXA6IGZvcm1Hcm91cFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNlbGxSZW5kZXJlcjogQWN0aW9uc0NlbGxSZW5kZXJlcixcclxuICAgICAgICAgIHN1cHByZXNzS2V5Ym9hcmRFdmVudDogdGhpcy5uYXZpZ2F0ZUluc2lkZUNlbGwuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gY29sdW1ucztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENlbGxEYXRhVHlwZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICh0eXBlb2YgY29sdW1uLmRhdGFUeXBlID09PSBcInN0cmluZ1wiXHJcbiAgICAgICYmIGNvbHVtbi5kYXRhVHlwZS50cmltKCkgIT09IFwiXCJcclxuICAgICAgJiYgY29sdW1uLmRhdGFUeXBlICE9PSBcImF1dG9cIikge1xyXG4gICAgICBjb2xEZWYuY2VsbERhdGFUeXBlID0gY29sdW1uLmRhdGFUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDZWxsUmVuZGVyZXIoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmIChjb2x1bW4uZm9ybWF0ID09PSBcIm9iamVjdFVSTFwiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsUmVuZGVyZXIgPSBPYmplY3RVUkxSZW5kZXJlckNvbXBvbmVudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29sdW1uLmZvcm1hdCA9PT0gXCJkZWxldGVSb3dcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFJlbmRlcmVyID0gRGVsZXRlUm93Q2VsbFJlbmRlcmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2xEZWYuY2VsbERhdGFUeXBlID09PSBcImJvb2xlYW5cIiAmJiBtYXApIHtcclxuICAgICAgY29sRGVmLmNlbGxSZW5kZXJlciA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE1hcChwYXJhbXMudmFsdWUsIG1hcCk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJlc2l6YWJsZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYgKSB7XHJcbiAgICBjb2xEZWYucmVzaXphYmxlID0gKGNvbHVtbi5yZXNpemUgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTb3J0YWJsZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGNvbERlZi5zb3J0YWJsZSA9IChjb2x1bW4uc29ydCA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlcihjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG4gICAgaWYgKGNvbHVtbi5maWx0ZXIgPT09IHRydWUpIHtcclxuICAgICAgY29sRGVmLmZpbHRlciA9IHRydWU7XHJcbiAgICAgIGlmIChtYXApIHtcclxuICAgICAgICBjb2xEZWYuZmlsdGVyID0gU2V0RmlsdGVyQ29tcG9uZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclBhcmFtcyhjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYsIG1hcDogTWFwVHlwZSkge1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ3V1aWQnKSB7XHJcbiAgICAgIHRoaXMuc2V0VXVpZEZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmRhdGFUeXBlID09PSAnaW50ZWdlcicpIHtcclxuICAgICAgdGhpcy5zZXRJbnRlZ2VyRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb2x1bW4uZGF0YVR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICB0aGlzLnNldERhdGVGaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuc2V0Qm9vbGVhbkZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAobWFwKSB7XHJcbiAgICAgIGZpbHRlclBhcmFtcy5tYXAgPSBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgY29sRGVmLmZpbHRlclBhcmFtcyA9IGZpbHRlclBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXVpZEZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbJ2VxdWFscycsICdub3RFcXVhbCddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbnRlZ2VyRmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XHJcbiAgICBmaWx0ZXJQYXJhbXMuYWxsb3dlZENoYXJQYXR0ZXJuID0gJ1xcXFxkJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0ZUZpbHRlclBhcmFtcyhmaWx0ZXJQYXJhbXM6IGFueSkge1xyXG4gICAgZmlsdGVyUGFyYW1zLmNvbXBhcmF0b3IgPSAoZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodDogRGF0ZSwgY2VsbFZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCFjZWxsVmFsdWUpIHJldHVybiAtMTtcclxuICAgICAgY29uc3QgY2VsbERhdGUgPSBuZXcgRGF0ZShjZWxsVmFsdWUpO1xyXG4gICAgICBpZiAoaXNOYU4oY2VsbERhdGUuZ2V0VGltZSgpKSkgcmV0dXJuIC0xO1xyXG5cclxuICAgICAgY29uc3QgY2VsbERhdGVOb1RpbWUgPSBuZXcgRGF0ZShjZWxsRGF0ZS5nZXRGdWxsWWVhcigpLCBjZWxsRGF0ZS5nZXRNb250aCgpLCBjZWxsRGF0ZS5nZXREYXRlKCkpO1xyXG5cclxuICAgICAgaWYgKGNlbGxEYXRlTm9UaW1lIDwgZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkgcmV0dXJuIC0xO1xyXG4gICAgICBpZiAoY2VsbERhdGVOb1RpbWUgPiBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSByZXR1cm4gMTtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJvb2xlYW5GaWx0ZXJQYXJhbXMoZmlsdGVyUGFyYW1zOiBhbnkpIHtcclxuICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ2luY2x1ZGVBbGwnLFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBUZXh0cy5DaG9vc2VPbmUsXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB0cnVlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBkaXNwbGF5S2V5OiAndHJ1ZScsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLlRydWUsXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGlzcGxheUtleTogJ2ZhbHNlJyxcclxuICAgICAgICBkaXNwbGF5TmFtZTogVGV4dHMuRmFsc2UsXHJcbiAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDAsXHJcbiAgICAgICAgcHJlZGljYXRlOiAoW2ZpbHRlcl06IFthbnldLCB2YWx1ZTogYW55KSA9PiB2YWx1ZSA9PT0gZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICdibGFuaycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLkJsYW5rLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdmFsdWUgPT09IG51bGxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGRpc3BsYXlLZXk6ICdub3RCbGFuaycsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IFRleHRzLk5vdEJsYW5rLFxyXG4gICAgICAgIG51bWJlck9mSW5wdXRzOiAwLFxyXG4gICAgICAgIHByZWRpY2F0ZTogKFtmaWx0ZXJdOiBbYW55XSwgdmFsdWU6IGFueSkgPT4gdmFsdWUgIT09IG51bGxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICBmaWx0ZXJQYXJhbXMuc3VwcHJlc3NBbmRPckNvbmRpdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN1cHByZXNzTW92YWJsZShjb2x1bW46IGFueSwgY29sRGVmOiBDb2xEZWYpIHtcclxuICAgIGlmICghKGNvbHVtbi5tb3ZlID09PSB0cnVlKSkgeyBcclxuICAgICAgY29sRGVmLnN1cHByZXNzTW92YWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZsZXgoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAoY29sdW1uLmZsZXggPT09IHRydWUpIHsgXHJcbiAgICAgIGNvbERlZi5mbGV4ID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0QWxpZ24oY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAoY29sdW1uLmFsaWduID09PSBcImxlZnRcIikge1xyXG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geyB0ZXh0QWxpZ246ICdsZWZ0JyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29sdW1uLmFsaWduID09PSBcImNlbnRlclwiKSB7XHJcbiAgICAgIGNvbERlZi5jZWxsU3R5bGUgPSB7IHRleHRBbGlnbjogJ2NlbnRlcicgfTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbHVtbi5hbGlnbiA9PT0gXCJyaWdodFwiKSB7IFxyXG4gICAgICBjb2xEZWYuY2VsbFN0eWxlID0geyB0ZXh0QWxpZ246ICdyaWdodCcgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGlubmVkKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZikge1xyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ucGlubmVkID09PSBcInN0cmluZ1wiKSB7IFxyXG4gICAgICBjb2xEZWYucGlubmVkID0gY29sdW1uLnBpbm5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0V2lkdGgoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmKSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbHVtbi53aWR0aCA9PT0gXCJudW1iZXJcIikgeyBcclxuICAgICAgY29sRGVmLndpZHRoID0gY29sdW1uLndpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgY29sdW1uLm1pbldpZHRoID09PSBcIm51bWJlclwiKSB7IFxyXG4gICAgICBjb2xEZWYubWluV2lkdGggPSBjb2x1bW4ubWluV2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBjb2x1bW4ubWF4V2lkdGggPT09IFwibnVtYmVyXCIpIHsgXHJcbiAgICAgIGNvbERlZi5tYXhXaWR0aCA9IGNvbHVtbi5tYXhXaWR0aDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsdWVGb3JtYXR0ZXIoY29sdW1uOiBhbnksIGNvbERlZjogQ29sRGVmLCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmIChtYXApIHtcclxuICAgICAgY29sRGVmLnZhbHVlRm9ybWF0dGVyID0gKHBhcmFtcykgPT4gdGhpcy5mb3JtYXRNYXAocGFyYW1zLnZhbHVlLCBtYXApOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSb3dTZWxlY3Rpb24oY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwKTogUm93U2VsZWN0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZCAge1xyXG4gICAgbGV0IG9wdGlvbnM6IFJvd1NlbGVjdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKGNvbXBvbmVudC5zZWxlY3Rpb24gPT09IFwic2luZ2xlUm93XCIpIHtcclxuICAgICAgb3B0aW9ucyA9IHsgbW9kZTogXCJzaW5nbGVSb3dcIiB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29tcG9uZW50LnNlbGVjdGlvbiA9PT0gXCJtdWx0aVJvd1wiKSB7XHJcbiAgICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbW9kZTogXCJtdWx0aVJvd1wiLFxyXG4gICAgICAgIHNlbGVjdEFsbDogJ2ZpbHRlcmVkJyxcclxuICAgICAgICBoaWRlRGlzYWJsZWRDaGVja2JveGVzOiB0cnVlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMgJiYgY29tcG9uZW50LmlzU2VsZWN0YWJsZSkge1xyXG4gICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgaXNSb3dTZWxlY3RhYmxlOiAocm93Tm9kZSkgPT4gdGhpcy5vblJvd1NlbGVjdGFibGUoY29tcG9uZW50LCBmb3JtR3JvdXAsIHJvd05vZGUuZGF0YSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblJvd1NlbGVjdGFibGUoY29tcG9uZW50OiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBkYXRhOiBhbnkpIDogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWRhdGEpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGNvbXBvbmVudC5pc1NlbGVjdGFibGUsIHtcclxuICAgICAgY2FjaGVhYmxlOiBmYWxzZSxcclxuICAgICAgZXh0ZW5kQ29udGV4dDogKCkgPT4gKHtcclxuICAgICAgICBcImV2ZW50XCI6IHtcclxuICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0ID09PSB0cnVlOyBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Sb3dTZWxlY3RlZChjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFkYXRhKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBjb21wb25lbnQuaXNTZWxlY3RlZCwge1xyXG4gICAgICBjYWNoZWFibGU6IGZhbHNlLFxyXG4gICAgICBleHRlbmRDb250ZXh0OiAoKSA9PiAoe1xyXG4gICAgICAgIFwiZXZlbnRcIjoge1xyXG4gICAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUm93U2VsZWN0aW5nKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgcGFyYW1zOiBNb2RlbFVwZGF0ZWRFdmVudCkge1xyXG4gICAgaWYgKHBhcmFtcy5uZXdEYXRhICAgICAgXHJcbiAgICAgICYmIGNvbXBvbmVudC5pc1NlbGVjdGVkXHJcbiAgICAgICYmIHRoaXMuaGFzU2VsZWN0aW9uKGNvbXBvbmVudCkpXHJcbiAgICB7XHJcbiAgICAgIHBhcmFtcy5hcGkuZm9yRWFjaE5vZGUoKG5vZGUpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vblJvd1NlbGVjdGVkKGNvbXBvbmVudCwgZm9ybUdyb3VwLCBub2RlLmRhdGEpKSB7XHJcbiAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1NlbGVjdGlvbihjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC5zZWxlY3Rpb24gPT09IFwic2luZ2xlUm93XCJcclxuICAgICAgfHwgY29tcG9uZW50LnNlbGVjdGlvbiA9PT0gXCJtdWx0aVJvd1wiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYWdpbmFibGUoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodHlwZW9mIGNvbXBvbmVudC5yb3dDb3VudCA9PT0gJ251bWJlcicgJiYgY29tcG9uZW50LnJvd0NvdW50ID4gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhZ2VTaXplKGNvbXBvbmVudDogYW55KSB7XHJcbiAgICBpZiAodHlwZW9mIGNvbXBvbmVudC5yb3dDb3VudCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5yb3dDb3VudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGV4dHMobGFuZ3VhZ2U6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZiAobGFuZ3VhZ2UgPT09ICdpdCcpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0lUO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFuZ3VhZ2UgPT09ICdlbicpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0VOO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFuZ3VhZ2UgPT09ICdkZScpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0RFO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFuZ3VhZ2UgPT09ICdmcicpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0ZSO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFuZ3VhZ2UgPT09ICdlcycpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX0VTO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFuZ3VhZ2UgPT09ICdwdCcpIHtcclxuICAgICAgcmV0dXJuIEFHX0dSSURfTE9DQUxFX1BUO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobGFuZ3VhZ2UgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9JVDsgLy8gbmV1dHJhbFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBBR19HUklEX0xPQ0FMRV9FTjsgLy8gZmFsbGJhY2tcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGhlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhlbWVRdWFydHpcclxuICAgICAgLndpdGhQYXJ0KGljb25TZXRBbHBpbmUpXHJcbiAgICAgIC53aXRoUGFyYW1zKHtcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI0ZBRkFGQVwiLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBcIiNEOUU0RjdcIixcclxuICAgICAgICBicm93c2VyQ29sb3JTY2hlbWU6IFwibGlnaHRcIixcclxuICAgICAgICBjZWxsVGV4dENvbG9yOiBcIiMwMDEyMUFcIixcclxuICAgICAgICBjb2x1bW5Cb3JkZXI6IHRydWUsXHJcbiAgICAgICAgZm9udEZhbWlseTogXCJpbmhlcml0XCIsXHJcbiAgICAgICAgZm9udFNpemU6IDE2LFxyXG4gICAgICAgIGhlYWRlckJhY2tncm91bmRDb2xvcjogXCIjMDAyNDYwXCIsXHJcbiAgICAgICAgaGVhZGVyQ29sdW1uQm9yZGVyOiB0cnVlLFxyXG4gICAgICAgIGhlYWRlckNvbHVtblJlc2l6ZUhhbmRsZUNvbG9yOiBcIiNGMkY2RkNcIixcclxuICAgICAgICBoZWFkZXJDb2x1bW5SZXNpemVIYW5kbGVXaWR0aDogMixcclxuICAgICAgICBoZWFkZXJGb250U2l6ZTogMTYsXHJcbiAgICAgICAgaGVhZGVyRm9udFdlaWdodDogNjAwLFxyXG4gICAgICAgIGhlYWRlclJvd0JvcmRlcjogZmFsc2UsXHJcbiAgICAgICAgaGVhZGVyVGV4dENvbG9yOiBcIiNGMkY2RkNcIixcclxuICAgICAgICByb3dCb3JkZXI6IHRydWVcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGFUeXBlRGVmaW5pdGlvbnMoKTogeyBbY2VsbERhdGFUeXBlOiBzdHJpbmddOiBEYXRhVHlwZURlZmluaXRpb248YW55PjsgfSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1dWlkOiB7XHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAndGV4dCcsXHJcbiAgICAgICAgZXh0ZW5kc0RhdGFUeXBlOiAndGV4dCdcclxuICAgICAgfSxcclxuICAgICAgZGF0ZToge1xyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGRhdGVQYXJzZXI6ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXREYXRlKHBhcmFtcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBkYXRlVGltZToge1xyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ2RhdGVTdHJpbmcnLFxyXG4gICAgICAgIGRhdGVQYXJzZXI6ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci5mb3JtYXREYXRlVGltZShwYXJhbXMudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgY3VycmVuY3k6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHBhcmFtcyA9PiBwYXJhbXMudmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB0aGlzLmZvcm1hdHRlci5mb3JtYXRDdXJyZW5jeShwYXJhbXMudmFsdWUpXHJcbiAgICAgIH0sXHJcbiAgICAgIGludGVnZXI6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHBhcmFtcyA9PiBwYXJhbXMudmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB0aGlzLmZvcm1hdHRlci5mb3JtYXRJbnRlZ2VyKHBhcmFtcy52YWx1ZSlcclxuICAgICAgfSxcclxuICAgICAgcGVyY2VudGFnZToge1xyXG4gICAgICAgIGV4dGVuZHNEYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgYmFzZURhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogcGFyYW1zID0+IHBhcmFtcy52YWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IGAke01hdGgucm91bmQocGFyYW1zLnZhbHVlICogMTAwKX0lYCxcclxuICAgICAgfSxcclxuICAgICAgZmxhZ3M6IHtcclxuICAgICAgICBleHRlbmRzRGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgIGJhc2VEYXRhVHlwZTogJ251bWJlcidcclxuICAgICAgfSAgICAgIFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TWFwKGNvbHVtbjogYW55LCBjb2xEZWY6IENvbERlZiwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBNYXBUeXBlIHtcclxuXHJcbiAgICBjb25zdCBhbGxvd2VkID0gKGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwiYm9vbGVhblwiXHJcbiAgICAgIHx8IGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwidGV4dFwiXHJcbiAgICAgIHx8IGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwibnVtYmVyXCJcclxuICAgICAgfHwgY29sRGVmLmNlbGxEYXRhVHlwZSA9PT0gXCJmbGFnc1wiKTtcclxuXHJcbiAgICBpZiAoYWxsb3dlZCAmJiBjb2x1bW4ubWFwKSB7XHJcbiAgICAgIGNvbnN0IG1hcCA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlKGZvcm1Hcm91cCwgY29sdW1uLm1hcFZhbHVlcyk7XHJcblxyXG4gICAgICBjb25zdCB2YWxpZCA9IGlzUmVjb3JkKFxyXG4gICAgICAgIG1hcCxcclxuICAgICAgICBrZXkgPT4gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicsXHJcbiAgICAgICAgdmFsID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAoIXZhbGlkKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgaWYgKGNvbERlZi5jZWxsRGF0YVR5cGUgPT09IFwiZmxhZ3NcIikge1xyXG4gICAgICAgIChtYXAgYXMgYW55KVtnZXRMYWJlbFN5bWJvbF0gPSAoa2V5OiBhbnkpID0+IHRoaXMuZm9ybWF0RmxhZ3Moa2V5LCBtYXApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbWFwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRNYXAodmFsdWU6IGFueSwgbWFwOiBNYXBUeXBlKVxyXG4gIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWFwKSB7XHJcbiAgICAgIHZhciByZXN1bHQgPSBtYXBbdmFsdWVdO1xyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxlZCA9IGlzTGFiZWxlZFJlY29yZChcclxuICAgICAgICAgIG1hcCxcclxuICAgICAgICAgIGtleSA9PiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyB8fCB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJyxcclxuICAgICAgICAgIHZhbCA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyxcclxuICAgICAgICAgIGdldExhYmVsU3ltYm9sXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGxhYmVsZWQpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IG1hcFtnZXRMYWJlbFN5bWJvbF0odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgcmV0dXJuIHJlc3VsdCA/PyB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRGbGFncyh2YWx1ZTogYW55LCBtYXA6IE1hcFR5cGUpIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmXHJcbiAgICAgIGlzUmVjb3JkKG1hcCwgaXNOdW1lcmljS2V5LCB2YWwgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpXHJcbiAgICApIHtcclxuICAgICAgaWYgKHZhbHVlID09IDApIHtcclxuICAgICAgICByZXR1cm4gbWFwWzBdID8/IFwiMFwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBhdmFpbGFibGVGbGFncyA9IE9iamVjdC5rZXlzKG1hcClcclxuICAgICAgICAubWFwKE51bWJlcilcclxuICAgICAgICAuZmlsdGVyKGZsYWcgPT4gZmxhZyAhPT0gMCk7XHJcblxyXG4gICAgICBjb25zdCBmbGFncyA9IGF2YWlsYWJsZUZsYWdzLmZpbHRlcihmbGFnID0+ICh2YWx1ZSAmIGZsYWcpID09PSBmbGFnKTtcclxuXHJcbiAgICAgIGNvbnN0IHN1bUZsYWdzID0gZmxhZ3MucmVkdWNlKChzdW0sIGYpID0+IHN1bSB8IGYsIDApO1xyXG5cclxuICAgICAgaWYgKCh2YWx1ZSAmIHN1bUZsYWdzKSAhPT0gdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZsYWdzXHJcbiAgICAgICAgLm1hcChmbGFnID0+IG1hcFtmbGFnXSlcclxuICAgICAgICAuZmlsdGVyKChsYWJlbCk6IGxhYmVsIGlzIHN0cmluZyA9PiAhIWxhYmVsKVxyXG4gICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdmlnYXRlSW5zaWRlQ2VsbCh7IGV2ZW50IH06IFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtczxhbnk+KSB7XHJcbiAgICBjb25zdCBHUklEX0NFTExfQ0xBU1NOQU1FID0gXCJhZy1jZWxsXCI7XHJcbiAgICBjb25zdCB7IGtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xyXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZ2V0RXZlbnRQYXRoKGV2ZW50KTtcclxuICAgIGNvbnN0IGlzVGFiRm9yd2FyZCA9IGtleSA9PT0gXCJUYWJcIiAmJiBzaGlmdEtleSA9PT0gZmFsc2U7XHJcbiAgICBjb25zdCBpc1RhYkJhY2t3YXJkID0ga2V5ID09PSBcIlRhYlwiICYmIHNoaWZ0S2V5ID09PSB0cnVlO1xyXG4gICAgbGV0IHN1cHByZXNzRXZlbnQgPSBmYWxzZTtcclxuICAgIC8vIEhhbmRsZSBjZWxsIGNoaWxkcmVuIHRhYmJpbmdcclxuICAgIGlmIChpc1RhYkZvcndhcmQgfHwgaXNUYWJCYWNrd2FyZCkge1xyXG4gICAgICBjb25zdCBlR3JpZENlbGwgPSBwYXRoLmZpbmQoKGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGVsLmNsYXNzTGlzdC5jb250YWlucyhHUklEX0NFTExfQ0xBU1NOQU1FKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICghZUdyaWRDZWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cHByZXNzRXZlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZm9jdXNhYmxlQ2hpbGRyZW5FbGVtZW50cyA9IGdldEZvY3VzYWJsZXMoZUdyaWRDZWxsKTtcclxuICAgICAgY29uc3QgbGFzdENlbGxDaGlsZEVsID1cclxuICAgICAgICBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzW2ZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGNvbnN0IGZpcnN0Q2VsbENoaWxkRWwgPSBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzWzBdO1xyXG4gICAgICAvLyBTdXBwcmVzcyBrZXlib2FyZCBldmVudCBpZiB0YWJiaW5nIGZvcndhcmQgd2l0aGluIHRoZSBjZWxsIGFuZCB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaXMgbm90IHRoZSBsYXN0IGNoaWxkXHJcbiAgICAgIGlmIChmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzLmluZGV4T2YoXHJcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgKTtcclxuICAgICAgaWYgKGlzVGFiRm9yd2FyZCkge1xyXG4gICAgICAgIGNvbnN0IGlzTGFzdENoaWxkRm9jdXNlZCA9XHJcbiAgICAgICAgICBsYXN0Q2VsbENoaWxkRWwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbGFzdENlbGxDaGlsZEVsO1xyXG4gICAgICAgIGlmICghaXNMYXN0Q2hpbGRGb2N1c2VkKSB7XHJcbiAgICAgICAgICBzdXBwcmVzc0V2ZW50ID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xIHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVHcmlkQ2VsbCkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbkVsZW1lbnRzW2N1cnJlbnRJbmRleCArIDFdLmZvY3VzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIFN1cHByZXNzIGtleWJvYXJkIGV2ZW50IGlmIHRhYmJpbmcgYmFja3dhcmRzIHdpdGhpbiB0aGUgY2VsbCwgYW5kIHRoZSBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpcyBub3QgdGhlIGZpcnN0IGNoaWxkXHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGNlbGxIYXNGb2N1c2VkQ2hpbGRyZW4gPVxyXG4gICAgICAgICAgZUdyaWRDZWxsLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpICYmXHJcbiAgICAgICAgICBlR3JpZENlbGwgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgLy8gTWFudWFsbHkgc2V0IGZvY3VzIHRvIHRoZSBsYXN0IGNoaWxkIGVsZW1lbnQgaWYgY2VsbCBkb2Vzbid0IGhhdmUgZm9jdXNlZCBjaGlsZHJlblxyXG4gICAgICAgIGlmICghY2VsbEhhc0ZvY3VzZWRDaGlsZHJlbikge1xyXG4gICAgICAgICAgbGFzdENlbGxDaGlsZEVsLmZvY3VzKCk7XHJcbiAgICAgICAgICAvLyBDYW5jZWwga2V5Ym9hcmQgcHJlc3MsIHNvIHRoYXQgaXQgZG9lc24ndCBmb2N1cyBvbiB0aGUgbGFzdCBjaGlsZCBhbmQgdGhlbiBwYXNzIHRocm91Z2ggdGhlIGtleWJvYXJkIHByZXNzIHRvXHJcbiAgICAgICAgICAvLyBtb3ZlIHRvIHRoZSAybmQgbGFzdCBjaGlsZCBlbGVtZW50XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc0ZpcnN0Q2hpbGRGb2N1c2VkID1cclxuICAgICAgICAgIGZpcnN0Q2VsbENoaWxkRWwgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZmlyc3RDZWxsQ2hpbGRFbDtcclxuICAgICAgICBpZiAoIWlzRmlyc3RDaGlsZEZvY3VzZWQpIHtcclxuICAgICAgICAgIHN1cHByZXNzRXZlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCAhPT0gLTEgfHwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZUdyaWRDZWxsKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuRWxlbWVudHNbY3VycmVudEluZGV4IC0gMV0uZm9jdXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdXBwcmVzc0V2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFdmVudFBhdGgoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnRbXSB7XHJcbiAgICBjb25zdCBwYXRoOiBIVE1MRWxlbWVudFtdID0gW107XHJcbiAgICBsZXQgY3VycmVudFRhcmdldDogYW55ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgd2hpbGUgKGN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgcGF0aC5wdXNoKGN1cnJlbnRUYXJnZXQpO1xyXG4gICAgICBjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|