mmhglobal-dynamicform 2.40.0 → 2.41.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 +14 -0
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +6 -1
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +2 -2
- package/esm2020/lib/zbreadcrumb/zbreadcrumb.component.mjs +88 -0
- package/esm2020/lib/zchart/zchart.component.mjs +142 -103
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +11 -3
- package/esm2020/lib/zgauge/zgauge.component.mjs +12 -21
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +81 -5
- package/esm2020/lib/zgrid/zgrid.component.mjs +88 -7
- package/esm2020/lib/zgrid/zgrid.service.mjs +8 -1
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +163 -15
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +3 -3
- package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +25 -13
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +2 -2
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +619 -162
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +601 -160
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/mmhglobal-dynamicform.module.d.ts +104 -103
- package/lib/zbreadcrumb/zbreadcrumb.component.d.ts +25 -0
- package/lib/zchart/zchart.component.d.ts +30 -12
- package/lib/zdatetime/zdatetime.component.d.ts +2 -0
- package/lib/zgauge/zgauge.component.d.ts +0 -9
- package/lib/zgrid/zgrid.binding.directive.d.ts +10 -2
- package/lib/zgrid/zgrid.component.d.ts +13 -5
- package/lib/zgrid/zgrid.service.d.ts +3 -0
- package/lib/ztexteditor/ztexteditor.component.d.ts +19 -4
- package/lib/ztrendcard/ztrendcard.component.d.ts +9 -2
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/********** Angular **********/
|
|
2
1
|
import { Component } from "@angular/core";
|
|
3
|
-
|
|
4
|
-
/********** Plugin **********/
|
|
5
|
-
// import { groupBy, GroupResult } from '@progress/kendo-data-query';
|
|
6
|
-
/********** Component & Service **********/
|
|
2
|
+
import { Group } from '@progress/kendo-drawing';
|
|
7
3
|
import { DataListingFieldBase } from "../components/datalistingfieldbase.component";
|
|
8
4
|
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
9
5
|
import * as i0 from "@angular/core";
|
|
@@ -12,89 +8,44 @@ import * as i2 from "@progress/kendo-angular-charts";
|
|
|
12
8
|
import * as i3 from "@angular/common";
|
|
13
9
|
import * as i4 from "../pipe/htmlSanitize.pipe";
|
|
14
10
|
export class ZchartComponent extends DataListingFieldBase {
|
|
15
|
-
// fieldElement01 = [{
|
|
16
|
-
// Name: 'chart01',
|
|
17
|
-
// Type: 'zchart',
|
|
18
|
-
// Options: 'group.chart01Options',
|
|
19
|
-
// DivClass: "col-md-12 col-md-6",
|
|
20
|
-
// Visible: true
|
|
21
|
-
// }];
|
|
22
|
-
// fieldElement02 = [{
|
|
23
|
-
// Name: 'chart01',
|
|
24
|
-
// Type: 'zchart',
|
|
25
|
-
// Title: 'Chart01 Title',
|
|
26
|
-
// RenderAs: 'svg',
|
|
27
|
-
// Pannable: true,
|
|
28
|
-
// Zoomable: true,
|
|
29
|
-
// Categories: 'group.chart01Categories',
|
|
30
|
-
// Max: 10,
|
|
31
|
-
// MaxDivisions: null,
|
|
32
|
-
// Rotation: 'auto',
|
|
33
|
-
// Series: 'group.chart01Series',
|
|
34
|
-
// DataType: 'bar',
|
|
35
|
-
// DataStyle: 'smooth',
|
|
36
|
-
// LegendPosition: 'bottom',
|
|
37
|
-
// LegendOrientation: 'horizonal',
|
|
38
|
-
// TooltipFormat: '{0}',
|
|
39
|
-
// AggregateType: 'sum',
|
|
40
|
-
// DataField: null,
|
|
41
|
-
// CategoryField: null,
|
|
42
|
-
// DivClass: "col-md-12 col-md-6",
|
|
43
|
-
// Visible: true
|
|
44
|
-
// }];
|
|
45
11
|
constructor(componentService) {
|
|
46
12
|
super(componentService);
|
|
47
13
|
this.componentService = componentService;
|
|
48
14
|
this.series = [];
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// style: 'smooth',
|
|
52
|
-
// name: 'India',
|
|
53
|
-
// data: [3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855]
|
|
54
|
-
// }, {
|
|
55
|
-
// type: '',
|
|
56
|
-
// style: 'smooth',
|
|
57
|
-
// name: 'Russian Federation',
|
|
58
|
-
// data: [4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3]
|
|
59
|
-
// }, {
|
|
60
|
-
// type: 'bar',
|
|
61
|
-
// style: 'smooth',
|
|
62
|
-
// name: 'Germany',
|
|
63
|
-
// data: [0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995]
|
|
64
|
-
// }, {
|
|
65
|
-
// type: 'area',
|
|
66
|
-
// style: 'smooth',
|
|
67
|
-
// name: 'World',
|
|
68
|
-
// data: [1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727]
|
|
69
|
-
// }];
|
|
15
|
+
this.valueAxis = [];
|
|
16
|
+
this.crossingValues = [];
|
|
70
17
|
this.categories = [];
|
|
71
|
-
|
|
18
|
+
this.panes = [{}, { name: 'navigator', height: 100 }];
|
|
19
|
+
this.categoryAxis = [];
|
|
20
|
+
this.navigatorAxis = [];
|
|
72
21
|
// Default values
|
|
73
22
|
this.options = {
|
|
74
23
|
title: '',
|
|
75
24
|
renderAs: 'canvas',
|
|
76
25
|
pannable: false,
|
|
77
26
|
zoomable: false,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
labels: { rotation: 'auto' }
|
|
83
|
-
},
|
|
27
|
+
categories: this.categories,
|
|
28
|
+
max: 10,
|
|
29
|
+
maxDivisions: null,
|
|
30
|
+
axisLabels: { rotation: 'auto' },
|
|
84
31
|
labels: {
|
|
85
32
|
visible: false,
|
|
86
33
|
background: "transparent"
|
|
87
34
|
},
|
|
88
35
|
series: this.series,
|
|
89
|
-
|
|
36
|
+
valueAxis: this.valueAxis,
|
|
37
|
+
crossingValues: this.crossingValues,
|
|
38
|
+
dataType: 'area',
|
|
90
39
|
dataStyle: 'smooth',
|
|
91
40
|
legendPosition: 'bottom',
|
|
41
|
+
legendSpacing: 6,
|
|
92
42
|
legendOrientation: 'horizontal',
|
|
93
43
|
tooltipFormat: '{0}%',
|
|
94
44
|
aggregateType: 'sum',
|
|
95
45
|
dataField: null,
|
|
96
46
|
categoryField: null,
|
|
97
47
|
color: '#05A2FE',
|
|
48
|
+
field: 'bar',
|
|
98
49
|
onRender: '',
|
|
99
50
|
onAxisLabelClick: '',
|
|
100
51
|
onLegendItemClick: '',
|
|
@@ -104,7 +55,24 @@ export class ZchartComponent extends DataListingFieldBase {
|
|
|
104
55
|
onSeriesClick: '',
|
|
105
56
|
onSeriesHover: '',
|
|
106
57
|
customTooltipFunc: '',
|
|
107
|
-
customTooltipOptions: { background: '#05A2FE' }
|
|
58
|
+
customTooltipOptions: { background: '#05A2FE' },
|
|
59
|
+
panes: this.panes,
|
|
60
|
+
categoryAxis: this.categoryAxis,
|
|
61
|
+
transitions: 'transitions',
|
|
62
|
+
navigator: false,
|
|
63
|
+
navigatorAxis: this.navigatorAxis,
|
|
64
|
+
};
|
|
65
|
+
// Notice that to capture 'this', the approach utilizes
|
|
66
|
+
// a lambda function instead of a method
|
|
67
|
+
this.labelVisual = (e) => {
|
|
68
|
+
let group = new Group();
|
|
69
|
+
const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.LabelVisualConfiguration);
|
|
70
|
+
if (typeof f === 'function') {
|
|
71
|
+
const callFunc = f.bind(this.group.ctrlScope);
|
|
72
|
+
group = callFunc(e);
|
|
73
|
+
}
|
|
74
|
+
//group.append(defaultLabel, path);
|
|
75
|
+
return group;
|
|
108
76
|
};
|
|
109
77
|
this.setData = (gData) => {
|
|
110
78
|
this.getFieldDeclarationForSetup(this.data);
|
|
@@ -112,25 +80,45 @@ export class ZchartComponent extends DataListingFieldBase {
|
|
|
112
80
|
}
|
|
113
81
|
ngOnInit() {
|
|
114
82
|
super.initComponent().subscribe(() => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
83
|
+
const opts = this.data?.Options;
|
|
84
|
+
if (!opts) {
|
|
85
|
+
console.info('ngOnInit: no Options found on data.');
|
|
86
|
+
this.isLoading = false;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// Merge object options or evaluate string expression
|
|
90
|
+
if (typeof opts === 'object') {
|
|
91
|
+
Object.assign(this.options, opts);
|
|
92
|
+
}
|
|
93
|
+
else if (typeof opts === 'string') {
|
|
94
|
+
const evaluated = ZComponentHelper.getGroupEvalValue.call(this, opts);
|
|
95
|
+
if (evaluated && typeof evaluated === 'object') {
|
|
96
|
+
Object.assign(this.options, evaluated);
|
|
119
97
|
}
|
|
120
|
-
else
|
|
121
|
-
|
|
122
|
-
if (typeof (optionValue) === 'object') {
|
|
123
|
-
Object.assign(this.options, optionValue);
|
|
124
|
-
}
|
|
98
|
+
else {
|
|
99
|
+
console.warn('ngOnInit: evaluated Options string did not yield an object:', evaluated);
|
|
125
100
|
}
|
|
126
101
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
ZComponentHelper.getGroupEvalValue.call(this, this.data.Options.categoryAxis.categories);
|
|
102
|
+
else {
|
|
103
|
+
console.warn('ngOnInit: unsupported Options type:', typeof opts);
|
|
130
104
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
105
|
+
// Handle specific fields passed in as string expressions
|
|
106
|
+
const stringFields = [
|
|
107
|
+
'categories', 'series', 'valueAxis',
|
|
108
|
+
'crossingValues', 'categoryAxis',
|
|
109
|
+
'navigatorAxis', 'Navigator', 'max'
|
|
110
|
+
];
|
|
111
|
+
for (const field of stringFields) {
|
|
112
|
+
const raw = opts[field];
|
|
113
|
+
if (typeof raw === 'string') {
|
|
114
|
+
const value = ZComponentHelper.getGroupEvalValue.call(this, raw);
|
|
115
|
+
if (value !== undefined) {
|
|
116
|
+
this.options[field] = value;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.warn(`ngOnInit: failed to evaluate "${String(field)}" expression:`, raw);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
134
122
|
}
|
|
135
123
|
this.getFieldDeclarationForSetup(this.data);
|
|
136
124
|
this.isLoading = false;
|
|
@@ -140,24 +128,65 @@ export class ZchartComponent extends DataListingFieldBase {
|
|
|
140
128
|
this.componentService.decrementComponentCounterForField(this.data);
|
|
141
129
|
}
|
|
142
130
|
getFieldDeclarationForSetup(field) {
|
|
143
|
-
|
|
144
|
-
this.options.
|
|
145
|
-
|
|
146
|
-
this.options.
|
|
147
|
-
|
|
148
|
-
this.options.
|
|
149
|
-
|
|
150
|
-
this.options.
|
|
151
|
-
|
|
152
|
-
this.options.
|
|
153
|
-
|
|
154
|
-
this.options.
|
|
155
|
-
|
|
156
|
-
this.options.
|
|
157
|
-
|
|
158
|
-
this.options.
|
|
159
|
-
|
|
160
|
-
this.options.
|
|
131
|
+
// To configure the Chart title
|
|
132
|
+
this.options.title = field.Title ?? this.options.title;
|
|
133
|
+
// Canvas (bitmap) and SVG (vector graphics).
|
|
134
|
+
this.options.renderAs = field.RenderAs ?? this.options.renderAs;
|
|
135
|
+
// true or false - To perform panning, drag the plot area of the Chart.
|
|
136
|
+
this.options.pannable = field.Pannable ?? this.options.pannable;
|
|
137
|
+
// true or false - To perform zoomingMouse-wheel (desktop) or pinch-zoom (mobile), or Hold the Shift key and select an area.
|
|
138
|
+
this.options.zoomable = field.Zoomable ?? this.options.zoomable;
|
|
139
|
+
// Supports the binding of category x-axis to arrays
|
|
140
|
+
this.options.categories = ZComponentHelper.getGroupEvalValue.call(this, field.Categories) ?? [];
|
|
141
|
+
// The last date displayed on a date category axis or the index of the last category displayed on a category axis.
|
|
142
|
+
this.options.max = ZComponentHelper.getGroupEvalValue.call(this, field.Max) ?? this.options.max;
|
|
143
|
+
// The maximum number of ticks and labels to display. Applicable for date category axis.
|
|
144
|
+
this.options.maxDivisions = field.MaxDivisions ?? this.options.maxDivisions;
|
|
145
|
+
// The rotation angle of the labels
|
|
146
|
+
this.options.axisLabels.rotation = field.Rotation ?? this.options.axisLabels.rotation;
|
|
147
|
+
//Supports the binding of series y-axis to arrays and chart type. may refer https://www.telerik.com/kendo-angular-ui/components/charts/api/series
|
|
148
|
+
this.options.series = ZComponentHelper.getGroupEvalValue.call(this, field.Series) ?? [];
|
|
149
|
+
// The configuration options of the value axis. may refer https://www.telerik.com/kendo-angular-ui/components/charts/api/valueaxis
|
|
150
|
+
this.options.valueAxis = ZComponentHelper.getGroupEvalValue.call(this, field.ValueAxis) ?? [];
|
|
151
|
+
// To configure the position of the axes as relative to one another, use the axisCrossingValue option of the axes.
|
|
152
|
+
// May refer https://www.telerik.com/kendo-angular-ui/components/charts/elements/axes
|
|
153
|
+
this.options.crossingValues = ZComponentHelper.getGroupEvalValue.call(this, field.CrossingValues) ?? [];
|
|
154
|
+
//Angular Chart Types. may refer https://www.telerik.com/kendo-angular-ui/charts
|
|
155
|
+
this.options.dataType = field.DataType ?? this.options.dataType;
|
|
156
|
+
// The line style of the series
|
|
157
|
+
// Key Value: "normal" | "step" | "smooth"
|
|
158
|
+
this.options.dataStyle = field.DataStyle ?? this.options.dataStyle;
|
|
159
|
+
// The positions of the Chart legend. Setting the legend position to custom allows you to position the legend using the legend.offsetX and legend.offsetY options.
|
|
160
|
+
// Key Value: "top" | "bottom" | "left" | "right" | "custom"
|
|
161
|
+
this.options.legendPosition = field.LegendPosition ?? this.options.legendPosition;
|
|
162
|
+
// The distance (in pixels) between the legend items. Defaults to 6.
|
|
163
|
+
this.options.legendSpacing = field.LegendSpacing ?? this.options.legendSpacing;
|
|
164
|
+
// Specifies the orientation of layouts in different scenarios
|
|
165
|
+
// Key Value: "horizontal" | "vertical"
|
|
166
|
+
this.options.legendOrientation = field.LegendOrientation ?? this.options.legendOrientation;
|
|
167
|
+
// The Angular Chart supports three types of tooltips—on the series level, a shared tooltip for all series per category, and on the crosshair.
|
|
168
|
+
this.options.tooltipFormat = field.TooltipFormat ?? this.options.tooltipFormat;
|
|
169
|
+
// The aggregate function for the date series.
|
|
170
|
+
// Key Value: "avg","count","max","min","sum","sumOrNull","first"
|
|
171
|
+
// May refer: https://www.telerik.com/kendo-angular-ui/components/charts/api/series
|
|
172
|
+
this.options.aggregateType = field.AggregateType ?? this.options.aggregateType;
|
|
173
|
+
// The data item field which contains the series value.
|
|
174
|
+
this.options.dataField = field.DataField ?? this.options.dataField;
|
|
175
|
+
// The data item field which contains the category name or date. If the category is a date, the points are rendered in chronological order.
|
|
176
|
+
// Default value: "category"
|
|
177
|
+
this.options.categoryField = field.CategoryField ?? this.options.categoryField;
|
|
178
|
+
// To declare a function to generate tooltips
|
|
179
|
+
this.options.customTooltipFunc = field.CustomTooltipFunc ?? this.options.customTooltipFunc;
|
|
180
|
+
// To enable navigator
|
|
181
|
+
this.options.navigator = ZComponentHelper.getGroupEvalValue.call(this, field.Navigator) ?? this.options.navigator;
|
|
182
|
+
// Supports the binding of series x-axis to arrays
|
|
183
|
+
this.options.categoryAxis = ZComponentHelper.getGroupEvalValue.call(this, field.CategoryAxis) ?? [];
|
|
184
|
+
// Supports the binding of series x-axis for navigator
|
|
185
|
+
this.options.navigatorAxis = ZComponentHelper.getGroupEvalValue.call(this, field.NavigatorAxis) ?? [];
|
|
186
|
+
// The Chart panes enable you to create vertical sub-divisions in a single categorical Chart.
|
|
187
|
+
// You have to set an individual value axis to each pane.Multiple panes can share a category axis.
|
|
188
|
+
this.options.panes = field.Panes ?? this.options.panes;
|
|
189
|
+
//this.options.labelVisual = ZComponentHelper.getGroupEvalValue.call(this, field.LabelVisual) || this.options.labelVisual;
|
|
161
190
|
}
|
|
162
191
|
//#region Component Events
|
|
163
192
|
onRender(e) {
|
|
@@ -184,6 +213,15 @@ export class ZchartComponent extends DataListingFieldBase {
|
|
|
184
213
|
// console.log('plotAreaHover', e);
|
|
185
214
|
this.callComponentEvent(e, this.options.onPlotAreaHover);
|
|
186
215
|
}
|
|
216
|
+
onSelectEnd(e) {
|
|
217
|
+
console.log('SelectEnd', e);
|
|
218
|
+
const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);
|
|
219
|
+
if (typeof f === 'function') {
|
|
220
|
+
const callFunc = f.bind(this.group.ctrlScope);
|
|
221
|
+
return callFunc(e);
|
|
222
|
+
}
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
187
225
|
onSeriesClick(e) {
|
|
188
226
|
console.log('seriesClick', e);
|
|
189
227
|
const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);
|
|
@@ -209,14 +247,15 @@ export class ZchartComponent extends DataListingFieldBase {
|
|
|
209
247
|
}
|
|
210
248
|
}
|
|
211
249
|
//#endregion
|
|
212
|
-
getToolTip(value, category) {
|
|
213
|
-
|
|
250
|
+
getToolTip(value, category, series, dataItem) {
|
|
251
|
+
const data = this.options;
|
|
252
|
+
return this.callComponentEvent({ value, category, series, dataItem, data }, this.options.customTooltipFunc);
|
|
214
253
|
}
|
|
215
254
|
}
|
|
216
255
|
ZchartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZchartComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
217
|
-
ZchartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZchartComponent, selector: "app-zchart", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n [categoryAxis]=\"options.categoryAxis\"\r\n (render)=\"onRender($event)\"\r\n (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n (legendItemClick)=\"onLegendItemClick($event)\"\r\n (legendItemHover)=\"onLegendItemHover($event)\"\r\n (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n (seriesClick)=\"onSeriesClick($event)\"\r\n (seriesHover)=\"onSeriesHover($event)\"\r\n class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n <kendo-chart-legend [position]=\"options.legendPosition\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n [aggregate]=\"options.aggregateType\"\r\n [type]=\"item.type || options.dataType\" [style]=\"item.style || options.dataStyle\"\r\n [color]=\"item.color || options.color\"\r\n [labels]=\"item.labels || options.labels\"\r\n [field]=\"options.dataField\" [categoryField]=\"options.categoryField\"\r\n [data]=\"item.data\" [name]=\"item.name\">\r\n <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n <ng-template let-value=\"value\" let-category=\"category\">\r\n <div [innerHTML]=\"getToolTip(value, category) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n </ng-template>\r\n </kendo-chart-series-item-tooltip>\r\n </kendo-chart-series-item>\r\n </kendo-chart-series>\r\n </kendo-chart>\r\n</div>\r\n", styles: [""], components: [{ type: i2.ChartComponent, selector: "kendo-chart", inputs: ["pannable", "renderAs", "seriesColors", "subtitle", "title", "transitions", "zoomable", "axisDefaults", "categoryAxis", "chartArea", "legend", "panes", "paneDefaults", "plotArea", "series", "seriesDefaults", "tooltip", "valueAxis", "xAxis", "yAxis", "resizeRateLimit", "popupSettings"], outputs: ["axisLabelClick", "drag", "dragEnd", "dragStart", "legendItemHover", "legendItemLeave", "noteClick", "noteHover", "noteLeave", "paneRender", "plotAreaClick", "plotAreaHover", "plotAreaLeave", "render", "select", "selectEnd", "selectStart", "seriesClick", "seriesHover", "seriesOver", "seriesLeave", "zoom", "zoomEnd", "zoomStart", "legendItemClick"], exportAs: ["kendoChart"] }, { type: i2.TitleComponent, selector: "kendo-chart-title", inputs: ["align", "background", "border", "color", "font", "margin", "padding", "position", "text", "visible"] }, { type: i2.LegendComponent, selector: "kendo-chart-legend", inputs: ["align", "background", "border", "height", "labels", "margin", "offsetX", "offsetY", "orientation", "padding", "position", "reverse", "visible", "width", "markers", "spacing", "inactiveItems", "item", "title"] }, { type: i2.TooltipComponent, selector: "kendo-chart-tooltip", inputs: ["background", "border", "color", "font", "format", "opacity", "padding", "shared", "visible"] }, { type: i2.SeriesComponent, selector: "kendo-chart-series" }, { type: i2.SeriesItemComponent, selector: "kendo-chart-series-item", inputs: ["aggregate", "autoFit", "axis", "border", "categoryAxis", "categoryField", "closeField", "color", "colorField", "connectors", "currentField", "dashType", "data", "downColor", "downColorField", "dynamicHeight", "dynamicSlope", "errorHighField", "errorLowField", "explodeField", "field", "fromField", "gap", "highField", "holeSize", "line", "lowField", "lowerField", "margin", "maxSize", "mean", "meanField", "median", "medianField", "minSize", "missingValues", "name", "neckRatio", "negativeColor", "negativeValues", "noteTextField", "opacity", "openField", "outliersField", "overlay", "padding", "q1Field", "q3Field", "segmentSpacing", "size", "sizeField", "spacing", "stack", "startAngle", "style", "summaryField", "target", "toField", "type", "upperField", "visible", "visibleInLegend", "visibleInLegendField", "visual", "width", "whiskers", "xAxis", "xErrorHighField", "xErrorLowField", "xField", "yAxis", "yErrorHighField", "yErrorLowField", "yField", "zIndex", "errorBars", "extremes", "highlight", "labels", "markers", "notes", "outliers", "tooltip"] }, { type: i2.SeriesTooltipComponent, selector: "kendo-chart-series-item-tooltip", inputs: ["background", "border", "color", "font", "format", "padding", "visible"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.SeriesTooltipTemplateDirective, selector: "[kendoChartSeriesTooltipTemplate]" }], pipes: { "htmlSanitize": i4.HtmlSanitizePipe } });
|
|
256
|
+
ZchartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZchartComponent, selector: "app-zchart", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!options.navigator && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n (render)=\"onRender($event)\"\r\n (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n (legendItemClick)=\"onLegendItemClick($event)\"\r\n (legendItemHover)=\"onLegendItemHover($event)\"\r\n (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n (seriesClick)=\"onSeriesClick($event)\"\r\n (seriesHover)=\"onSeriesHover($event)\"\r\n class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n <kendo-chart-legend [position]=\"options.legendPosition\" [spacing]=\"options.legendSpacing\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n <kendo-chart-value-axis>\r\n <kendo-chart-value-axis-item *ngFor=\"let item of options.valueAxis\"\r\n [name]=\"item.name\"\r\n [title]=\"item.title\"\r\n [min]=\"item.min\"\r\n [max]=\"item.max\"\r\n [majorUnit]=\"item.majorUnit\"\r\n [color]=\"item.color\">\r\n </kendo-chart-value-axis-item>\r\n </kendo-chart-value-axis>\r\n <kendo-chart-category-axis>\r\n <kendo-chart-category-axis-item [categories]=\"options.categories\"\r\n [axisCrossingValue]=\"options.crossingValues\"\r\n [maxDivisions]=\"options.maxDivisions\"\r\n [max]=\"options.max\"\r\n [labels]=\"options.axisLabels\">\r\n </kendo-chart-category-axis-item>\r\n </kendo-chart-category-axis>\r\n <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n [aggregate]=\"options.aggregateType\"\r\n [type]=\"item.type ?? options.dataType\" [style]=\"item.style ?? options.dataStyle\"\r\n [color]=\"item.color ?? options.color\"\r\n [labels]=\"item.labels ?? options.labels\"\r\n [field]=\"item.dataField ?? options.dataField\" [categoryField]=\"item.categoryField ?? options.categoryField\"\r\n [data]=\"item.data\"\r\n [stack]=\"item.stack\"\r\n [name]=\"item.name\"\r\n [axis]=\"item.axis\"\r\n [markers]=\"item.markers\"\r\n [legendItem]=\"item.legendItem\">\r\n <kendo-chart-series-item-labels [visible]=\"item.labels.visible\" [visual]=\"labelVisual\">\r\n </kendo-chart-series-item-labels>\r\n <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n <ng-template let-value=\"value\" let-category=\"category\" let-series=\"series\" let-dataItem=\"dataItem\">\r\n <div [innerHTML]=\"getToolTip(value, category, series, dataItem) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n </ng-template>\r\n </kendo-chart-series-item-tooltip>\r\n </kendo-chart-series-item>\r\n </kendo-chart-series>\r\n <!--<kendo-chart-x-axis>\r\n <kendo-chart-x-axis-item [title]=\"{ text: 'Wind Speed [km/h]' }\">\r\n </kendo-chart-x-axis-item>\r\n </kendo-chart-x-axis>\r\n <kendo-chart-y-axis>\r\n <kendo-chart-y-axis-item [title]=\"{ text: 'Rainfall [mm]' }\">\r\n </kendo-chart-y-axis-item>\r\n </kendo-chart-y-axis>-->\r\n </kendo-chart>\r\n</div>\r\n<div *ngIf=\"options.navigator && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n (render)=\"onRender($event)\"\r\n [categoryAxis]=\"options.categoryAxis\"\r\n [panes]=\"options.panes\"\r\n (selectEnd)=\"onSelectEnd($event)\" [transitions]=\"options.transitions\"\r\n (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n (legendItemClick)=\"onLegendItemClick($event)\"\r\n (legendItemHover)=\"onLegendItemHover($event)\"\r\n (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n (seriesClick)=\"onSeriesClick($event)\"\r\n (seriesHover)=\"onSeriesHover($event)\"\r\n class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n <kendo-chart-legend [position]=\"options.legendPosition\" [spacing]=\"options.legendSpacing\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n <kendo-chart-value-axis>\r\n <kendo-chart-value-axis-item *ngFor=\"let item of options.valueAxis\"\r\n [name]=\"item.name\"\r\n [title]=\"item.title\"\r\n [min]=\"item.min\"\r\n [max]=\"item.max\"\r\n [majorUnit]=\"item.majorUnit\"\r\n [color]=\"item.color\"\r\n [pane]=\"item.pane\">\r\n </kendo-chart-value-axis-item>\r\n </kendo-chart-value-axis>\r\n <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n [aggregate]=\"options.aggregateType\"\r\n [type]=\"item.type ?? options.dataType\" [style]=\"item.style ?? options.dataStyle\"\r\n [color]=\"item.color ?? options.color\"\r\n [labels]=\"item.labels ?? options.labels\"\r\n [field]=\"item.dataField ?? options.dataField\" [categoryField]=\"item.categoryField ?? options.categoryField\"\r\n [data]=\"item.data\"\r\n [stack]=\"item.stack\"\r\n [name]=\"item.name\"\r\n [axis]=\"item.axis\"\r\n [markers]=\"item.markers\"\r\n [legendItem]=\"item.legendItem\">\r\n <kendo-chart-series-item-labels [visible]=\"item.labels.visible\" [visual]=\"labelVisual\">\r\n </kendo-chart-series-item-labels>\r\n <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n <ng-template let-value=\"value\" let-category=\"category\" let-series=\"series\" let-dataItem=\"dataItem\">\r\n <div [innerHTML]=\"getToolTip(value, category, series, dataItem) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n </ng-template>\r\n </kendo-chart-series-item-tooltip>\r\n </kendo-chart-series-item>\r\n <kendo-chart-series-item *ngFor=\"let item of options.navigatorAxis\"\r\n [type]=\"item.type\"\r\n [style]=\"item.style ?? options.dataStyle\"\r\n [data]=\"item.data\"\r\n [axis]=\"item.axis\"\r\n [categoryAxis]=\"item.categoryAxis\"\r\n [labels]=\"item.labels\"\r\n [color]=\"item.color\"\r\n >\r\n </kendo-chart-series-item>\r\n </kendo-chart-series>\r\n </kendo-chart>\r\n\r\n</div>\r\n", styles: [""], components: [{ type: i2.ChartComponent, selector: "kendo-chart", inputs: ["pannable", "renderAs", "seriesColors", "subtitle", "title", "transitions", "zoomable", "axisDefaults", "categoryAxis", "chartArea", "legend", "panes", "paneDefaults", "plotArea", "series", "seriesDefaults", "tooltip", "valueAxis", "xAxis", "yAxis", "resizeRateLimit", "popupSettings"], outputs: ["axisLabelClick", "drag", "dragEnd", "dragStart", "legendItemHover", "legendItemLeave", "noteClick", "noteHover", "noteLeave", "paneRender", "plotAreaClick", "plotAreaHover", "plotAreaLeave", "render", "select", "selectEnd", "selectStart", "seriesClick", "seriesHover", "seriesOver", "seriesLeave", "zoom", "zoomEnd", "zoomStart", "legendItemClick"], exportAs: ["kendoChart"] }, { type: i2.TitleComponent, selector: "kendo-chart-title", inputs: ["align", "background", "border", "color", "font", "margin", "padding", "position", "text", "visible"] }, { type: i2.LegendComponent, selector: "kendo-chart-legend", inputs: ["align", "background", "border", "height", "labels", "margin", "offsetX", "offsetY", "orientation", "padding", "position", "reverse", "visible", "width", "markers", "spacing", "inactiveItems", "item", "title"] }, { type: i2.TooltipComponent, selector: "kendo-chart-tooltip", inputs: ["background", "border", "color", "font", "format", "opacity", "padding", "shared", "visible"] }, { type: i2.ValueAxisComponent, selector: "kendo-chart-value-axis" }, { type: i2.ValueAxisItemComponent, selector: "kendo-chart-value-axis-item", inputs: ["axisCrossingValue", "background", "color", "line", "majorGridLines", "majorTicks", "majorUnit", "max", "min", "minorGridLines", "minorTicks", "minorUnit", "name", "narrowRange", "pane", "plotBands", "reverse", "type", "visible", "crosshair", "labels", "notes", "title"] }, { type: i2.CategoryAxisComponent, selector: "kendo-chart-category-axis" }, { type: i2.CategoryAxisItemComponent, selector: "kendo-chart-category-axis-item", inputs: ["autoBaseUnitSteps", "axisCrossingValue", "background", "baseUnit", "baseUnitStep", "categories", "color", "justified", "line", "majorGridLines", "majorTicks", "max", "maxDateGroups", "maxDivisions", "min", "minorGridLines", "minorTicks", "name", "pane", "plotBands", "reverse", "roundToBaseUnit", "startAngle", "type", "visible", "weekStartDay", "crosshair", "labels", "notes", "select", "title", "rangeLabels"] }, { type: i2.SeriesComponent, selector: "kendo-chart-series" }, { type: i2.SeriesItemComponent, selector: "kendo-chart-series-item", inputs: ["aggregate", "autoFit", "axis", "border", "categoryAxis", "categoryField", "closeField", "color", "colorField", "connectors", "currentField", "dashType", "data", "downColor", "downColorField", "dynamicHeight", "dynamicSlope", "errorHighField", "errorLowField", "explodeField", "field", "fromField", "gap", "highField", "holeSize", "line", "lowField", "lowerField", "margin", "maxSize", "mean", "meanField", "median", "medianField", "minSize", "missingValues", "name", "neckRatio", "negativeColor", "negativeValues", "noteTextField", "opacity", "openField", "outliersField", "overlay", "padding", "q1Field", "q3Field", "segmentSpacing", "size", "sizeField", "spacing", "stack", "startAngle", "style", "summaryField", "target", "toField", "type", "upperField", "visible", "visibleInLegend", "visibleInLegendField", "visual", "width", "whiskers", "xAxis", "xErrorHighField", "xErrorLowField", "xField", "yAxis", "yErrorHighField", "yErrorLowField", "yField", "zIndex", "errorBars", "extremes", "highlight", "labels", "markers", "notes", "outliers", "tooltip"] }, { type: i2.SeriesLabelsComponent, selector: "kendo-chart-series-item-labels", inputs: ["align", "background", "border", "color", "content", "distance", "font", "format", "margin", "padding", "position", "rotation", "visible", "visual", "from", "to"] }, { type: i2.SeriesTooltipComponent, selector: "kendo-chart-series-item-tooltip", inputs: ["background", "border", "color", "font", "format", "padding", "visible"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.SeriesTooltipTemplateDirective, selector: "[kendoChartSeriesTooltipTemplate]" }], pipes: { "htmlSanitize": i4.HtmlSanitizePipe } });
|
|
218
257
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZchartComponent, decorators: [{
|
|
219
258
|
type: Component,
|
|
220
|
-
args: [{ selector: 'app-zchart', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n [
|
|
259
|
+
args: [{ selector: 'app-zchart', template: "<div *ngIf=\"!options.navigator && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n (render)=\"onRender($event)\"\r\n (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n (legendItemClick)=\"onLegendItemClick($event)\"\r\n (legendItemHover)=\"onLegendItemHover($event)\"\r\n (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n (seriesClick)=\"onSeriesClick($event)\"\r\n (seriesHover)=\"onSeriesHover($event)\"\r\n class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n <kendo-chart-legend [position]=\"options.legendPosition\" [spacing]=\"options.legendSpacing\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n <kendo-chart-value-axis>\r\n <kendo-chart-value-axis-item *ngFor=\"let item of options.valueAxis\"\r\n [name]=\"item.name\"\r\n [title]=\"item.title\"\r\n [min]=\"item.min\"\r\n [max]=\"item.max\"\r\n [majorUnit]=\"item.majorUnit\"\r\n [color]=\"item.color\">\r\n </kendo-chart-value-axis-item>\r\n </kendo-chart-value-axis>\r\n <kendo-chart-category-axis>\r\n <kendo-chart-category-axis-item [categories]=\"options.categories\"\r\n [axisCrossingValue]=\"options.crossingValues\"\r\n [maxDivisions]=\"options.maxDivisions\"\r\n [max]=\"options.max\"\r\n [labels]=\"options.axisLabels\">\r\n </kendo-chart-category-axis-item>\r\n </kendo-chart-category-axis>\r\n <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n [aggregate]=\"options.aggregateType\"\r\n [type]=\"item.type ?? options.dataType\" [style]=\"item.style ?? options.dataStyle\"\r\n [color]=\"item.color ?? options.color\"\r\n [labels]=\"item.labels ?? options.labels\"\r\n [field]=\"item.dataField ?? options.dataField\" [categoryField]=\"item.categoryField ?? options.categoryField\"\r\n [data]=\"item.data\"\r\n [stack]=\"item.stack\"\r\n [name]=\"item.name\"\r\n [axis]=\"item.axis\"\r\n [markers]=\"item.markers\"\r\n [legendItem]=\"item.legendItem\">\r\n <kendo-chart-series-item-labels [visible]=\"item.labels.visible\" [visual]=\"labelVisual\">\r\n </kendo-chart-series-item-labels>\r\n <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n <ng-template let-value=\"value\" let-category=\"category\" let-series=\"series\" let-dataItem=\"dataItem\">\r\n <div [innerHTML]=\"getToolTip(value, category, series, dataItem) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n </ng-template>\r\n </kendo-chart-series-item-tooltip>\r\n </kendo-chart-series-item>\r\n </kendo-chart-series>\r\n <!--<kendo-chart-x-axis>\r\n <kendo-chart-x-axis-item [title]=\"{ text: 'Wind Speed [km/h]' }\">\r\n </kendo-chart-x-axis-item>\r\n </kendo-chart-x-axis>\r\n <kendo-chart-y-axis>\r\n <kendo-chart-y-axis-item [title]=\"{ text: 'Rainfall [mm]' }\">\r\n </kendo-chart-y-axis-item>\r\n </kendo-chart-y-axis>-->\r\n </kendo-chart>\r\n</div>\r\n<div *ngIf=\"options.navigator && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n (render)=\"onRender($event)\"\r\n [categoryAxis]=\"options.categoryAxis\"\r\n [panes]=\"options.panes\"\r\n (selectEnd)=\"onSelectEnd($event)\" [transitions]=\"options.transitions\"\r\n (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n (legendItemClick)=\"onLegendItemClick($event)\"\r\n (legendItemHover)=\"onLegendItemHover($event)\"\r\n (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n (seriesClick)=\"onSeriesClick($event)\"\r\n (seriesHover)=\"onSeriesHover($event)\"\r\n class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n <kendo-chart-legend [position]=\"options.legendPosition\" [spacing]=\"options.legendSpacing\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n <kendo-chart-value-axis>\r\n <kendo-chart-value-axis-item *ngFor=\"let item of options.valueAxis\"\r\n [name]=\"item.name\"\r\n [title]=\"item.title\"\r\n [min]=\"item.min\"\r\n [max]=\"item.max\"\r\n [majorUnit]=\"item.majorUnit\"\r\n [color]=\"item.color\"\r\n [pane]=\"item.pane\">\r\n </kendo-chart-value-axis-item>\r\n </kendo-chart-value-axis>\r\n <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n [aggregate]=\"options.aggregateType\"\r\n [type]=\"item.type ?? options.dataType\" [style]=\"item.style ?? options.dataStyle\"\r\n [color]=\"item.color ?? options.color\"\r\n [labels]=\"item.labels ?? options.labels\"\r\n [field]=\"item.dataField ?? options.dataField\" [categoryField]=\"item.categoryField ?? options.categoryField\"\r\n [data]=\"item.data\"\r\n [stack]=\"item.stack\"\r\n [name]=\"item.name\"\r\n [axis]=\"item.axis\"\r\n [markers]=\"item.markers\"\r\n [legendItem]=\"item.legendItem\">\r\n <kendo-chart-series-item-labels [visible]=\"item.labels.visible\" [visual]=\"labelVisual\">\r\n </kendo-chart-series-item-labels>\r\n <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n <ng-template let-value=\"value\" let-category=\"category\" let-series=\"series\" let-dataItem=\"dataItem\">\r\n <div [innerHTML]=\"getToolTip(value, category, series, dataItem) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n </ng-template>\r\n </kendo-chart-series-item-tooltip>\r\n </kendo-chart-series-item>\r\n <kendo-chart-series-item *ngFor=\"let item of options.navigatorAxis\"\r\n [type]=\"item.type\"\r\n [style]=\"item.style ?? options.dataStyle\"\r\n [data]=\"item.data\"\r\n [axis]=\"item.axis\"\r\n [categoryAxis]=\"item.categoryAxis\"\r\n [labels]=\"item.labels\"\r\n [color]=\"item.color\"\r\n >\r\n </kendo-chart-series-item>\r\n </kendo-chart-series>\r\n </kendo-chart>\r\n\r\n</div>\r\n", styles: [""] }]
|
|
221
260
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pjaGFydC96Y2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoYXJ0L3pjaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBQzlCLHFFQUFxRTtBQUVyRSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFjLGdCQUFnQixFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVN2RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxvQkFBb0I7SUFpRXZELHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFDQUFxQztJQUNyQyxvQ0FBb0M7SUFDcEMsa0JBQWtCO0lBQ2xCLE1BQU07SUFFTixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQiw0QkFBNEI7SUFDNUIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsMkNBQTJDO0lBQzNDLGFBQWE7SUFDYix3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLG1DQUFtQztJQUNuQyxxQkFBcUI7SUFDckIseUJBQXlCO0lBQ3pCLDhCQUE4QjtJQUM5QixvQ0FBb0M7SUFDcEMsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQixxQkFBcUI7SUFDckIseUJBQXlCO0lBQ3pCLG9DQUFvQztJQUNwQyxrQkFBa0I7SUFDbEIsTUFBTTtJQUVOLFlBQ1MsZ0JBQW1DO1FBRTFD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L1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbi8vIGltcG9ydCB7IGdyb3VwQnksIEdyb3VwUmVzdWx0IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnknO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBEYXRhTGlzdGluZ0ZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2RhdGFsaXN0aW5nZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16Y2hhcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96Y2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pjaGFydC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpjaGFydENvbXBvbmVudCBleHRlbmRzIERhdGFMaXN0aW5nRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBwcml2YXRlIHNlcmllczogYW55W10gPSBbXTtcclxuICAvLyAgPSBbe1xyXG4gIC8vICAgdHlwZTogJycsXHJcbiAgLy8gICBzdHlsZTogJ3Ntb290aCcsXHJcbiAgLy8gICBuYW1lOiAnSW5kaWEnLFxyXG4gIC8vICAgZGF0YTogWzMuOTA3LCA3Ljk0MywgNy44NDgsIDkuMjg0LCA5LjI2MywgOS44MDEsIDMuODkwLCA4LjIzOCwgOS41NTIsIDYuODU1XVxyXG4gIC8vIH0sIHtcclxuICAvLyAgIHR5cGU6ICcnLFxyXG4gIC8vICAgc3R5bGU6ICdzbW9vdGgnLFxyXG4gIC8vICAgbmFtZTogJ1J1c3NpYW4gRmVkZXJhdGlvbicsXHJcbiAgLy8gICBkYXRhOiBbNC43NDMsIDcuMjk1LCA3LjE3NSwgNi4zNzYsIDguMTUzLCA4LjUzNSwgNS4yNDcsIC03LjgzMiwgNC4zLCA0LjNdXHJcbiAgLy8gfSwge1xyXG4gIC8vICAgdHlwZTogJ2JhcicsXHJcbiAgLy8gICBzdHlsZTogJ3Ntb290aCcsXHJcbiAgLy8gICBuYW1lOiAnR2VybWFueScsXHJcbiAgLy8gICBkYXRhOiBbMC4wMTAsIC0wLjM3NSwgMS4xNjEsIDAuNjg0LCAzLjcsIDMuMjY5LCAxLjA4MywgLTUuMTI3LCAzLjY5MCwgMi45OTVdXHJcbiAgLy8gfSwge1xyXG4gIC8vICAgdHlwZTogJ2FyZWEnLFxyXG4gIC8vICAgc3R5bGU6ICdzbW9vdGgnLFxyXG4gIC8vICAgbmFtZTogJ1dvcmxkJyxcclxuICAvLyAgIGRhdGE6IFsxLjk4OCwgMi43MzMsIDMuOTk0LCAzLjQ2NCwgNC4wMDEsIDMuOTM5LCAxLjMzMywgLTIuMjQ1LCA0LjMzOSwgMi43MjddXHJcbiAgLy8gfV07XHJcblxyXG4gIHByaXZhdGUgY2F0ZWdvcmllcyA9IFtdO1xyXG4gIC8vIFsyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExXTtcclxuXHJcbiAgLy8gRGVmYXVsdCB2YWx1ZXNcclxuICBwdWJsaWMgb3B0aW9ucyA9IHtcclxuICAgIHRpdGxlOiAnJyxcclxuICAgIHJlbmRlckFzOiAnY2FudmFzJywgIC8vIHN2Z1xyXG4gICAgcGFubmFibGU6IGZhbHNlLFxyXG4gICAgem9vbWFibGU6IGZhbHNlLFxyXG4gICAgY2F0ZWdvcnlBeGlzOiB7XHJcbiAgICAgIGNhdGVnb3JpZXM6IHRoaXMuY2F0ZWdvcmllcyxcclxuICAgICAgbWF4OiAxMCxcclxuICAgICAgbWF4RGl2aXNpb25zOiBudWxsLFxyXG4gICAgICBsYWJlbHM6IHsgcm90YXRpb246ICdhdXRvJyB9XHJcbiAgICB9LFxyXG4gICAgbGFiZWxzOiB7XHJcbiAgICAgIHZpc2libGU6IGZhbHNlLFxyXG4gICAgICBiYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCJcclxuICAgIH0sXHJcbiAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxyXG4gICAgZGF0YVR5cGU6ICdiYXInLFxyXG4gICAgZGF0YVN0eWxlOiAnc21vb3RoJyxcclxuICAgIGxlZ2VuZFBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgIGxlZ2VuZE9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcsXHJcbiAgICB0b29sdGlwRm9ybWF0OiAnezB9JScsXHJcbiAgICBhZ2dyZWdhdGVUeXBlOiAnc3VtJyxcclxuICAgIGRhdGFGaWVsZDogbnVsbCxcclxuICAgIGNhdGVnb3J5RmllbGQ6IG51bGwsXHJcbiAgICBjb2xvcjogJyMwNUEyRkUnLFxyXG4gICAgb25SZW5kZXI6ICcnLFxyXG4gICAgb25BeGlzTGFiZWxDbGljazogJycsXHJcbiAgICBvbkxlZ2VuZEl0ZW1DbGljazogJycsXHJcbiAgICBvbkxlZ2VuZEl0ZW1Ib3ZlcjogJycsXHJcbiAgICBvblBsb3RBcmVhQ2xpY2s6ICcnLFxyXG4gICAgb25QbG90QXJlYUhvdmVyOiAnJyxcclxuICAgIG9uU2VyaWVzQ2xpY2s6ICcnLFxyXG4gICAgb25TZXJpZXNIb3ZlcjogJycsXHJcbiAgICBjdXN0b21Ub29sdGlwRnVuYzogJycsXHJcbiAgICBjdXN0b21Ub29sdGlwT3B0aW9uczogeyBiYWNrZ3JvdW5kOiAnIzA1QTJGRScgfVxyXG4gIH07XHJcblxyXG4gIC8vIGZpZWxkRWxlbWVudDAxID0gW3tcclxuICAvLyAgIE5hbWU6ICdjaGFydDAxJyxcclxuICAvLyAgIFR5cGU6ICd6Y2hhcnQnLFxyXG4gIC8vICAgT3B0aW9uczogJ2dyb3VwLmNoYXJ0MDFPcHRpb25zJyxcclxuICAvLyAgIERpdkNsYXNzOiBcImNvbC1tZC0xMiBjb2wtbWQtNlwiLFxyXG4gIC8vICAgVmlzaWJsZTogdHJ1ZVxyXG4gIC8vIH1dO1xyXG5cclxuICAvLyBmaWVsZEVsZW1lbnQwMiA9IFt7XHJcbiAgLy8gICBOYW1lOiAnY2hhcnQwMScsXHJcbiAgLy8gICBUeXBlOiAnemNoYXJ0JyxcclxuICAvLyAgIFRpdGxlOiAnQ2hhcnQwMSBUaXRsZScsXHJcbiAgLy8gICBSZW5kZXJBczogJ3N2ZycsXHJcbiAgLy8gICBQYW5uYWJsZTogdHJ1ZSxcclxuICAvLyAgIFpvb21hYmxlOiB0cnVlLFxyXG4gIC8vICAgQ2F0ZWdvcmllczogJ2dyb3VwLmNoYXJ0MDFDYXRlZ29yaWVzJyxcclxuICAvLyAgIE1heDogMTAsXHJcbiAgLy8gICBNYXhEaXZpc2lvbnM6IG51bGwsXHJcbiAgLy8gICBSb3RhdGlvbjogJ2F1dG8nLFxyXG4gIC8vICAgU2VyaWVzOiAnZ3JvdXAuY2hhcnQwMVNlcmllcycsXHJcbiAgLy8gICBEYXRhVHlwZTogJ2JhcicsXHJcbiAgLy8gICBEYXRhU3R5bGU6ICdzbW9vdGgnLFxyXG4gIC8vICAgTGVnZW5kUG9zaXRpb246ICdib3R0b20nLFxyXG4gIC8vICAgTGVnZW5kT3JpZW50YXRpb246ICdob3Jpem9uYWwnLFxyXG4gIC8vICAgVG9vbHRpcEZvcm1hdDogJ3swfScsXHJcbiAgLy8gICBBZ2dyZWdhdGVUeXBlOiAnc3VtJyxcclxuICAvLyAgIERhdGFGaWVsZDogbnVsbCxcclxuICAvLyAgIENhdGVnb3J5RmllbGQ6IG51bGwsXHJcbiAgLy8gICBEaXZDbGFzczogXCJjb2wtbWQtMTIgY29sLW1kLTZcIixcclxuICAvLyAgIFZpc2libGU6IHRydWVcclxuICAvLyB9XTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5PcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVHlwZSA9IHR5cGVvZiAodGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIGlmIChvcHRpb25UeXBlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvblR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIChvcHRpb25WYWx1ZSkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMgJiYgdGhpcy5kYXRhLk9wdGlvbnMuY2F0ZWdvcnlBeGlzICYmIHRoaXMuZGF0YS5PcHRpb25zLmNhdGVnb3J5QXhpcy5jYXRlZ29yaWVzICYmIHR5cGVvZiAodGhpcy5kYXRhLk9wdGlvbnMuY2F0ZWdvcnlBeGlzLmNhdGVnb3JpZXMpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5jYXRlZ29yeUF4aXMuY2F0ZWdvcmllcyA9XHJcbiAgICAgICAgICBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9wdGlvbnMuY2F0ZWdvcnlBeGlzLmNhdGVnb3JpZXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMgJiYgdGhpcy5kYXRhLk9wdGlvbnMuc2VyaWVzICYmIHR5cGVvZiAodGhpcy5kYXRhLk9wdGlvbnMuc2VyaWVzKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuc2VyaWVzID1cclxuICAgICAgICAgIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT3B0aW9ucy5zZXJpZXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEpO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cChmaWVsZDogWkZpZWxkKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMudGl0bGUgPSBmaWVsZC5UaXRsZSB8fCB0aGlzLm9wdGlvbnMudGl0bGU7XHJcbiAgICB0aGlzLm9wdGlvbnMucmVuZGVyQXMgPSBmaWVsZC5SZW5kZXJBcyB8fCB0aGlzLm9wdGlvbnMucmVuZGVyQXM7XHJcbiAgICB0aGlzLm9wdGlvbnMucGFubmFibGUgPSBmaWVsZC5QYW5uYWJsZSB8fCB0aGlzLm9wdGlvbnMucGFubmFibGU7XHJcbiAgICB0aGlzLm9wdGlvbnMuem9vbWFibGUgPSBmaWVsZC5ab29tYWJsZSB8fCB0aGlzLm9wdGlvbnMuem9vbWFibGU7XHJcbiAgICB0aGlzLm9wdGlvbnMuY2F0ZWdvcnlBeGlzLmNhdGVnb3JpZXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuQ2F0ZWdvcmllcykgfHwgW107XHJcbiAgICB0aGlzLm9wdGlvbnMuY2F0ZWdvcnlBeGlzLm1heCA9IGZpZWxkLk1heCB8fCB0aGlzLm9wdGlvbnMuY2F0ZWdvcnlBeGlzLm1heDtcclxuICAgIHRoaXMub3B0aW9ucy5jYXRlZ29yeUF4aXMubWF4RGl2aXNpb25zID0gZmllbGQuTWF4RGl2aXNpb25zIHx8IHRoaXMub3B0aW9ucy5jYXRlZ29yeUF4aXMubWF4RGl2aXNpb25zO1xyXG4gICAgdGhpcy5vcHRpb25zLmNhdGVnb3J5QXhpcy5sYWJlbHMucm90YXRpb24gPSBmaWVsZC5Sb3RhdGlvbiB8fCB0aGlzLm9wdGlvbnMuY2F0ZWdvcnlBeGlzLmxhYmVscy5yb3RhdGlvbjtcclxuICAgIHRoaXMub3B0aW9ucy5zZXJpZXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuU2VyaWVzKSB8fCBbXTtcclxuICAgIHRoaXMub3B0aW9ucy5kYXRhVHlwZSA9IGZpZWxkLkRhdGFUeXBlIHx8IHRoaXMub3B0aW9ucy5kYXRhVHlwZTtcclxuICAgIHRoaXMub3B0aW9ucy5kYXRhU3R5bGUgPSBmaWVsZC5EYXRhU3R5bGUgfHwgdGhpcy5vcHRpb25zLmRhdGFTdHlsZTtcclxuICAgIHRoaXMub3B0aW9ucy5sZWdlbmRQb3NpdGlvbiA9IGZpZWxkLkxlZ2VuZFBvc2l0aW9uIHx8IHRoaXMub3B0aW9ucy5sZWdlbmRQb3NpdGlvbjtcclxuICAgIHRoaXMub3B0aW9ucy5sZWdlbmRPcmllbnRhdGlvbiA9IGZpZWxkLkxlZ2VuZE9yaWVudGF0aW9uIHx8IHRoaXMub3B0aW9ucy5sZWdlbmRPcmllbnRhdGlvbjtcclxuICAgIHRoaXMub3B0aW9ucy50b29sdGlwRm9ybWF0ID0gZmllbGQuVG9vbHRpcEZvcm1hdCB8fCB0aGlzLm9wdGlvbnMudG9vbHRpcEZvcm1hdDtcclxuICAgIHRoaXMub3B0aW9ucy5hZ2dyZWdhdGVUeXBlID0gZmllbGQuQWdncmVnYXRlVHlwZSB8fCB0aGlzLm9wdGlvbnMuYWdncmVnYXRlVHlwZTtcclxuICAgIHRoaXMub3B0aW9ucy5kYXRhRmllbGQgPSBmaWVsZC5EYXRhRmllbGQgfHwgdGhpcy5vcHRpb25zLmRhdGFGaWVsZDtcclxuICAgIHRoaXMub3B0aW9ucy5jYXRlZ29yeUZpZWxkID0gZmllbGQuQ2F0ZWdvcnlGaWVsZCB8fCB0aGlzLm9wdGlvbnMuY2F0ZWdvcnlGaWVsZDtcclxuICAgIHRoaXMub3B0aW9ucy5jdXN0b21Ub29sdGlwRnVuYyA9IGZpZWxkW2BDdXN0b21Ub29sdGlwRnVuY2BdIHx8IHRoaXMub3B0aW9ucy5jdXN0b21Ub29sdGlwRnVuYztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhID0gKGdEYXRhOiBhbnkpID0+IHtcclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gQ29tcG9uZW50IEV2ZW50c1xyXG4gIHB1YmxpYyBvblJlbmRlcihlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygncmVuZGVyJyk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25SZW5kZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQXhpc0xhYmVsQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2F4aXNMYWJlbENsaWNrJywgZSk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25BeGlzTGFiZWxDbGljayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25MZWdlbmRJdGVtQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2xlZ2VuZEl0ZW1DbGljaycsIGUpO1xyXG4gICAgdGhpcy5jYWxsQ29tcG9uZW50RXZlbnQoZSwgdGhpcy5vcHRpb25zLm9uTGVnZW5kSXRlbUNsaWNrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkxlZ2VuZEl0ZW1Ib3ZlcihlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbGVnZW5kSXRlbUhvdmVyJywgZSk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25MZWdlbmRJdGVtSG92ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGxvdEFyZWFDbGljayhlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygncGxvdEFyZWFDbGljaycsIGUpO1xyXG4gICAgdGhpcy5jYWxsQ29tcG9uZW50RXZlbnQoZSwgdGhpcy5vcHRpb25zLm9uUGxvdEFyZWFDbGljayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QbG90QXJlYUhvdmVyKGUpOiB2b2lkIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdwbG90QXJlYUhvdmVyJywgZSk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25QbG90QXJlYUhvdmVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlcmllc0NsaWNrKGUpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdzZXJpZXNDbGljaycsIGUpO1xyXG4gICAgY29uc3QgZiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25JdGVtQ2xpY2spO1xyXG4gICAgaWYgKHR5cGVvZiBmID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gZi5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgcmV0dXJuIGNhbGxGdW5jKGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VyaWVzSG92ZXIoZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jYWxsQ29tcG9uZW50RXZlbnQoZSwgdGhpcy5vcHRpb25zLm9uU2VyaWVzSG92ZXIpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3Nlcmllc0hvdmVyJywgZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxDb21wb25lbnRFdmVudChlLCBldmVudDogYW55KTogYW55IHtcclxuICAgIGlmICh0eXBlb2YgZXZlbnQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBldmVudC5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgcmV0dXJuIGNhbGxGdW5jKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGYgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZXZlbnQpO1xyXG4gICAgaWYgKHR5cGVvZiBmID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gZi5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgcmV0dXJuIGNhbGxGdW5jKGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHVibGljIGdldFRvb2xUaXAodmFsdWUsIGNhdGVnb3J5KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNhbGxDb21wb25lbnRFdmVudCh7IHZhbHVlLCBjYXRlZ29yeSB9LCB0aGlzLm9wdGlvbnMuY3VzdG9tVG9vbHRpcEZ1bmMpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gICAgIGNsYXNzPVwiZTF0YWctc3R5bGVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxrZW5kby1jaGFydCBbcmVuZGVyQXNdPVwib3B0aW9ucy5yZW5kZXJBc1wiIFtwYW5uYWJsZV09XCJvcHRpb25zLnBhbm5hYmxlXCIgW3pvb21hYmxlXT1cIm9wdGlvbnMuem9vbWFibGVcIlxyXG4gICAgICAgICAgICAgICBbY2F0ZWdvcnlBeGlzXT1cIm9wdGlvbnMuY2F0ZWdvcnlBeGlzXCJcclxuICAgICAgICAgICAgICAgKHJlbmRlcik9XCJvblJlbmRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGF4aXNMYWJlbENsaWNrKT1cIm9uQXhpc0xhYmVsQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChsZWdlbmRJdGVtQ2xpY2spPVwib25MZWdlbmRJdGVtQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChsZWdlbmRJdGVtSG92ZXIpPVwib25MZWdlbmRJdGVtSG92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChwbG90QXJlYUNsaWNrKT1cIm9uUGxvdEFyZWFDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKHBsb3RBcmVhSG92ZXIpPVwib25QbG90QXJlYUhvdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoc2VyaWVzQ2xpY2spPVwib25TZXJpZXNDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKHNlcmllc0hvdmVyKT1cIm9uU2VyaWVzSG92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8a2VuZG8tY2hhcnQtdGl0bGUgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCIgW3RleHRdPVwib3B0aW9ucy50aXRsZVwiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+PC9rZW5kby1jaGFydC10aXRsZT5cclxuICAgIDxrZW5kby1jaGFydC1sZWdlbmQgW3Bvc2l0aW9uXT1cIm9wdGlvbnMubGVnZW5kUG9zaXRpb25cIiBbb3JpZW50YXRpb25dPVwib3B0aW9ucy5sZWdlbmRPcmllbnRhdGlvblwiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCI+PC9rZW5kby1jaGFydC1sZWdlbmQ+XHJcbiAgICA8a2VuZG8tY2hhcnQtdG9vbHRpcCBbZm9ybWF0XT1cIm9wdGlvbnMudG9vbHRpcEZvcm1hdFwiIGNsYXNzPVwiZTF0YWctc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+PC9rZW5kby1jaGFydC10b29sdGlwPlxyXG4gICAgPGtlbmRvLWNoYXJ0LXNlcmllcyBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPlxyXG4gICAgICA8a2VuZG8tY2hhcnQtc2VyaWVzLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucy5zZXJpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FnZ3JlZ2F0ZV09XCJvcHRpb25zLmFnZ3JlZ2F0ZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlIHx8IG9wdGlvbnMuZGF0YVR5cGVcIiBbc3R5bGVdPVwiaXRlbS5zdHlsZSB8fCBvcHRpb25zLmRhdGFTdHlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaXRlbS5jb2xvciB8fCBvcHRpb25zLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbHNdPVwiaXRlbS5sYWJlbHMgfHwgb3B0aW9ucy5sYWJlbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cIm9wdGlvbnMuZGF0YUZpZWxkXCIgW2NhdGVnb3J5RmllbGRdPVwib3B0aW9ucy5jYXRlZ29yeUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW0uZGF0YVwiIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxyXG4gICAgICAgIDxrZW5kby1jaGFydC1zZXJpZXMtaXRlbS10b29sdGlwIGtlbmRvQ2hhcnRTZXJpZXNUb29sdGlwVGVtcGxhdGUgKm5nSWY9XCJvcHRpb25zLmN1c3RvbVRvb2x0aXBGdW5jXCIgW2JhY2tncm91bmRdPVwib3B0aW9ucy5jdXN0b21Ub29sdGlwT3B0aW9ucy5iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtY2F0ZWdvcnk9XCJjYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VG9vbFRpcCh2YWx1ZSwgY2F0ZWdvcnkpIHwgaHRtbFNhbml0aXplXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTZcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTZcIj48L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9rZW5kby1jaGFydC1zZXJpZXMtaXRlbS10b29sdGlwPlxyXG4gICAgICA8L2tlbmRvLWNoYXJ0LXNlcmllcy1pdGVtPlxyXG4gICAgPC9rZW5kby1jaGFydC1zZXJpZXM+XHJcbiAgPC9rZW5kby1jaGFydD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pjaGFydC96Y2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoYXJ0L3pjaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBVyxLQUFLLEVBQVEsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVwRixPQUFPLEVBQWMsZ0JBQWdCLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBU3ZFLE1BQU0sT0FBTyxlQUFnQixTQUFRLG9CQUFvQjtJQXNEdkQsWUFDUyxnQkFBbUM7UUFFMUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQXREcEMsV0FBTSxHQUFVLEVBQUUsQ0FBQztRQUNuQixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqRCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUUzQixpQkFBaUI7UUFDVixZQUFPLEdBQUc7WUFDZixLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFB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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTZXJpZXNMYWJlbHNWaXN1YWxBcmdzIH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFbGVtZW50LCBHcm91cCwgUGF0aCB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kcmF3aW5nJztcclxuaW1wb3J0IHsgRGF0YUxpc3RpbmdGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9kYXRhbGlzdGluZ2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpGaWVsZCB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtemNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vemNoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96Y2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBaY2hhcnRDb21wb25lbnQgZXh0ZW5kcyBEYXRhTGlzdGluZ0ZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBzZXJpZXM6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSB2YWx1ZUF4aXM6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBjcm9zc2luZ1ZhbHVlcyA9IFtdO1xyXG4gIHByaXZhdGUgY2F0ZWdvcmllcyA9IFtdO1xyXG4gIHByaXZhdGUgcGFuZXMgPSBbe30sIHsgbmFtZTogJ25hdmlnYXRvcicsIGhlaWdodDogMTAwIH1dO1xyXG4gIHByaXZhdGUgY2F0ZWdvcnlBeGlzID0gW107XHJcbiAgcHJpdmF0ZSBuYXZpZ2F0b3JBeGlzID0gW107XHJcblxyXG4gIC8vIERlZmF1bHQgdmFsdWVzXHJcbiAgcHVibGljIG9wdGlvbnMgPSB7XHJcbiAgICB0aXRsZTogJycsXHJcbiAgICByZW5kZXJBczogJ2NhbnZhcycsICAvLyBzdmdcclxuICAgIHBhbm5hYmxlOiBmYWxzZSxcclxuICAgIHpvb21hYmxlOiBmYWxzZSxcclxuICAgIGNhdGVnb3JpZXM6IHRoaXMuY2F0ZWdvcmllcyxcclxuICAgIG1heDogMTAsXHJcbiAgICBtYXhEaXZpc2lvbnM6IG51bGwsXHJcbiAgICBheGlzTGFiZWxzOiB7IHJvdGF0aW9uOiAnYXV0bycgfSxcclxuICAgIGxhYmVsczoge1xyXG4gICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiXHJcbiAgICB9LFxyXG4gICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcclxuICAgIHZhbHVlQXhpczogdGhpcy52YWx1ZUF4aXMsXHJcbiAgICBjcm9zc2luZ1ZhbHVlczogdGhpcy5jcm9zc2luZ1ZhbHVlcywgXHJcbiAgICBkYXRhVHlwZTogJ2FyZWEnLFxyXG4gICAgZGF0YVN0eWxlOiAnc21vb3RoJyxcclxuICAgIGxlZ2VuZFBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgIGxlZ2VuZFNwYWNpbmc6IDYsXHJcbiAgICBsZWdlbmRPcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxyXG4gICAgdG9vbHRpcEZvcm1hdDogJ3swfSUnLFxyXG4gICAgYWdncmVnYXRlVHlwZTogJ3N1bScsXHJcbiAgICBkYXRhRmllbGQ6IG51bGwsXHJcbiAgICBjYXRlZ29yeUZpZWxkOiBudWxsLFxyXG4gICAgY29sb3I6ICcjMDVBMkZFJyxcclxuICAgIGZpZWxkOiAnYmFyJyxcclxuICAgIG9uUmVuZGVyOiAnJyxcclxuICAgIG9uQXhpc0xhYmVsQ2xpY2s6ICcnLFxyXG4gICAgb25MZWdlbmRJdGVtQ2xpY2s6ICcnLFxyXG4gICAgb25MZWdlbmRJdGVtSG92ZXI6ICcnLFxyXG4gICAgb25QbG90QXJlYUNsaWNrOiAnJyxcclxuICAgIG9uUGxvdEFyZWFIb3ZlcjogJycsXHJcbiAgICBvblNlcmllc0NsaWNrOiAnJyxcclxuICAgIG9uU2VyaWVzSG92ZXI6ICcnLFxyXG4gICAgY3VzdG9tVG9vbHRpcEZ1bmM6ICcnLFxyXG4gICAgY3VzdG9tVG9vbHRpcE9wdGlvbnM6IHsgYmFja2dyb3VuZDogJyMwNUEyRkUnIH0sIFxyXG4gICAgcGFuZXM6IHRoaXMucGFuZXMsXHJcbiAgICBjYXRlZ29yeUF4aXM6IHRoaXMuY2F0ZWdvcnlBeGlzLFxyXG4gICAgdHJhbnNpdGlvbnM6ICd0cmFuc2l0aW9ucycsXHJcbiAgICBuYXZpZ2F0b3I6IGZhbHNlLFxyXG4gICAgbmF2aWdhdG9yQXhpczogdGhpcy5uYXZpZ2F0b3JBeGlzLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG9wdHMgPSB0aGlzLmRhdGE/Lk9wdGlvbnM7XHJcbiAgICAgIGlmICghb3B0cykge1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbygnbmdPbkluaXQ6IG5vIE9wdGlvbnMgZm91bmQgb24gZGF0YS4nKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE1lcmdlIG9iamVjdCBvcHRpb25zIG9yIGV2YWx1YXRlIHN0cmluZyBleHByZXNzaW9uXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0cyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgZXZhbHVhdGVkID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIG9wdHMpO1xyXG4gICAgICAgIGlmIChldmFsdWF0ZWQgJiYgdHlwZW9mIGV2YWx1YXRlZCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBldmFsdWF0ZWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ25nT25Jbml0OiBldmFsdWF0ZWQgT3B0aW9ucyBzdHJpbmcgZGlkIG5vdCB5aWVsZCBhbiBvYmplY3Q6JywgZXZhbHVhdGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCduZ09uSW5pdDogdW5zdXBwb3J0ZWQgT3B0aW9ucyB0eXBlOicsIHR5cGVvZiBvcHRzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSGFuZGxlIHNwZWNpZmljIGZpZWxkcyBwYXNzZWQgaW4gYXMgc3RyaW5nIGV4cHJlc3Npb25zXHJcbiAgICAgIGNvbnN0IHN0cmluZ0ZpZWxkczogQXJyYXk8a2V5b2YgdHlwZW9mIG9wdHM+ID0gW1xyXG4gICAgICAgICdjYXRlZ29yaWVzJywgJ3NlcmllcycsICd2YWx1ZUF4aXMnLFxyXG4gICAgICAgICdjcm9zc2luZ1ZhbHVlcycsICdjYXRlZ29yeUF4aXMnLFxyXG4gICAgICAgICduYXZpZ2F0b3JBeGlzJywgJ05hdmlnYXRvcicsICdtYXgnXHJcbiAgICAgIF07XHJcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc3RyaW5nRmllbGRzKSB7XHJcbiAgICAgICAgY29uc3QgcmF3ID0gKG9wdHMgYXMgYW55KVtmaWVsZF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiByYXcgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCByYXcpO1xyXG4gICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgKHRoaXMub3B0aW9ucyBhcyBhbnkpW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBuZ09uSW5pdDogZmFpbGVkIHRvIGV2YWx1YXRlIFwiJHtTdHJpbmcoZmllbGQpfVwiIGV4cHJlc3Npb246YCwgcmF3KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSk7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIC8vIFRvIGNvbmZpZ3VyZSB0aGUgQ2hhcnQgdGl0bGVcclxuICAgIHRoaXMub3B0aW9ucy50aXRsZSA9IGZpZWxkLlRpdGxlID8/IHRoaXMub3B0aW9ucy50aXRsZTtcclxuXHJcbiAgICAvLyBDYW52YXMgKGJpdG1hcCkgYW5kIFNWRyAodmVjdG9yIGdyYXBoaWNzKS5cclxuICAgIHRoaXMub3B0aW9ucy5yZW5kZXJBcyA9IGZpZWxkLlJlbmRlckFzID8/IHRoaXMub3B0aW9ucy5yZW5kZXJBcztcclxuXHJcbiAgICAvLyB0cnVlIG9yIGZhbHNlIC0gVG8gcGVyZm9ybSBwYW5uaW5nLCBkcmFnIHRoZSBwbG90IGFyZWEgb2YgdGhlIENoYXJ0LlxyXG4gICAgdGhpcy5vcHRpb25zLnBhbm5hYmxlID0gZmllbGQuUGFubmFibGUgPz8gdGhpcy5vcHRpb25zLnBhbm5hYmxlO1xyXG5cclxuICAgIC8vIHRydWUgb3IgZmFsc2UgLSBUbyBwZXJmb3JtIHpvb21pbmdNb3VzZS13aGVlbCAoZGVza3RvcCkgb3IgcGluY2gtem9vbSAobW9iaWxlKSwgb3IgSG9sZCB0aGUgU2hpZnQga2V5IGFuZCBzZWxlY3QgYW4gYXJlYS5cclxuICAgIHRoaXMub3B0aW9ucy56b29tYWJsZSA9IGZpZWxkLlpvb21hYmxlID8/IHRoaXMub3B0aW9ucy56b29tYWJsZTtcclxuXHJcbiAgICAvLyBTdXBwb3J0cyB0aGUgYmluZGluZyBvZiBjYXRlZ29yeSB4LWF4aXMgdG8gYXJyYXlzXHJcbiAgICB0aGlzLm9wdGlvbnMuY2F0ZWdvcmllcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5DYXRlZ29yaWVzKSA/PyBbXTtcclxuXHJcbiAgICAvLyBUaGUgbGFzdCBkYXRlIGRpc3BsYXllZCBvbiBhIGRhdGUgY2F0ZWdvcnkgYXhpcyBvciB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2F0ZWdvcnkgZGlzcGxheWVkIG9uIGEgY2F0ZWdvcnkgYXhpcy5cclxuICAgIHRoaXMub3B0aW9ucy5tYXggPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWF4KSA/PyB0aGlzLm9wdGlvbnMubWF4O1xyXG5cclxuICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aWNrcyBhbmQgbGFiZWxzIHRvIGRpc3BsYXkuIEFwcGxpY2FibGUgZm9yIGRhdGUgY2F0ZWdvcnkgYXhpcy5cclxuICAgIHRoaXMub3B0aW9ucy5tYXhEaXZpc2lvbnMgPSBmaWVsZC5NYXhEaXZpc2lvbnMgPz8gdGhpcy5vcHRpb25zLm1heERpdmlzaW9ucztcclxuXHJcbiAgICAvLyBUaGUgcm90YXRpb24gYW5nbGUgb2YgdGhlIGxhYmVsc1xyXG4gICAgdGhpcy5vcHRpb25zLmF4aXNMYWJlbHMucm90YXRpb24gPSBmaWVsZC5Sb3RhdGlvbiA/PyB0aGlzLm9wdGlvbnMuYXhpc0xhYmVscy5yb3RhdGlvbjtcclxuXHJcbiAgICAvL1N1cHBvcnRzIHRoZSBiaW5kaW5nIG9mIHNlcmllcyB5LWF4aXMgdG8gYXJyYXlzIGFuZCBjaGFydCB0eXBlLiBtYXkgcmVmZXIgaHR0cHM6Ly93d3cudGVsZXJpay5jb20va2VuZG8tYW5ndWxhci11aS9jb21wb25lbnRzL2NoYXJ0cy9hcGkvc2VyaWVzXHJcbiAgICB0aGlzLm9wdGlvbnMuc2VyaWVzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlNlcmllcykgPz8gW107XHJcblxyXG4gICAgLy8gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvZiB0aGUgdmFsdWUgYXhpcy4gbWF5IHJlZmVyIGh0dHBzOi8vd3d3LnRlbGVyaWsuY29tL2tlbmRvLWFuZ3VsYXItdWkvY29tcG9uZW50cy9jaGFydHMvYXBpL3ZhbHVlYXhpc1xyXG4gICAgdGhpcy5vcHRpb25zLnZhbHVlQXhpcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5WYWx1ZUF4aXMpID8/IFtdO1xyXG5cclxuICAgIC8vIFRvIGNvbmZpZ3VyZSB0aGUgcG9zaXRpb24gb2YgdGhlIGF4ZXMgYXMgcmVsYXRpdmUgdG8gb25lIGFub3RoZXIsIHVzZSB0aGUgYXhpc0Nyb3NzaW5nVmFsdWUgb3B0aW9uIG9mIHRoZSBheGVzLlxyXG4gICAgLy8gTWF5IHJlZmVyIGh0dHBzOi8vd3d3LnRlbGVyaWsuY29tL2tlbmRvLWFuZ3VsYXItdWkvY29tcG9uZW50cy9jaGFydHMvZWxlbWVudHMvYXhlc1xyXG4gICAgdGhpcy5vcHRpb25zLmNyb3NzaW5nVmFsdWVzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkNyb3NzaW5nVmFsdWVzKSA/PyBbXTtcclxuXHJcbiAgICAvL0FuZ3VsYXIgQ2hhcnQgVHlwZXMuIG1heSByZWZlciBodHRwczovL3d3dy50ZWxlcmlrLmNvbS9rZW5kby1hbmd1bGFyLXVpL2NoYXJ0c1xyXG4gICAgdGhpcy5vcHRpb25zLmRhdGFUeXBlID0gZmllbGQuRGF0YVR5cGUgPz8gdGhpcy5vcHRpb25zLmRhdGFUeXBlO1xyXG5cclxuICAgIC8vIFRoZSBsaW5lIHN0eWxlIG9mIHRoZSBzZXJpZXNcclxuICAgIC8vIEtleSBWYWx1ZTogXCJub3JtYWxcIiB8IFwic3RlcFwiIHwgXCJzbW9vdGhcIlxyXG4gICAgdGhpcy5vcHRpb25zLmRhdGFTdHlsZSA9IGZpZWxkLkRhdGFTdHlsZSA/PyB0aGlzLm9wdGlvbnMuZGF0YVN0eWxlO1xyXG5cclxuICAgIC8vIFRoZSBwb3NpdGlvbnMgb2YgdGhlIENoYXJ0IGxlZ2VuZC4gU2V0dGluZyB0aGUgbGVnZW5kIHBvc2l0aW9uIHRvIGN1c3RvbSBhbGxvd3MgeW91IHRvIHBvc2l0aW9uIHRoZSBsZWdlbmQgdXNpbmcgdGhlIGxlZ2VuZC5vZmZzZXRYIGFuZCBsZWdlbmQub2Zmc2V0WSBvcHRpb25zLlxyXG4gICAgLy8gS2V5IFZhbHVlOiBcInRvcFwiIHwgXCJib3R0b21cIiB8IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgXCJjdXN0b21cIlxyXG4gICAgdGhpcy5vcHRpb25zLmxlZ2VuZFBvc2l0aW9uID0gZmllbGQuTGVnZW5kUG9zaXRpb24gPz8gdGhpcy5vcHRpb25zLmxlZ2VuZFBvc2l0aW9uO1xyXG5cclxuICAgIC8vIFRoZSBkaXN0YW5jZSAoaW4gcGl4ZWxzKSBiZXR3ZWVuIHRoZSBsZWdlbmQgaXRlbXMuIERlZmF1bHRzIHRvIDYuXHJcbiAgICB0aGlzLm9wdGlvbnMubGVnZW5kU3BhY2luZyA9IGZpZWxkLkxlZ2VuZFNwYWNpbmcgPz8gdGhpcy5vcHRpb25zLmxlZ2VuZFNwYWNpbmc7XHJcblxyXG4gICAgLy8gU3BlY2lmaWVzIHRoZSBvcmllbnRhdGlvbiBvZiBsYXlvdXRzIGluIGRpZmZlcmVudCBzY2VuYXJpb3NcclxuICAgIC8vIEtleSBWYWx1ZTogXCJob3Jpem9udGFsXCIgfCBcInZlcnRpY2FsXCJcclxuICAgIHRoaXMub3B0aW9ucy5sZWdlbmRPcmllbnRhdGlvbiA9IGZpZWxkLkxlZ2VuZE9yaWVudGF0aW9uID8/IHRoaXMub3B0aW9ucy5sZWdlbmRPcmllbnRhdGlvbjtcclxuXHJcbiAgICAvLyBUaGUgQW5ndWxhciBDaGFydCBzdXBwb3J0cyB0aHJlZSB0eXBlcyBvZiB0b29sdGlwc+KAlG9uIHRoZSBzZXJpZXMgbGV2ZWwsIGEgc2hhcmVkIHRvb2x0aXAgZm9yIGFsbCBzZXJpZXMgcGVyIGNhdGVnb3J5LCBhbmQgb24gdGhlIGNyb3NzaGFpci5cclxuICAgIHRoaXMub3B0aW9ucy50b29sdGlwRm9ybWF0ID0gZmllbGQuVG9vbHRpcEZvcm1hdCA/PyB0aGlzLm9wdGlvbnMudG9vbHRpcEZvcm1hdDtcclxuXHJcbiAgICAvLyBUaGUgYWdncmVnYXRlIGZ1bmN0aW9uIGZvciB0aGUgZGF0ZSBzZXJpZXMuXHJcbiAgICAvLyBLZXkgVmFsdWU6IFwiYXZnXCIsXCJjb3VudFwiLFwibWF4XCIsXCJtaW5cIixcInN1bVwiLFwic3VtT3JOdWxsXCIsXCJmaXJzdFwiXHJcbiAgICAvLyBNYXkgcmVmZXI6IGh0dHBzOi8vd3d3LnRlbGVyaWsuY29tL2tlbmRvLWFuZ3VsYXItdWkvY29tcG9uZW50cy9jaGFydHMvYXBpL3Nlcmllc1xyXG4gICAgdGhpcy5vcHRpb25zLmFnZ3JlZ2F0ZVR5cGUgPSBmaWVsZC5BZ2dyZWdhdGVUeXBlID8/IHRoaXMub3B0aW9ucy5hZ2dyZWdhdGVUeXBlO1xyXG5cclxuICAgIC8vIFRoZSBkYXRhIGl0ZW0gZmllbGQgd2hpY2ggY29udGFpbnMgdGhlIHNlcmllcyB2YWx1ZS5cclxuICAgIHRoaXMub3B0aW9ucy5kYXRhRmllbGQgPSBmaWVsZC5EYXRhRmllbGQgPz8gdGhpcy5vcHRpb25zLmRhdGFGaWVsZDtcclxuXHJcbiAgICAvLyBUaGUgZGF0YSBpdGVtIGZpZWxkIHdoaWNoIGNvbnRhaW5zIHRoZSBjYXRlZ29yeSBuYW1lIG9yIGRhdGUuIElmIHRoZSBjYXRlZ29yeSBpcyBhIGRhdGUsIHRoZSBwb2ludHMgYXJlIHJlbmRlcmVkIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIuXHJcbiAgICAvLyBEZWZhdWx0IHZhbHVlOiBcImNhdGVnb3J5XCJcclxuICAgIHRoaXMub3B0aW9ucy5jYXRlZ29yeUZpZWxkID0gZmllbGQuQ2F0ZWdvcnlGaWVsZCA/PyB0aGlzLm9wdGlvbnMuY2F0ZWdvcnlGaWVsZDtcclxuXHJcbiAgICAvLyBUbyBkZWNsYXJlIGEgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgdG9vbHRpcHNcclxuICAgIHRoaXMub3B0aW9ucy5jdXN0b21Ub29sdGlwRnVuYyA9IGZpZWxkLkN1c3RvbVRvb2x0aXBGdW5jID8/IHRoaXMub3B0aW9ucy5jdXN0b21Ub29sdGlwRnVuYztcclxuXHJcbiAgICAvLyBUbyBlbmFibGUgbmF2aWdhdG9yXHJcbiAgICB0aGlzLm9wdGlvbnMubmF2aWdhdG9yID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk5hdmlnYXRvcikgPz8gdGhpcy5vcHRpb25zLm5hdmlnYXRvcjtcclxuXHJcbiAgICAvLyBTdXBwb3J0cyB0aGUgYmluZGluZyBvZiBzZXJpZXMgeC1heGlzIHRvIGFycmF5c1xyXG4gICAgdGhpcy5vcHRpb25zLmNhdGVnb3J5QXhpcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5DYXRlZ29yeUF4aXMpID8/IFtdO1xyXG5cclxuICAgIC8vIFN1cHBvcnRzIHRoZSBiaW5kaW5nIG9mIHNlcmllcyB4LWF4aXMgZm9yIG5hdmlnYXRvclxyXG4gICAgdGhpcy5vcHRpb25zLm5hdmlnYXRvckF4aXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTmF2aWdhdG9yQXhpcykgPz8gW107XHJcblxyXG4gICAgLy8gVGhlIENoYXJ0IHBhbmVzIGVuYWJsZSB5b3UgdG8gY3JlYXRlIHZlcnRpY2FsIHN1Yi1kaXZpc2lvbnMgaW4gYSBzaW5nbGUgY2F0ZWdvcmljYWwgQ2hhcnQuXHJcbiAgICAvLyBZb3UgaGF2ZSB0byBzZXQgYW4gaW5kaXZpZHVhbCB2YWx1ZSBheGlzIHRvIGVhY2ggcGFuZS5NdWx0aXBsZSBwYW5lcyBjYW4gc2hhcmUgYSBjYXRlZ29yeSBheGlzLlxyXG4gICAgdGhpcy5vcHRpb25zLnBhbmVzID0gZmllbGQuUGFuZXMgPz8gdGhpcy5vcHRpb25zLnBhbmVzO1xyXG5cclxuXHJcbiAgICAvL3RoaXMub3B0aW9ucy5sYWJlbFZpc3VhbCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5MYWJlbFZpc3VhbCkgfHwgdGhpcy5vcHRpb25zLmxhYmVsVmlzdWFsO1xyXG4gIH1cclxuXHJcbiAgLy8gTm90aWNlIHRoYXQgdG8gY2FwdHVyZSAndGhpcycsIHRoZSBhcHByb2FjaCB1dGlsaXplc1xyXG4gIC8vIGEgbGFtYmRhIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtZXRob2RcclxuICBwdWJsaWMgbGFiZWxWaXN1YWwgPSAoZTogU2VyaWVzTGFiZWxzVmlzdWFsQXJncyk6IEVsZW1lbnQgPT4ge1xyXG5cclxuICAgIGxldCBncm91cCA9IG5ldyBHcm91cCgpO1xyXG5cclxuICAgIGNvbnN0IGYgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLkxhYmVsVmlzdWFsQ29uZmlndXJhdGlvbik7XHJcbiAgICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBmLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICBncm91cCA9IGNhbGxGdW5jKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ3JvdXAuYXBwZW5kKGRlZmF1bHRMYWJlbCwgcGF0aCk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwO1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhID0gKGdEYXRhOiBhbnkpID0+IHtcclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gQ29tcG9uZW50IEV2ZW50c1xyXG4gIHB1YmxpYyBvblJlbmRlcihlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygncmVuZGVyJyk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25SZW5kZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQXhpc0xhYmVsQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2F4aXNMYWJlbENsaWNrJywgZSk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25BeGlzTGFiZWxDbGljayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25MZWdlbmRJdGVtQ2xpY2soZSk6IHZvaWQge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2xlZ2VuZEl0ZW1DbGljaycsIGUpO1xyXG4gICAgdGhpcy5jYWxsQ29tcG9uZW50RXZlbnQoZSwgdGhpcy5vcHRpb25zLm9uTGVnZW5kSXRlbUNsaWNrKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkxlZ2VuZEl0ZW1Ib3ZlcihlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbGVnZW5kSXRlbUhvdmVyJywgZSk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25MZWdlbmRJdGVtSG92ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGxvdEFyZWFDbGljayhlKTogdm9pZCB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygncGxvdEFyZWFDbGljaycsIGUpO1xyXG4gICAgdGhpcy5jYWxsQ29tcG9uZW50RXZlbnQoZSwgdGhpcy5vcHRpb25zLm9uUGxvdEFyZWFDbGljayk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QbG90QXJlYUhvdmVyKGUpOiB2b2lkIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdwbG90QXJlYUhvdmVyJywgZSk7XHJcbiAgICB0aGlzLmNhbGxDb21wb25lbnRFdmVudChlLCB0aGlzLm9wdGlvbnMub25QbG90QXJlYUhvdmVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbGVjdEVuZChlKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0RW5kJywgZSk7XHJcbiAgICBjb25zdCBmID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5Pbkl0ZW1DbGljayk7XHJcbiAgICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBmLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmMoZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TZXJpZXNDbGljayhlKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnc2VyaWVzQ2xpY2snLCBlKTtcclxuICAgIGNvbnN0IGYgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uSXRlbUNsaWNrKTtcclxuICAgIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGYuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYyhlKTtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlcmllc0hvdmVyKGUpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsbENvbXBvbmVudEV2ZW50KGUsIHRoaXMub3B0aW9ucy5vblNlcmllc0hvdmVyKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdzZXJpZXNIb3ZlcicsIGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxsQ29tcG9uZW50RXZlbnQoZSwgZXZlbnQ6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gZXZlbnQuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYyhlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGV2ZW50KTtcclxuICAgIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGYuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYyhlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHB1YmxpYyBnZXRUb29sVGlwKHZhbHVlLCBjYXRlZ29yeSwgc2VyaWVzLCBkYXRhSXRlbSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5vcHRpb25zO1xyXG4gICAgcmV0dXJuIHRoaXMuY2FsbENvbXBvbmVudEV2ZW50KHsgdmFsdWUsIGNhdGVnb3J5LCBzZXJpZXMsIGRhdGFJdGVtLCBkYXRhIH0sIHRoaXMub3B0aW9ucy5jdXN0b21Ub29sdGlwRnVuYyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhb3B0aW9ucy5uYXZpZ2F0b3IgJiYgIWlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gICAgIGNsYXNzPVwiZTF0YWctc3R5bGVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxrZW5kby1jaGFydCBbcmVuZGVyQXNdPVwib3B0aW9ucy5yZW5kZXJBc1wiIFtwYW5uYWJsZV09XCJvcHRpb25zLnBhbm5hYmxlXCIgW3pvb21hYmxlXT1cIm9wdGlvbnMuem9vbWFibGVcIlxyXG4gICAgICAgICAgICAgICAocmVuZGVyKT1cIm9uUmVuZGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoYXhpc0xhYmVsQ2xpY2spPVwib25BeGlzTGFiZWxDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGxlZ2VuZEl0ZW1DbGljayk9XCJvbkxlZ2VuZEl0ZW1DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGxlZ2VuZEl0ZW1Ib3Zlcik9XCJvbkxlZ2VuZEl0ZW1Ib3ZlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKHBsb3RBcmVhQ2xpY2spPVwib25QbG90QXJlYUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAocGxvdEFyZWFIb3Zlcik9XCJvblBsb3RBcmVhSG92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChzZXJpZXNDbGljayk9XCJvblNlcmllc0NsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoc2VyaWVzSG92ZXIpPVwib25TZXJpZXNIb3ZlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDxrZW5kby1jaGFydC10aXRsZSAqbmdJZj1cIm9wdGlvbnMudGl0bGVcIiBbdGV4dF09XCJvcHRpb25zLnRpdGxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIj48L2tlbmRvLWNoYXJ0LXRpdGxlPlxyXG4gICAgPGtlbmRvLWNoYXJ0LWxlZ2VuZCBbcG9zaXRpb25dPVwib3B0aW9ucy5sZWdlbmRQb3NpdGlvblwiIFtzcGFjaW5nXT1cIm9wdGlvbnMubGVnZW5kU3BhY2luZ1wiIFtvcmllbnRhdGlvbl09XCJvcHRpb25zLmxlZ2VuZE9yaWVudGF0aW9uXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIj48L2tlbmRvLWNoYXJ0LWxlZ2VuZD5cclxuICAgIDxrZW5kby1jaGFydC10b29sdGlwIFtmb3JtYXRdPVwib3B0aW9ucy50b29sdGlwRm9ybWF0XCIgY2xhc3M9XCJlMXRhZy1zdHlsZTRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj48L2tlbmRvLWNoYXJ0LXRvb2x0aXA+XHJcbiAgICA8a2VuZG8tY2hhcnQtdmFsdWUtYXhpcz5cclxuICAgICAgPGtlbmRvLWNoYXJ0LXZhbHVlLWF4aXMtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zLnZhbHVlQXhpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS50aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJpdGVtLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJpdGVtLm1heFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21ham9yVW5pdF09XCJpdGVtLm1ham9yVW5pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uY29sb3JcIj5cclxuICAgICAgPC9rZW5kby1jaGFydC12YWx1ZS1heGlzLWl0ZW0+XHJcbiAgICA8L2tlbmRvLWNoYXJ0LXZhbHVlLWF4aXM+XHJcbiAgICA8a2VuZG8tY2hhcnQtY2F0ZWdvcnktYXhpcz5cclxuICAgICAgPGtlbmRvLWNoYXJ0LWNhdGVnb3J5LWF4aXMtaXRlbSBbY2F0ZWdvcmllc109XCJvcHRpb25zLmNhdGVnb3JpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtheGlzQ3Jvc3NpbmdWYWx1ZV09XCJvcHRpb25zLmNyb3NzaW5nVmFsdWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGl2aXNpb25zXT1cIm9wdGlvbnMubWF4RGl2aXNpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm9wdGlvbnMubWF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxzXT1cIm9wdGlvbnMuYXhpc0xhYmVsc1wiPlxyXG4gICAgICA8L2tlbmRvLWNoYXJ0LWNhdGVnb3J5LWF4aXMtaXRlbT5cclxuICAgIDwva2VuZG8tY2hhcnQtY2F0ZWdvcnktYXhpcz5cclxuICAgIDxrZW5kby1jaGFydC1zZXJpZXMgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj5cclxuICAgICAgPGtlbmRvLWNoYXJ0LXNlcmllcy1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnMuc2VyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthZ2dyZWdhdGVdPVwib3B0aW9ucy5hZ2dyZWdhdGVUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIml0ZW0udHlwZSA/PyBvcHRpb25zLmRhdGFUeXBlXCIgW3N0eWxlXT1cIml0ZW0uc3R5bGUgPz8gb3B0aW9ucy5kYXRhU3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIml0ZW0uY29sb3IgPz8gb3B0aW9ucy5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxzXT1cIml0ZW0ubGFiZWxzID8/IG9wdGlvbnMubGFiZWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJpdGVtLmRhdGFGaWVsZCA/PyBvcHRpb25zLmRhdGFGaWVsZFwiIFtjYXRlZ29yeUZpZWxkXT1cIml0ZW0uY2F0ZWdvcnlGaWVsZCA/PyBvcHRpb25zLmNhdGVnb3J5RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaXRlbS5kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFja109XCJpdGVtLnN0YWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLmF4aXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hcmtlcnNdPVwiaXRlbS5tYXJrZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWdlbmRJdGVtXT1cIml0ZW0ubGVnZW5kSXRlbVwiPlxyXG4gICAgICAgIDxrZW5kby1jaGFydC1zZXJpZXMtaXRlbS1sYWJlbHMgW3Zpc2libGVdPVwiaXRlbS5sYWJlbHMudmlzaWJsZVwiIFt2aXN1YWxdPVwibGFiZWxWaXN1YWxcIj5cclxuICAgICAgICA8L2tlbmRvLWNoYXJ0LXNlcmllcy1pdGVtLWxhYmVscz5cclxuICAgICAgICA8a2VuZG8tY2hhcnQtc2VyaWVzLWl0ZW0tdG9vbHRpcCBrZW5kb0NoYXJ0U2VyaWVzVG9vbHRpcFRlbXBsYXRlICpuZ0lmPVwib3B0aW9ucy5jdXN0b21Ub29sdGlwRnVuY1wiIFtiYWNrZ3JvdW5kXT1cIm9wdGlvbnMuY3VzdG9tVG9vbHRpcE9wdGlvbnMuYmFja2dyb3VuZFwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWNhdGVnb3J5PVwiY2F0ZWdvcnlcIiBsZXQtc2VyaWVzPVwic2VyaWVzXCIgbGV0LWRhdGFJdGVtPVwiZGF0YUl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImdldFRvb2xUaXAodmFsdWUsIGNhdGVnb3J5LCBzZXJpZXMsIGRhdGFJdGVtKSB8IGh0bWxTYW5pdGl6ZVwiIGNsYXNzPVwiZTF0YWctc3R5bGU2XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU2XCI+PC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwva2VuZG8tY2hhcnQtc2VyaWVzLWl0ZW0tdG9vbHRpcD5cclxuICAgICAgPC9rZW5kby1jaGFydC1zZXJpZXMtaXRlbT5cclxuICAgIDwva2VuZG8tY2hhcnQtc2VyaWVzPlxyXG4gICAgPCEtLTxrZW5kby1jaGFydC14LWF4aXM+XHJcbiAgICA8a2VuZG8tY2hhcnQteC1heGlzLWl0ZW0gW3RpdGxlXT1cInsgdGV4dDogJ1dpbmQgU3BlZWQgW2ttL2hdJyB9XCI+XHJcbiAgICA8L2tlbmRvLWNoYXJ0LXgtYXhpcy1pdGVtPlxyXG4gIDwva2VuZG8tY2hhcnQteC1heGlzPlxyXG4gIDxrZW5kby1jaGFydC15LWF4aXM+XHJcbiAgICA8a2VuZG8tY2hhcnQteS1heGlzLWl0ZW0gW3RpdGxlXT1cInsgdGV4dDogJ1JhaW5mYWxsIFttbV0nIH1cIj5cclxuICAgIDwva2VuZG8tY2hhcnQteS1heGlzLWl0ZW0+XHJcbiAgPC9rZW5kby1jaGFydC15LWF4aXM+LS0+XHJcbiAgPC9rZW5kby1jaGFydD5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJvcHRpb25zLm5hdmlnYXRvciAmJiAhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiXHJcbiAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGtlbmRvLWNoYXJ0IFtyZW5kZXJBc109XCJvcHRpb25zLnJlbmRlckFzXCIgW3Bhbm5hYmxlXT1cIm9wdGlvbnMucGFubmFibGVcIiBbem9vbWFibGVdPVwib3B0aW9ucy56b29tYWJsZVwiXHJcbiAgICAgICAgICAgICAgIChyZW5kZXIpPVwib25SZW5kZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIFtjYXRlZ29yeUF4aXNdPVwib3B0aW9ucy5jYXRlZ29yeUF4aXNcIlxyXG4gICAgICAgICAgICAgICBbcGFuZXNdPVwib3B0aW9ucy5wYW5lc1wiXHJcbiAgICAgICAgICAgICAgIChzZWxlY3RFbmQpPVwib25TZWxlY3RFbmQoJGV2ZW50KVwiIFt0cmFuc2l0aW9uc109XCJvcHRpb25zLnRyYW5zaXRpb25zXCJcclxuICAgICAgICAgICAgICAgKGF4aXNMYWJlbENsaWNrKT1cIm9uQXhpc0xhYmVsQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChsZWdlbmRJdGVtQ2xpY2spPVwib25MZWdlbmRJdGVtQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChsZWdlbmRJdGVtSG92ZXIpPVwib25MZWdlbmRJdGVtSG92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIChwbG90QXJlYUNsaWNrKT1cIm9uUGxvdEFyZWFDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKHBsb3RBcmVhSG92ZXIpPVwib25QbG90QXJlYUhvdmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAoc2VyaWVzQ2xpY2spPVwib25TZXJpZXNDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKHNlcmllc0hvdmVyKT1cIm9uU2VyaWVzSG92ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8a2VuZG8tY2hhcnQtdGl0bGUgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCIgW3RleHRdPVwib3B0aW9ucy50aXRsZVwiIGNsYXNzPVwiZTF0YWctc3R5bGUyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+PC9rZW5kby1jaGFydC10aXRsZT5cclxuICAgIDxrZW5kby1jaGFydC1sZWdlbmQgW3Bvc2l0aW9uXT1cIm9wdGlvbnMubGVnZW5kUG9zaXRpb25cIiBbc3BhY2luZ109XCJvcHRpb25zLmxlZ2VuZFNwYWNpbmdcIiBbb3JpZW50YXRpb25dPVwib3B0aW9ucy5sZWdlbmRPcmllbnRhdGlvblwiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCI+PC9rZW5kby1jaGFydC1sZWdlbmQ+XHJcbiAgICA8a2VuZG8tY2hhcnQtdG9vbHRpcCBbZm9ybWF0XT1cIm9wdGlvbnMudG9vbHRpcEZvcm1hdFwiIGNsYXNzPVwiZTF0YWctc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+PC9rZW5kby1jaGFydC10b29sdGlwPlxyXG4gICAgPGtlbmRvLWNoYXJ0LXZhbHVlLWF4aXM+XHJcbiAgICAgIDxrZW5kby1jaGFydC12YWx1ZS1heGlzLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucy52YWx1ZUF4aXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0udGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiaXRlbS5taW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwiaXRlbS5tYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWpvclVuaXRdPVwiaXRlbS5tYWpvclVuaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJpdGVtLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFuZV09XCJpdGVtLnBhbmVcIj5cclxuICAgICAgPC9rZW5kby1jaGFydC12YWx1ZS1heGlzLWl0ZW0+XHJcbiAgICA8L2tlbmRvLWNoYXJ0LXZhbHVlLWF4aXM+XHJcbiAgICA8a2VuZG8tY2hhcnQtc2VyaWVzIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+XHJcbiAgICAgIDxrZW5kby1jaGFydC1zZXJpZXMtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zLnNlcmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWdncmVnYXRlXT1cIm9wdGlvbnMuYWdncmVnYXRlVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJpdGVtLnR5cGUgPz8gb3B0aW9ucy5kYXRhVHlwZVwiIFtzdHlsZV09XCJpdGVtLnN0eWxlID8/IG9wdGlvbnMuZGF0YVN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJpdGVtLmNvbG9yID8/IG9wdGlvbnMuY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsc109XCJpdGVtLmxhYmVscyA/PyBvcHRpb25zLmxhYmVsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiaXRlbS5kYXRhRmllbGQgPz8gb3B0aW9ucy5kYXRhRmllbGRcIiBbY2F0ZWdvcnlGaWVsZF09XCJpdGVtLmNhdGVnb3J5RmllbGQgPz8gb3B0aW9ucy5jYXRlZ29yeUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW0uZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhY2tdPVwiaXRlbS5zdGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F4aXNdPVwiaXRlbS5heGlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrZXJzXT1cIml0ZW0ubWFya2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVnZW5kSXRlbV09XCJpdGVtLmxlZ2VuZEl0ZW1cIj5cclxuICAgICAgICA8a2VuZG8tY2hhcnQtc2VyaWVzLWl0ZW0tbGFiZWxzIFt2aXNpYmxlXT1cIml0ZW0ubGFiZWxzLnZpc2libGVcIiBbdmlzdWFsXT1cImxhYmVsVmlzdWFsXCI+XHJcbiAgICAgICAgPC9rZW5kby1jaGFydC1zZXJpZXMtaXRlbS1sYWJlbHM+XHJcbiAgICAgICAgPGtlbmRvLWNoYXJ0LXNlcmllcy1pdGVtLXRvb2x0aXAga2VuZG9DaGFydFNlcmllc1Rvb2x0aXBUZW1wbGF0ZSAqbmdJZj1cIm9wdGlvbnMuY3VzdG9tVG9vbHRpcEZ1bmNcIiBbYmFja2dyb3VuZF09XCJvcHRpb25zLmN1c3RvbVRvb2x0aXBPcHRpb25zLmJhY2tncm91bmRcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1jYXRlZ29yeT1cImNhdGVnb3J5XCIgbGV0LXNlcmllcz1cInNlcmllc1wiIGxldC1kYXRhSXRlbT1cImRhdGFJdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUb29sVGlwKHZhbHVlLCBjYXRlZ29yeSwgc2VyaWVzLCBkYXRhSXRlbSkgfCBodG1sU2FuaXRpemVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNlwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNlwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2tlbmRvLWNoYXJ0LXNlcmllcy1pdGVtLXRvb2x0aXA+XHJcbiAgICAgIDwva2VuZG8tY2hhcnQtc2VyaWVzLWl0ZW0+XHJcbiAgICAgIDxrZW5kby1jaGFydC1zZXJpZXMtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zLm5hdmlnYXRvckF4aXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaXRlbS50eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJpdGVtLnN0eWxlID8/IG9wdGlvbnMuZGF0YVN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW0uZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXhpc109XCJpdGVtLmF4aXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhdGVnb3J5QXhpc109XCJpdGVtLmNhdGVnb3J5QXhpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxzXT1cIml0ZW0ubGFiZWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJpdGVtLmNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgPC9rZW5kby1jaGFydC1zZXJpZXMtaXRlbT5cclxuICAgIDwva2VuZG8tY2hhcnQtc2VyaWVzPlxyXG4gIDwva2VuZG8tY2hhcnQ+XHJcblxyXG48L2Rpdj5cclxuIl19
|