mmhglobal-dynamicform 2.42.0 → 2.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +30 -6
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +17 -9
- package/esm2020/lib/zgauge/zgauge.component.mjs +24 -16
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +14 -12
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +3 -3
- package/esm2020/lib/zscheduler/zscheduler.component.mjs +8 -1
- package/esm2020/lib/zslider/zslider.component.mjs +140 -0
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +348 -149
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +22 -3
- package/esm2020/lib/zudf/zudf.component.mjs +2 -1
- package/esm2020/lib/zupload/zupload.component.mjs +402 -211
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +1072 -461
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +1045 -460
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +3 -0
- package/lib/mmhglobal-dynamicform.module.d.ts +42 -41
- package/lib/zgauge/zgauge.component.d.ts +14 -3
- package/lib/zinput-container/zinput-container.component.d.ts +1 -0
- package/lib/zslider/zslider.component.d.ts +36 -0
- package/lib/ztexteditor/ztexteditor.component.d.ts +59 -18
- package/lib/ztreelist/ztreelist.component.d.ts +1 -0
- package/lib/zupload/zupload.component.d.ts +85 -18
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -15,13 +15,22 @@ export class ZgaugeComponent extends FieldBase {
|
|
|
15
15
|
super(componentService);
|
|
16
16
|
this.componentService = componentService;
|
|
17
17
|
this.isLoading = true;
|
|
18
|
+
this.value = 0;
|
|
19
|
+
this.title = "";
|
|
20
|
+
this.color = [{ color: "#0175c7" }];
|
|
21
|
+
this.majorTicks = { visible: true, color: '#0000ff' };
|
|
22
|
+
this.minorTicks = { visible: true, color: '#0000ff' };
|
|
23
|
+
this.startAngle = 0;
|
|
24
|
+
this.endAngle = 180;
|
|
25
|
+
this.minValue = 0;
|
|
26
|
+
this.maxValue = 200;
|
|
18
27
|
this.options = {
|
|
19
|
-
value:
|
|
20
|
-
title:
|
|
28
|
+
value: this.value,
|
|
29
|
+
title: this.title,
|
|
21
30
|
chartInnerText1: '',
|
|
22
31
|
chartInnerText2: '',
|
|
23
32
|
scaleMax: 50,
|
|
24
|
-
colors:
|
|
33
|
+
colors: this.color,
|
|
25
34
|
transitions: false,
|
|
26
35
|
majorTicks: { visible: true, color: '#0000ff' },
|
|
27
36
|
minorTicks: { visible: true, color: '#0000ff' },
|
|
@@ -32,12 +41,12 @@ export class ZgaugeComponent extends FieldBase {
|
|
|
32
41
|
endAngle: 180,
|
|
33
42
|
rangePlaceholderColor: '#e6e5e5',
|
|
34
43
|
labelsColor: '#0000ff',
|
|
35
|
-
rangeFrom: 0,
|
|
36
|
-
rangeTo: 100,
|
|
37
44
|
rangeColor: '#ff6358',
|
|
38
45
|
rangeLineCap: 'round',
|
|
39
46
|
showLabels: true,
|
|
40
47
|
rangeSize: 10,
|
|
48
|
+
labelStyle: "text-align: center; font-size: 18px;",
|
|
49
|
+
arcgaugeStyle: "margin-top:50px;width:90% ;height:100%; min-width: 330px;",
|
|
41
50
|
};
|
|
42
51
|
}
|
|
43
52
|
ngOnInit() {
|
|
@@ -66,25 +75,24 @@ export class ZgaugeComponent extends FieldBase {
|
|
|
66
75
|
}
|
|
67
76
|
getFieldDeclarationForSetup(field, options) {
|
|
68
77
|
if (field.Value.startsWith('group.')) {
|
|
69
|
-
options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value)
|
|
78
|
+
options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) ?? options.value;
|
|
70
79
|
}
|
|
71
80
|
else {
|
|
72
|
-
options.value = this.group.zModel[field.Value]
|
|
81
|
+
options.value = this.group.zModel[field.Value] ?? options.value;
|
|
73
82
|
options.value = parseInt(options.value);
|
|
74
83
|
}
|
|
75
84
|
options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;
|
|
76
|
-
options.scaleMax = field.Max || options.scaleMax; // not using
|
|
77
85
|
options.minValue = ZComponentHelper.getGroupEvalValue.call(this, field.MinValue) || options.minValue || 0;
|
|
78
86
|
options.maxValue = ZComponentHelper.getGroupEvalValue.call(this, field.MaxValue) || options.maxValue || 100;
|
|
79
|
-
options.colors = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.colors
|
|
87
|
+
options.colors = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.colors;
|
|
80
88
|
options.transitions = field.Transitions || options.transitions;
|
|
81
|
-
options.majorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks
|
|
82
|
-
options.minorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks
|
|
89
|
+
options.majorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks;
|
|
90
|
+
options.minorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks;
|
|
83
91
|
options.showLabels = field.ShowLabels != undefined ? field.ShowLabels : options.showLabels;
|
|
84
92
|
options.style = field.Style || options.style;
|
|
85
93
|
options.reverse = field.Reverse || options.reverse;
|
|
86
|
-
options.startAngle =
|
|
87
|
-
options.endAngle =
|
|
94
|
+
options.startAngle = field.StartAngle || options.startAngle || 0;
|
|
95
|
+
options.endAngle = field.EndAngle || options.endAngle || 180;
|
|
88
96
|
options.rangePlaceholderColor = field.RangePlaceholderColor || options.rangePlaceholderColor;
|
|
89
97
|
options.rangeFrom = ZComponentHelper.getGroupEvalValue.call(this, field['RangeFrom']) || options.rangeFrom;
|
|
90
98
|
options.rangeTo = ZComponentHelper.getGroupEvalValue.call(this, field['RangeTo']) || options.rangeTo;
|
|
@@ -105,9 +113,9 @@ export class ZgaugeComponent extends FieldBase {
|
|
|
105
113
|
}
|
|
106
114
|
}
|
|
107
115
|
ZgaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZgaugeComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
-
ZgaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZgaugeComponent, selector: "app-zgauge", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"
|
|
116
|
+
ZgaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZgaugeComponent, selector: "app-zgauge", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [style]=\"componentProperties.style.style\">\r\n <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\" *ngIf=\"options.title\">\r\n <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n </div>\r\n <div [ngStyle]='alignment()'>\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" [style]=\"componentProperties.style.style1\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <span [style.color]=\"color\" [style]=\"componentProperties.style.style2\">{{ value }}</span>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>\r\n\r\n<!--<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"chart-top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"options.title\">\r\n {{options.title}}\r\n </div>\r\n <div [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\"\r\n [style]=\"getGaugeStyle()\" class=\"e1tag-style3\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <div *ngIf=\"options.chartInnerText1\" [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\">{{ options.chartInnerText1 }}</div>\r\n <div *ngIf=\"options.chartInnerText2\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">{{ options.chartInnerText2 }}</div>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>-->\r\n\r\n", styles: [""], components: [{ type: i2.ArcGaugeComponent, selector: "kendo-arcgauge", inputs: ["value", "color", "colors", "opacity", "scale"], exportAs: ["kendoArcGauge"] }, { type: i2.ArcScaleComponent, selector: "kendo-arcgauge-scale", inputs: ["labels", "rangeDistance", "rangeLineCap", "startAngle", "endAngle"] }, { type: i2.ArcLabelsComponent, selector: "kendo-arcgauge-scale-labels" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i2.ArcCenterTemplateDirective, selector: "[kendoArcGaugeCenterTemplate]" }] });
|
|
109
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZgaugeComponent, decorators: [{
|
|
110
118
|
type: Component,
|
|
111
|
-
args: [{ selector: 'app-zgauge', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"
|
|
119
|
+
args: [{ selector: 'app-zgauge', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [style]=\"componentProperties.style.style\">\r\n <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\" *ngIf=\"options.title\">\r\n <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n </div>\r\n <div [ngStyle]='alignment()'>\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" [style]=\"componentProperties.style.style1\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <span [style.color]=\"color\" [style]=\"componentProperties.style.style2\">{{ value }}</span>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>\r\n\r\n<!--<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"chart-top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"options.title\">\r\n {{options.title}}\r\n </div>\r\n <div [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\"\r\n [style]=\"getGaugeStyle()\" class=\"e1tag-style3\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <div *ngIf=\"options.chartInnerText1\" [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\">{{ options.chartInnerText1 }}</div>\r\n <div *ngIf=\"options.chartInnerText2\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">{{ options.chartInnerText2 }}</div>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>-->\r\n\r\n", styles: [""] }]
|
|
112
120
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdhdWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pnYXVnZS96Z2F1Z2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdhdWdlL3pnYXVnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFjLGdCQUFnQixFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVN2RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxTQUFTO0lBNEI1QyxZQUNTLGdCQUFtQztRQUUxQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUZqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBNUI1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLFlBQU8sR0FBRztZQUNSLEtBQUssRUFBRSxDQUFDO1lBQ1IsS0FBSyxFQUFFLEVBQUU7WUFDVCxlQUFlLEVBQUUsRUFBRTtZQUNuQixlQUFlLEVBQUUsRUFBRTtZQUNuQixRQUFRLEVBQUUsRUFBRTtZQUNaLE1BQU0sRUFBRSxFQUFFO1lBQ1YsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQy9DLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUMvQyxRQUFRLEVBQUMsQ0FBQztZQUNWLFFBQVEs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RCxPQUFPLENBQUMsY0FBYyxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDdkgsT0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVGLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxjQUFjLEdBQUc7WUFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQzlDLENBQUM7UUFFRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7OzRHQXZHVSxlQUFlO2dHQUFmLGVBQWUseUVDbkI1Qiwya0hBdURBOzJGRHBDYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgRmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16Z2F1Z2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96Z2F1Z2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pnYXVnZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpnYXVnZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTsgXHJcblxyXG4gIG9wdGlvbnMgPSB7XHJcbiAgICB2YWx1ZTogMCxcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIGNoYXJ0SW5uZXJUZXh0MTogJycsXHJcbiAgICBjaGFydElubmVyVGV4dDI6ICcnLFxyXG4gICAgc2NhbGVNYXg6IDUwLFxyXG4gICAgY29sb3JzOiBbXSxcclxuICAgIHRyYW5zaXRpb25zOiBmYWxzZSxcclxuICAgIG1ham9yVGlja3M6IHsgdmlzaWJsZTogdHJ1ZSwgY29sb3I6ICcjMDAwMGZmJyB9LFxyXG4gICAgbWlub3JUaWNrczogeyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH0sXHJcbiAgICBtaW5WYWx1ZTowLFxyXG4gICAgbWF4VmFsdWU6IDIwMCxcclxuICAgIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgc3RhcnRBbmdsZTogMCxcclxuICAgIGVuZEFuZ2xlOiAxODAsXHJcbiAgICByYW5nZVBsYWNlaG9sZGVyQ29sb3I6ICcjZTZlNWU1JyxcclxuICAgIGxhYmVsc0NvbG9yOiAnIzAwMDBmZicsXHJcbiAgICByYW5nZUZyb206IDAsXHJcbiAgICByYW5nZVRvOiAxMDAsXHJcbiAgICByYW5nZUNvbG9yOiAnI2ZmNjM1OCcsXHJcbiAgICByYW5nZUxpbmVDYXA6ICdyb3VuZCcsXHJcbiAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgcmFuZ2VTaXplOiAxMCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuT3B0aW9ucykge1xyXG4gICAgICBjb25zdCBvcHRpb25UeXBlID0gdHlwZW9mICh0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgIGlmIChvcHRpb25UeXBlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9uVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAob3B0aW9uVmFsdWUpID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvblZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdhdWdlU3R5bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMyA/IHRoaXMuY29tcG9uZW50U2VydmljZS5jb252ZXJ0U3R5bGVTdHJpbmdUb09iamVjdCh0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzKSA6IHsgJ3doaXRlLXNwYWNlJzogJ2luaXRpYWwnIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKGZpZWxkOiBaRmllbGQsIG9wdGlvbnM6IGFueSkge1xyXG4gICAgaWYgKGZpZWxkLlZhbHVlLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIG9wdGlvbnMudmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuVmFsdWUpIHx8IG9wdGlvbnMudmFsdWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgb3B0aW9ucy52YWx1ZSA9IHRoaXMuZ3JvdXAuek1vZGVsW2ZpZWxkLlZhbHVlXSB8fCBvcHRpb25zLnZhbHVlO1xyXG4gICAgICBvcHRpb25zLnZhbHVlID0gcGFyc2VJbnQob3B0aW9ucy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBvcHRpb25zLnRpdGxlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlRpdGxlKSB8fCBvcHRpb25zLnRpdGxlO1xyXG4gICAgb3B0aW9ucy5zY2FsZU1heCA9IGZpZWxkLk1heCB8fCBvcHRpb25zLnNjYWxlTWF4OyAvLyBub3QgdXNpbmdcclxuICAgIG9wdGlvbnMubWluVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWluVmFsdWUpIHx8IG9wdGlvbnMubWluVmFsdWUgfHwgMDtcclxuICAgIG9wdGlvbnMubWF4VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWF4VmFsdWUpIHx8IG9wdGlvbnMubWF4VmFsdWUgfHwgMTAwO1xyXG4gICAgb3B0aW9ucy5jb2xvcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuQ29sb3IpIHx8IG9wdGlvbnMuY29sb3JzIHx8IHsgY29sb3I6IFwiIzAxNzVjN1wiIH07XHJcbiAgICBvcHRpb25zLnRyYW5zaXRpb25zID0gZmllbGQuVHJhbnNpdGlvbnMgfHwgb3B0aW9ucy50cmFuc2l0aW9ucztcclxuICAgIG9wdGlvbnMubWFqb3JUaWNrcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5NYWpvclRpY2tzKSB8fCBvcHRpb25zLm1ham9yVGlja3MgfHwgeyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH07XHJcbiAgICBvcHRpb25zLm1pbm9yVGlja3MgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWlub3JUaWNrcykgfHwgb3B0aW9ucy5taW5vclRpY2tzIHx8IHsgdmlzaWJsZTogdHJ1ZSwgY29sb3I6ICcjMDAwMGZmJyB9O1xyXG4gICAgb3B0aW9ucy5zaG93TGFiZWxzID0gZmllbGQuU2hvd0xhYmVscyAhPSB1bmRlZmluZWQgPyBmaWVsZC5TaG93TGFiZWxzIDogb3B0aW9ucy5zaG93TGFiZWxzO1xyXG4gICAgb3B0aW9ucy5zdHlsZSA9IGZpZWxkLlN0eWxlIHx8IG9wdGlvbnMuc3R5bGU7XHJcbiAgICBvcHRpb25zLnJldmVyc2UgPSBmaWVsZC5SZXZlcnNlIHx8IG9wdGlvbnMucmV2ZXJzZTtcclxuICAgIG9wdGlvbnMuc3RhcnRBbmdsZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5TdGFydEFuZ2xlKSB8fCBvcHRpb25zLnN0YXJ0QW5nbGUgfHwgMDtcclxuICAgIG9wdGlvbnMuZW5kQW5nbGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuRW5kQW5nbGUpIHx8IG9wdGlvbnMuZW5kQW5nbGUgfHwgMTgwO1xyXG4gICAgb3B0aW9ucy5yYW5nZVBsYWNlaG9sZGVyQ29sb3IgPSBmaWVsZC5SYW5nZVBsYWNlaG9sZGVyQ29sb3IgfHwgb3B0aW9ucy5yYW5nZVBsYWNlaG9sZGVyQ29sb3I7XHJcbiAgICBvcHRpb25zLnJhbmdlRnJvbSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZFsnUmFuZ2VGcm9tJ10pIHx8IG9wdGlvbnMucmFuZ2VGcm9tO1xyXG4gICAgb3B0aW9ucy5yYW5nZVRvID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkWydSYW5nZVRvJ10pIHx8IG9wdGlvbnMucmFuZ2VUbztcclxuICAgIG9wdGlvbnMucmFuZ2VDb2xvciA9IGZpZWxkLlJhbmdlQ29sb3IgfHwgb3B0aW9ucy5yYW5nZUNvbG9yO1xyXG4gICAgb3B0aW9ucy5yYW5nZUxpbmVDYXAgPSBmaWVsZC5SYW5nZUxpbmVDYXAgfHwgb3B0aW9ucy5yYW5nZUxpbmVDYXA7XHJcbiAgICBvcHRpb25zLnJhbmdlU2l6ZSA9IGZpZWxkLlJhbmdlU2l6ZSB8fCBvcHRpb25zLnJhbmdlU2l6ZTtcclxuICAgIG9wdGlvbnMuR2F1Z2VBbGlnbm1lbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuR2F1Z2VBbGlnbm1lbnQpIHx8IG9wdGlvbnMuR2F1Z2VBbGlnbm1lbnQ7XHJcbiAgICBvcHRpb25zLnBhZGRpbmdWYWx1ZSA9IG9wdGlvbnMudmFsdWUudG9TdHJpbmcoKSA9PT0gJ05hTicgPyBvcHRpb25zLkdhdWdlQWxpZ25tZW50IDogJzAlJztcclxuICB9XHJcblxyXG4gIGFsaWdubWVudCgpIHtcclxuICAgIGNvbnN0IGFsaWdubWVudFN0eWxlID0ge1xyXG4gICAgICBcInBhZGRpbmctcmlnaHRcIjogdGhpcy5vcHRpb25zW1wicGFkZGluZ1ZhbHVlXCJdXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBhbGlnbm1lbnRTdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhKGdEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgPGRpdiBpZD1cIm1hcmtldFNoYXJlQ29udGFpbmVyXCIgY2xhc3M9XCJpb24tcm93XCIgY2xhc3M9XCJjb2wteHMtMTIgc3RhdHMtZ3JhcGhcIiAqbmdJZj1cIm9wdGlvbnMudGl0bGVcIj5cclxuICAgIDxoNiBzdHlsZT1cImNvbG9yOiBncmF5O1wiPnt7IG9wdGlvbnMudGl0bGUgfX08L2g2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nU3R5bGVdPSdhbGlnbm1lbnQoKSc+XHJcbiAgICA8a2VuZG8tYXJjZ2F1Z2UgW3ZhbHVlXT1cIm9wdGlvbnMudmFsdWVcIiBbdHJhbnNpdGlvbnNdPVwib3B0aW9ucy50cmFuc2l0aW9uc1wiIFtjb2xvcnNdPVwib3B0aW9ucy5jb2xvcnNcIiBzdHlsZT1cIm1hcmdpbi10b3A6NTBweDt3aWR0aDo5MCUgO2hlaWdodDoxMDAlOyBtaW4td2lkdGg6IDMzMHB4O1wiPlxyXG4gICAgICA8a2VuZG8tYXJjZ2F1Z2Utc2NhbGUgW21ham9yVGlja3NdPVwib3B0aW9ucy5tYWpvclRpY2tzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5vclRpY2tzXT1cIm9wdGlvbnMubWlub3JUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmV2ZXJzZV09XCJvcHRpb25zLnJldmVyc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0QW5nbGVdPVwib3B0aW9ucy5zdGFydEFuZ2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmRBbmdsZV09XCJvcHRpb25zLmVuZEFuZ2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwib3B0aW9ucy5taW5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm9wdGlvbnMubWF4VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlUGxhY2Vob2xkZXJDb2xvcl09XCJvcHRpb25zLnJhbmdlUGxhY2Vob2xkZXJDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VTaXplXT1cIm9wdGlvbnMucmFuZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZUxpbmVDYXBdPVwib3B0aW9ucy5yYW5nZUxpbmVDYXBcIj5cclxuICAgICAgICA8a2VuZG8tYXJjZ2F1Z2Utc2NhbGUtbGFiZWxzIGZvcm1hdD1cImxcIiBbY29sb3JdPVwib3B0aW9ucy5sYWJlbHNDb2xvclwiIFt2aXNpYmxlXT1cIm9wdGlvbnMuc2hvd0xhYmVsc1wiPlxyXG4gICAgICAgIDwva2VuZG8tYXJjZ2F1Z2Utc2NhbGUtbGFiZWxzPlxyXG4gICAgICA8L2tlbmRvLWFyY2dhdWdlLXNjYWxlPlxyXG4gICAgICA8bmctdGVtcGxhdGUga2VuZG9BcmNHYXVnZUNlbnRlclRlbXBsYXRlIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWNvbG9yPVwiY29sb3JcIj5cclxuICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwva2VuZG8tYXJjZ2F1Z2U+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLTxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiXHJcbiAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIiBjbGFzcz1cImUxdGFnLXN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNoYXJ0LXRvcC10aXRsZSBlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIiAqbmdJZj1cIm9wdGlvbnMudGl0bGVcIj5cclxuICAgIHt7b3B0aW9ucy50aXRsZX19XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLXN0eWxlMlwiPlxyXG4gICAgPGtlbmRvLWFyY2dhdWdlIFt2YWx1ZV09XCJvcHRpb25zLnZhbHVlXCIgW3RyYW5zaXRpb25zXT1cIm9wdGlvbnMudHJhbnNpdGlvbnNcIiBbY29sb3JzXT1cIm9wdGlvbnMuY29sb3JzXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiZ2V0R2F1Z2VTdHlsZSgpXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIj5cclxuICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlIFttYWpvclRpY2tzXT1cIm9wdGlvbnMubWFqb3JUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWlub3JUaWNrc109XCJvcHRpb25zLm1pbm9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JldmVyc2VdPVwib3B0aW9ucy5yZXZlcnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydEFuZ2xlXT1cIm9wdGlvbnMuc3RhcnRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kQW5nbGVdPVwib3B0aW9ucy5lbmRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm9wdGlvbnMubWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJvcHRpb25zLm1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVBsYWNlaG9sZGVyQ29sb3JdPVwib3B0aW9ucy5yYW5nZVBsYWNlaG9sZGVyQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlU2l6ZV09XCJvcHRpb25zLnJhbmdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VMaW5lQ2FwXT1cIm9wdGlvbnMucmFuZ2VMaW5lQ2FwXCI+XHJcbiAgICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscyBmb3JtYXQ9XCJsXCIgW2NvbG9yXT1cIm9wdGlvbnMubGFiZWxzQ29sb3JcIiBbdmlzaWJsZV09XCJvcHRpb25zLnNob3dMYWJlbHNcIj5cclxuICAgICAgICA8L2tlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscz5cclxuICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQXJjR2F1Z2VDZW50ZXJUZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1jb2xvcj1cImNvbG9yXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuY2hhcnRJbm5lclRleHQxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTRcIj57eyBvcHRpb25zLmNoYXJ0SW5uZXJUZXh0MSB9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmNoYXJ0SW5uZXJUZXh0MlwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiIGNsYXNzPVwiZTF0YWctc3R5bGU1XCI+e3sgb3B0aW9ucy5jaGFydElubmVyVGV4dDIgfX08L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwva2VuZG8tYXJjZ2F1Z2U+XHJcbiAgPC9kaXY+XHJcbjwvZGl2Pi0tPlxyXG5cclxuIl19
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdhdWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pnYXVnZS96Z2F1Z2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdhdWdlL3pnYXVnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFjLGdCQUFnQixFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVN2RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxTQUFTO0lBcUM1QyxZQUNTLGdCQUFtQztRQUUxQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUZqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBckM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ1QsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxVQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixhQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ2YsYUFBUSxHQUFHLENBQUMsQ0FB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QUM7UUFDbEUsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDekQsT0FBTyxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ3ZILE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUM5QyxDQUFDO1FBRUYsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs0R0EvR1UsZUFBZTtnR0FBZixlQUFlLHlFQ25CNUIsK21IQXVEQTsyRkRwQ2EsZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpGaWVsZCB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtemdhdWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vemdhdWdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96Z2F1Z2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBaZ2F1Z2VDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgcHJpdmF0ZSB2YWx1ZSA9IDA7XHJcbiAgcHJpdmF0ZSB0aXRsZSA9IFwiXCI7XHJcbiAgcHJpdmF0ZSBjb2xvciA9IFt7IGNvbG9yOiBcIiMwMTc1YzdcIiB9XTtcclxuICBwcml2YXRlIG1ham9yVGlja3MgPSB7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfTtcclxuICBwcml2YXRlIG1pbm9yVGlja3MgPSB7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfTtcclxuICBwcml2YXRlIHN0YXJ0QW5nbGUgPSAwO1xyXG4gIHByaXZhdGUgZW5kQW5nbGUgPSAxODA7XHJcbiAgcHJpdmF0ZSBtaW5WYWx1ZSA9IDA7XHJcbiAgcHJpdmF0ZSBtYXhWYWx1ZSA9IDIwMDtcclxuXHJcbiAgb3B0aW9ucyA9IHtcclxuICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxyXG4gICAgdGl0bGU6IHRoaXMudGl0bGUsXHJcbiAgICBjaGFydElubmVyVGV4dDE6ICcnLFxyXG4gICAgY2hhcnRJbm5lclRleHQyOiAnJyxcclxuICAgIHNjYWxlTWF4OiA1MCxcclxuICAgIGNvbG9yczogdGhpcy5jb2xvcixcclxuICAgIHRyYW5zaXRpb25zOiBmYWxzZSxcclxuICAgIG1ham9yVGlja3M6IHsgdmlzaWJsZTogdHJ1ZSwgY29sb3I6ICcjMDAwMGZmJyB9LFxyXG4gICAgbWlub3JUaWNrczogeyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH0sXHJcbiAgICBtaW5WYWx1ZTowLFxyXG4gICAgbWF4VmFsdWU6IDIwMCxcclxuICAgIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgc3RhcnRBbmdsZTogMCxcclxuICAgIGVuZEFuZ2xlOiAxODAsXHJcbiAgICByYW5nZVBsYWNlaG9sZGVyQ29sb3I6ICcjZTZlNWU1JyxcclxuICAgIGxhYmVsc0NvbG9yOiAnIzAwMDBmZicsXHJcbiAgICByYW5nZUNvbG9yOiAnI2ZmNjM1OCcsXHJcbiAgICByYW5nZUxpbmVDYXA6ICdyb3VuZCcsXHJcbiAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgcmFuZ2VTaXplOiAxMCxcclxuICAgIGxhYmVsU3R5bGU6IFwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHg7XCIsXHJcbiAgICBhcmNnYXVnZVN0eWxlOiBcIm1hcmdpbi10b3A6NTBweDt3aWR0aDo5MCUgO2hlaWdodDoxMDAlOyBtaW4td2lkdGg6IDMzMHB4O1wiLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5PcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvblR5cGUgPSB0eXBlb2YgKHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgaWYgKG9wdGlvblR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgfSBlbHNlIGlmIChvcHRpb25UeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgICBpZiAodHlwZW9mIChvcHRpb25WYWx1ZSkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9uVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0R2F1Z2VTdHlsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzID8gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmNvbnZlcnRTdHlsZVN0cmluZ1RvT2JqZWN0KHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTMpIDogeyAnd2hpdGUtc3BhY2UnOiAnaW5pdGlhbCcgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZERlY2xhcmF0aW9uRm9yU2V0dXAoZmllbGQ6IFpGaWVsZCwgb3B0aW9uczogYW55KSB7XHJcbiAgICBpZiAoZmllbGQuVmFsdWUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgb3B0aW9ucy52YWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5WYWx1ZSkgPz8gb3B0aW9ucy52YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBvcHRpb25zLnZhbHVlID0gdGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdID8/IG9wdGlvbnMudmFsdWU7XHJcbiAgICAgIG9wdGlvbnMudmFsdWUgPSBwYXJzZUludChvcHRpb25zLnZhbHVlKTtcclxuICAgIH1cclxuICAgIG9wdGlvbnMudGl0bGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuVGl0bGUpIHx8IG9wdGlvbnMudGl0bGU7XHJcbiAgICBvcHRpb25zLm1pblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1pblZhbHVlKSB8fCBvcHRpb25zLm1pblZhbHVlIHx8IDA7XHJcbiAgICBvcHRpb25zLm1heFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1heFZhbHVlKSB8fCBvcHRpb25zLm1heFZhbHVlIHx8IDEwMDtcclxuICAgIG9wdGlvbnMuY29sb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkNvbG9yKSB8fCBvcHRpb25zLmNvbG9ycztcclxuICAgIG9wdGlvbnMudHJhbnNpdGlvbnMgPSBmaWVsZC5UcmFuc2l0aW9ucyB8fCBvcHRpb25zLnRyYW5zaXRpb25zO1xyXG4gICAgb3B0aW9ucy5tYWpvclRpY2tzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1ham9yVGlja3MpIHx8IG9wdGlvbnMubWFqb3JUaWNrcztcclxuICAgIG9wdGlvbnMubWlub3JUaWNrcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5NaW5vclRpY2tzKSB8fCBvcHRpb25zLm1pbm9yVGlja3M7XHJcbiAgICBvcHRpb25zLnNob3dMYWJlbHMgPSBmaWVsZC5TaG93TGFiZWxzICE9IHVuZGVmaW5lZCA/IGZpZWxkLlNob3dMYWJlbHMgOiBvcHRpb25zLnNob3dMYWJlbHM7XHJcbiAgICBvcHRpb25zLnN0eWxlID0gZmllbGQuU3R5bGUgfHwgb3B0aW9ucy5zdHlsZTtcclxuICAgIG9wdGlvbnMucmV2ZXJzZSA9IGZpZWxkLlJldmVyc2UgfHwgb3B0aW9ucy5yZXZlcnNlO1xyXG4gICAgb3B0aW9ucy5zdGFydEFuZ2xlID0gZmllbGQuU3RhcnRBbmdsZSB8fCBvcHRpb25zLnN0YXJ0QW5nbGUgfHwgMDtcclxuICAgIG9wdGlvbnMuZW5kQW5nbGUgPSBmaWVsZC5FbmRBbmdsZSB8fCBvcHRpb25zLmVuZEFuZ2xlIHx8IDE4MDtcclxuICAgIG9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yID0gZmllbGQuUmFuZ2VQbGFjZWhvbGRlckNvbG9yIHx8IG9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yO1xyXG4gICAgb3B0aW9ucy5yYW5nZUZyb20gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGRbJ1JhbmdlRnJvbSddKSB8fCBvcHRpb25zLnJhbmdlRnJvbTtcclxuICAgIG9wdGlvbnMucmFuZ2VUbyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZFsnUmFuZ2VUbyddKSB8fCBvcHRpb25zLnJhbmdlVG87XHJcbiAgICBvcHRpb25zLnJhbmdlQ29sb3IgPSBmaWVsZC5SYW5nZUNvbG9yIHx8IG9wdGlvbnMucmFuZ2VDb2xvcjtcclxuICAgIG9wdGlvbnMucmFuZ2VMaW5lQ2FwID0gZmllbGQuUmFuZ2VMaW5lQ2FwIHx8IG9wdGlvbnMucmFuZ2VMaW5lQ2FwO1xyXG4gICAgb3B0aW9ucy5yYW5nZVNpemUgPSBmaWVsZC5SYW5nZVNpemUgfHwgb3B0aW9ucy5yYW5nZVNpemU7XHJcbiAgICBvcHRpb25zLkdhdWdlQWxpZ25tZW50ID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkdhdWdlQWxpZ25tZW50KSB8fCBvcHRpb25zLkdhdWdlQWxpZ25tZW50O1xyXG4gICAgb3B0aW9ucy5wYWRkaW5nVmFsdWUgPSBvcHRpb25zLnZhbHVlLnRvU3RyaW5nKCkgPT09ICdOYU4nID8gb3B0aW9ucy5HYXVnZUFsaWdubWVudCA6ICcwJSc7XHJcbiAgfVxyXG5cclxuICBhbGlnbm1lbnQoKSB7XHJcbiAgICBjb25zdCBhbGlnbm1lbnRTdHlsZSA9IHtcclxuICAgICAgXCJwYWRkaW5nLXJpZ2h0XCI6IHRoaXMub3B0aW9uc1tcInBhZGRpbmdWYWx1ZVwiXVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYWxpZ25tZW50U3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGF0YShnRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiBpZD1cIm1hcmtldFNoYXJlQ29udGFpbmVyXCIgY2xhc3M9XCJpb24tcm93XCIgY2xhc3M9XCJjb2wteHMtMTIgc3RhdHMtZ3JhcGhcIiAqbmdJZj1cIm9wdGlvbnMudGl0bGVcIj5cclxuICAgIDxoNiBzdHlsZT1cImNvbG9yOiBncmF5O1wiPnt7IG9wdGlvbnMudGl0bGUgfX08L2g2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nU3R5bGVdPSdhbGlnbm1lbnQoKSc+XHJcbiAgICA8a2VuZG8tYXJjZ2F1Z2UgW3ZhbHVlXT1cIm9wdGlvbnMudmFsdWVcIiBbdHJhbnNpdGlvbnNdPVwib3B0aW9ucy50cmFuc2l0aW9uc1wiIFtjb2xvcnNdPVwib3B0aW9ucy5jb2xvcnNcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlIFttYWpvclRpY2tzXT1cIm9wdGlvbnMubWFqb3JUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWlub3JUaWNrc109XCJvcHRpb25zLm1pbm9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JldmVyc2VdPVwib3B0aW9ucy5yZXZlcnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydEFuZ2xlXT1cIm9wdGlvbnMuc3RhcnRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kQW5nbGVdPVwib3B0aW9ucy5lbmRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm9wdGlvbnMubWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJvcHRpb25zLm1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVBsYWNlaG9sZGVyQ29sb3JdPVwib3B0aW9ucy5yYW5nZVBsYWNlaG9sZGVyQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlU2l6ZV09XCJvcHRpb25zLnJhbmdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VMaW5lQ2FwXT1cIm9wdGlvbnMucmFuZ2VMaW5lQ2FwXCI+XHJcbiAgICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscyBmb3JtYXQ9XCJsXCIgW2NvbG9yXT1cIm9wdGlvbnMubGFiZWxzQ29sb3JcIiBbdmlzaWJsZV09XCJvcHRpb25zLnNob3dMYWJlbHNcIj5cclxuICAgICAgICA8L2tlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscz5cclxuICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQXJjR2F1Z2VDZW50ZXJUZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1jb2xvcj1cImNvbG9yXCI+XHJcbiAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImNvbG9yXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+e3sgdmFsdWUgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS08ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjaGFydC10b3AtdGl0bGUgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCI+XHJcbiAgICB7e29wdGlvbnMudGl0bGV9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIj5cclxuICAgIDxrZW5kby1hcmNnYXVnZSBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiIFt0cmFuc2l0aW9uc109XCJvcHRpb25zLnRyYW5zaXRpb25zXCIgW2NvbG9yc109XCJvcHRpb25zLmNvbG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImdldEdhdWdlU3R5bGUoKVwiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+XHJcbiAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZSBbbWFqb3JUaWNrc109XCJvcHRpb25zLm1ham9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbm9yVGlja3NdPVwib3B0aW9ucy5taW5vclRpY2tzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXZlcnNlXT1cIm9wdGlvbnMucmV2ZXJzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRBbmdsZV09XCJvcHRpb25zLnN0YXJ0QW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZEFuZ2xlXT1cIm9wdGlvbnMuZW5kQW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJvcHRpb25zLm1pblZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwib3B0aW9ucy5tYXhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VQbGFjZWhvbGRlckNvbG9yXT1cIm9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVNpemVdPVwib3B0aW9ucy5yYW5nZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlTGluZUNhcF09XCJvcHRpb25zLnJhbmdlTGluZUNhcFwiPlxyXG4gICAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHMgZm9ybWF0PVwibFwiIFtjb2xvcl09XCJvcHRpb25zLmxhYmVsc0NvbG9yXCIgW3Zpc2libGVdPVwib3B0aW9ucy5zaG93TGFiZWxzXCI+XHJcbiAgICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHM+XHJcbiAgICAgIDwva2VuZG8tYXJjZ2F1Z2Utc2NhbGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0FyY0dhdWdlQ2VudGVyVGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtY29sb3I9XCJjb2xvclwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmNoYXJ0SW5uZXJUZXh0MVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctc3R5bGU0XCI+e3sgb3B0aW9ucy5jaGFydElubmVyVGV4dDEgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5jaGFydElubmVyVGV4dDJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiPnt7IG9wdGlvbnMuY2hhcnRJbm5lclRleHQyIH19PC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4tLT5cclxuXHJcbiJdfQ==
|