axidio-styleguide-library1-v2 0.2.20 → 0.2.22
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.
|
@@ -11,6 +11,7 @@ import * as i4 from "../chart-header-v2/chart-header-v2.component";
|
|
|
11
11
|
export class GuageChartComponent extends ComponentUniqueId {
|
|
12
12
|
constructor() {
|
|
13
13
|
super();
|
|
14
|
+
this.customChartConfiguration = {};
|
|
14
15
|
this.clickEvent = new EventEmitter();
|
|
15
16
|
this.headerMenuclickEvent = new EventEmitter();
|
|
16
17
|
this.chartConfiguration = {};
|
|
@@ -18,6 +19,9 @@ export class GuageChartComponent extends ComponentUniqueId {
|
|
|
18
19
|
this.datatype_status = false;
|
|
19
20
|
this.uniqueId = this.getUniqueId();
|
|
20
21
|
this.isHeaderVisible = true;
|
|
22
|
+
this.CHART_HEADER_HEIGHT = 56;
|
|
23
|
+
this.LARGE_SCREEN_WIDTH = 1400;
|
|
24
|
+
this.XLARGE_SCREEN_WIDTH = 1500;
|
|
21
25
|
this.defaultConfiguration = {
|
|
22
26
|
margin: { top: 40, right: 20, bottom: 20, left: 20 },
|
|
23
27
|
minAngle: -90,
|
|
@@ -49,333 +53,277 @@ export class GuageChartComponent extends ComponentUniqueId {
|
|
|
49
53
|
};
|
|
50
54
|
}
|
|
51
55
|
get isAlertEnabled() {
|
|
52
|
-
return this.chartConfiguration?.headerMenuOptions?.some(option => option.id === 'editAlert');
|
|
56
|
+
return this.chartConfiguration?.headerMenuOptions?.some((option) => option.id === 'editAlert') ?? false;
|
|
53
57
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
this.initializeChart();
|
|
60
|
+
}
|
|
61
|
+
ngOnChanges(changes) {
|
|
62
|
+
if (changes['chartData'] || changes['customChartConfiguration']) {
|
|
63
|
+
this.removeExistingChart();
|
|
64
|
+
this.initializeChart();
|
|
65
|
+
}
|
|
58
66
|
}
|
|
59
67
|
onResized(event) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this.initializeLineChart();
|
|
68
|
+
this.removeExistingChart();
|
|
69
|
+
this.initializeChart();
|
|
63
70
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
71
|
+
removeExistingChart() {
|
|
72
|
+
d3.select(`#${this.uniqueId}`).remove();
|
|
73
|
+
}
|
|
74
|
+
initializeChart() {
|
|
75
|
+
if (!this.chartData)
|
|
76
|
+
return;
|
|
77
|
+
this.mergeConfiguration();
|
|
78
|
+
this.setupDataType();
|
|
79
|
+
const { data, metaData } = this.chartData;
|
|
80
|
+
const colorMaps = this.getColorMaps(metaData.colorType);
|
|
81
|
+
const dataSegments = this.calculateDataSegments(data);
|
|
82
|
+
const angleValues = this.calculateAngles(dataSegments);
|
|
83
|
+
const dimensions = this.calculateDimensions();
|
|
84
|
+
const svg = this.createSVG(dimensions);
|
|
85
|
+
const radius = Math.min(dimensions.width, dimensions.height) / 2;
|
|
86
|
+
this.adjustScaleFactors(radius);
|
|
87
|
+
const labelArray = this.createLabelArray(data, dataSegments);
|
|
88
|
+
this.renderArcs(svg, dataSegments, angleValues, colorMaps, metaData, radius);
|
|
89
|
+
this.renderPointer(svg, data, metaData, radius);
|
|
90
|
+
this.renderLabels(svg, labelArray, data, metaData, radius);
|
|
91
|
+
this.renderCenterTexts(svg, metaData, radius, dimensions);
|
|
92
|
+
this.centerSVG(svg, dimensions);
|
|
93
|
+
}
|
|
94
|
+
mergeConfiguration() {
|
|
95
|
+
Object.keys(this.defaultConfiguration).forEach((key) => {
|
|
96
|
+
this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(key, this.defaultConfiguration, this.customChartConfiguration);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
setupDataType() {
|
|
100
|
+
const dataType = this.chartData.metaData.dataType;
|
|
101
|
+
if (dataType) {
|
|
102
|
+
this.dataType = dataType === 'USD' ? '$ ' : dataType;
|
|
103
|
+
this.datatype_status = dataType === 'USD';
|
|
93
104
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
}
|
|
106
|
+
getColorMaps(colorType) {
|
|
107
|
+
return colorType === 'low'
|
|
108
|
+
? this.chartConfiguration.low_colorMap
|
|
109
|
+
: this.chartConfiguration.high_colorMap;
|
|
110
|
+
}
|
|
111
|
+
calculateDataSegments(data) {
|
|
112
|
+
return data.slice(0, -1).map((value, i) => data[i + 1] - value);
|
|
113
|
+
}
|
|
114
|
+
calculateAngles(dataSegments) {
|
|
115
|
+
const total = dataSegments.reduce((sum, value) => sum + value, 0);
|
|
116
|
+
const angles = [];
|
|
117
|
+
dataSegments.forEach((segment, i) => {
|
|
118
|
+
const angle = (segment / total) * 180;
|
|
119
|
+
angles.push(i === 0 ? angle : angles[i - 1] + angle);
|
|
99
120
|
});
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (this.chartConfiguration.isHeaderVisible
|
|
121
|
+
return angles;
|
|
122
|
+
}
|
|
123
|
+
calculateDimensions() {
|
|
124
|
+
const chartContainer = d3.select(this.containerElt.nativeElement);
|
|
125
|
+
const guageContainer = d3.select(this.guagecontainerElt.nativeElement);
|
|
126
|
+
const margin = this.chartConfiguration.margin;
|
|
127
|
+
const width = parseInt(chartContainer.style('width')) - margin.left - margin.right;
|
|
128
|
+
const height = parseInt(guageContainer.style('height')) - margin.top - margin.bottom - this.CHART_HEADER_HEIGHT;
|
|
129
|
+
if (this.chartConfiguration.isHeaderVisible !== undefined) {
|
|
109
130
|
this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;
|
|
110
|
-
|
|
131
|
+
}
|
|
132
|
+
return { width, height, margin, chartContainer };
|
|
133
|
+
}
|
|
134
|
+
createSVG(dimensions) {
|
|
135
|
+
const { width, height, margin, chartContainer } = dimensions;
|
|
136
|
+
return chartContainer
|
|
111
137
|
.append('svg')
|
|
112
|
-
.attr('id',
|
|
138
|
+
.attr('id', this.uniqueId)
|
|
113
139
|
.attr('width', width + margin.left + margin.right)
|
|
114
140
|
.attr('height', height + margin.top + margin.bottom)
|
|
115
141
|
.call(ChartHelper.responsivefy)
|
|
116
142
|
.append('g');
|
|
117
|
-
|
|
143
|
+
}
|
|
144
|
+
adjustScaleFactors(radius) {
|
|
118
145
|
if (this.chartConfiguration.isDrilldownChart) {
|
|
119
146
|
this.chartConfiguration.currentValueWidthScaleFactor += 40;
|
|
120
147
|
this.chartConfiguration.currentValueHeightScaleFactor += 20;
|
|
121
148
|
}
|
|
122
|
-
else {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.chartConfiguration.currentValueWidthScaleFactor *= 2;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
let topTextPosition = radius / 2 - 10;
|
|
129
|
-
let midTextPosition = topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
|
|
130
|
-
let bottomTextPosition = midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
|
|
131
|
-
var data_length = data.length;
|
|
132
|
-
function deg2rad(deg) {
|
|
133
|
-
return (deg * Math.PI) / 180;
|
|
149
|
+
else if (window.innerWidth > this.LARGE_SCREEN_WIDTH) {
|
|
150
|
+
this.chartConfiguration.currentValueHeightScaleFactor += 15;
|
|
151
|
+
this.chartConfiguration.currentValueWidthScaleFactor *= 2;
|
|
134
152
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (i === 0) {
|
|
143
|
-
tempArray.push(angle);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
let currentAngle = tempArray[i - 1] + angle;
|
|
147
|
-
tempArray.push(currentAngle);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
angleValue = tempArray;
|
|
151
|
-
var arc = d3
|
|
152
|
-
.arc()
|
|
153
|
-
.innerRadius(radius -
|
|
154
|
-
self.chartConfiguration.ringWidth -
|
|
155
|
-
self.chartConfiguration.ringInset)
|
|
156
|
-
.outerRadius(radius)
|
|
157
|
-
.startAngle(function (d, i) {
|
|
158
|
-
var ratio;
|
|
159
|
-
if (i === 0) {
|
|
160
|
-
ratio = self.chartConfiguration.minAngle;
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
ratio = self.chartConfiguration.minAngle + angleValue[i - 1];
|
|
164
|
-
}
|
|
165
|
-
return deg2rad(ratio);
|
|
166
|
-
})
|
|
167
|
-
.endAngle(function (d, i) {
|
|
168
|
-
var ratio;
|
|
169
|
-
if (i === data_ready.length - 1) {
|
|
170
|
-
ratio = self.chartConfiguration.maxAngle;
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
ratio = self.chartConfiguration.minAngle + angleValue[i];
|
|
174
|
-
}
|
|
175
|
-
return deg2rad(ratio);
|
|
176
|
-
});
|
|
177
|
-
function centerTranslation() {
|
|
178
|
-
return 'translate(' + radius + ',' + radius + ')';
|
|
179
|
-
}
|
|
180
|
-
var centerTx = centerTranslation();
|
|
181
|
-
var tickData = d3
|
|
182
|
-
.range(self.chartConfiguration.majorTicks)
|
|
183
|
-
.map(function (i) {
|
|
184
|
-
return 1 / self.chartConfiguration.majorTicks;
|
|
153
|
+
}
|
|
154
|
+
createLabelArray(data, dataSegments) {
|
|
155
|
+
const labelArray = [{ name: data[0], value: 0 }];
|
|
156
|
+
let cumulative = 0;
|
|
157
|
+
dataSegments.forEach((segment, i) => {
|
|
158
|
+
cumulative += segment;
|
|
159
|
+
labelArray.push({ name: data[i + 1], value: cumulative });
|
|
185
160
|
});
|
|
186
|
-
|
|
161
|
+
return labelArray;
|
|
162
|
+
}
|
|
163
|
+
renderArcs(svg, dataSegments, angleValues, colorMaps, metaData, radius) {
|
|
164
|
+
const isRia = this.customChartConfiguration.isRia;
|
|
165
|
+
const centerTx = this.getCenterTranslation(radius);
|
|
166
|
+
const arc = this.createArcGenerator(dataSegments, angleValues, radius);
|
|
167
|
+
const arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);
|
|
187
168
|
arcs
|
|
188
169
|
.selectAll('path')
|
|
189
|
-
.data(
|
|
170
|
+
.data(dataSegments)
|
|
190
171
|
.enter()
|
|
191
172
|
.append('path')
|
|
192
|
-
.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
.attr('fill', function (d, i) {
|
|
200
|
-
return colorMaps[i];
|
|
173
|
+
.attr('fill', (d, i) => colorMaps[i])
|
|
174
|
+
.attr('id', (d, i) => colorMaps[i])
|
|
175
|
+
.attr('d', arc)
|
|
176
|
+
.style('cursor', () => {
|
|
177
|
+
return metaData.currentValue > 0 && metaData.hasDrillDown && !isRia
|
|
178
|
+
? 'pointer'
|
|
179
|
+
: 'default';
|
|
201
180
|
})
|
|
202
|
-
.
|
|
203
|
-
|
|
181
|
+
.on('click', (event, d) => {
|
|
182
|
+
if (!metaData.hasDrillDown || metaData.currentValue === 0)
|
|
183
|
+
return;
|
|
184
|
+
this.handleClick(this.getRange(this.chartData.data));
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
createArcGenerator(dataSegments, angleValues, radius) {
|
|
188
|
+
return d3
|
|
189
|
+
.arc()
|
|
190
|
+
.innerRadius(radius - this.chartConfiguration.ringWidth - this.chartConfiguration.ringInset)
|
|
191
|
+
.outerRadius(radius)
|
|
192
|
+
.startAngle((d, i) => {
|
|
193
|
+
const ratio = i === 0
|
|
194
|
+
? this.chartConfiguration.minAngle
|
|
195
|
+
: this.chartConfiguration.minAngle + angleValues[i - 1];
|
|
196
|
+
return this.deg2rad(ratio);
|
|
204
197
|
})
|
|
205
|
-
.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
else
|
|
211
|
-
return 'default';
|
|
198
|
+
.endAngle((d, i) => {
|
|
199
|
+
const ratio = i === dataSegments.length - 1
|
|
200
|
+
? this.chartConfiguration.maxAngle
|
|
201
|
+
: this.chartConfiguration.minAngle + angleValues[i];
|
|
202
|
+
return this.deg2rad(ratio);
|
|
212
203
|
});
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
[self.chartConfiguration.pointerWidth / 2, 0],
|
|
204
|
+
}
|
|
205
|
+
renderPointer(svg, data, metaData, radius) {
|
|
206
|
+
const centerTx = this.getCenterTranslation(radius);
|
|
207
|
+
const pointerHeadLength = Math.round(radius * this.chartConfiguration.pointerHeadLengthPercent);
|
|
208
|
+
const lineData = [
|
|
209
|
+
[this.chartConfiguration.pointerWidth / 2, 0],
|
|
220
210
|
[0, -pointerHeadLength],
|
|
221
|
-
[-(
|
|
222
|
-
[0,
|
|
223
|
-
[
|
|
211
|
+
[-(this.chartConfiguration.pointerWidth / 2), 0],
|
|
212
|
+
[0, this.chartConfiguration.pointerTailLength],
|
|
213
|
+
[this.chartConfiguration.pointerWidth / 2, 0],
|
|
224
214
|
];
|
|
225
|
-
|
|
226
|
-
|
|
215
|
+
const pointerLine = d3.line();
|
|
216
|
+
const pg = svg
|
|
227
217
|
.append('g')
|
|
228
218
|
.data([lineData])
|
|
229
219
|
.attr('class', 'pointer')
|
|
230
220
|
.attr('transform', centerTx);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
221
|
+
const range = data[data.length - 1] - data[0];
|
|
222
|
+
const pointerValue = metaData.currentValue - data[0];
|
|
223
|
+
const pointerAngle = this.chartConfiguration.minAngle + (pointerValue / range) * 180;
|
|
234
224
|
pg.append('path')
|
|
235
225
|
.attr('d', pointerLine)
|
|
236
|
-
.attr('fill',
|
|
237
|
-
.attr('transform',
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
let labelArrayTemp = [{ name: data[0], value: 0 }];
|
|
244
|
-
let count = 0;
|
|
245
|
-
data_ready.map(function (dataUnit, i) {
|
|
246
|
-
count += dataUnit;
|
|
247
|
-
let temp = { name: data[i + 1], value: count };
|
|
248
|
-
labelArrayTemp.push(temp);
|
|
249
|
-
});
|
|
250
|
-
labelArray = labelArrayTemp;
|
|
226
|
+
.attr('fill', this.chartConfiguration.pointerColor)
|
|
227
|
+
.attr('transform', `rotate(${pointerAngle}) translate(0, ${-radius + this.chartConfiguration.ringWidth + pointerHeadLength})`);
|
|
228
|
+
}
|
|
229
|
+
renderLabels(svg, labelArray, data, metaData, radius) {
|
|
230
|
+
const centerTx = this.getCenterTranslation(radius);
|
|
231
|
+
const range = data[data.length - 1] - data[0];
|
|
232
|
+
const lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);
|
|
251
233
|
lg.selectAll('.bubble')
|
|
252
234
|
.data(labelArray)
|
|
253
235
|
.enter()
|
|
254
236
|
.append('g')
|
|
255
|
-
.attr('transform',
|
|
256
|
-
|
|
257
|
-
return
|
|
258
|
-
newAngle +
|
|
259
|
-
') translate(0,' +
|
|
260
|
-
(self.chartConfiguration.labelInset - radius - 20) +
|
|
261
|
-
')');
|
|
237
|
+
.attr('transform', (d) => {
|
|
238
|
+
const newAngle = this.chartConfiguration.minAngle + (d.value / range) * 180;
|
|
239
|
+
return `rotate(${newAngle}) translate(0, ${this.chartConfiguration.labelInset - radius - 20})`;
|
|
262
240
|
})
|
|
263
241
|
.append('g')
|
|
264
|
-
.attr('transform',
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
242
|
+
.attr('transform', (d, i) => {
|
|
243
|
+
const newAngle = this.chartConfiguration.minAngle + (d.value / range) * 180;
|
|
244
|
+
let xOffset = -17;
|
|
245
|
+
if (i === 0 && this.chartConfiguration.isValueLableAdjust) {
|
|
246
|
+
xOffset = -27;
|
|
268
247
|
}
|
|
269
|
-
if (i
|
|
270
|
-
|
|
271
|
-
return 'rotate(' + (0 - newAngle) + ') translate(-15,0)';
|
|
248
|
+
else if (i === labelArray.length - 1 && this.chartConfiguration.isValueLableAdjust) {
|
|
249
|
+
xOffset = -15;
|
|
272
250
|
}
|
|
273
|
-
return
|
|
251
|
+
return `rotate(${-newAngle}) translate(${xOffset}, 0)`;
|
|
274
252
|
})
|
|
275
253
|
.append('text')
|
|
276
|
-
.attr('style',
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
else
|
|
280
|
-
return 'font-size: ' + '14px' + '; font-weight:' + '600;';
|
|
254
|
+
.attr('style', () => {
|
|
255
|
+
const fontSize = window.innerWidth < this.LARGE_SCREEN_WIDTH ? '12px' : '14px';
|
|
256
|
+
return `font-size: ${fontSize}; font-weight: 600;`;
|
|
281
257
|
})
|
|
282
258
|
.attr('fill', 'var(--chart-text-color)')
|
|
283
|
-
.text(
|
|
284
|
-
|
|
285
|
-
return d.name + metaData.dataType;
|
|
286
|
-
}
|
|
287
|
-
return d.name;
|
|
259
|
+
.text((d) => {
|
|
260
|
+
return metaData.dataType ? `${d.name}${metaData.dataType}` : d.name;
|
|
288
261
|
});
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
.attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
|
|
298
|
-
.append('xhtml:div')
|
|
299
|
-
.attr('class', 'value-display')
|
|
300
|
-
.style('height', this.chartConfiguration.currentValueHeightScaleFactor + 10 + 'px')
|
|
301
|
-
.style('font-size', function () {
|
|
302
|
-
if (window.innerWidth > 1500) {
|
|
303
|
-
self.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px';
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
self.chartConfiguration.currentValueHeightScaleFactor - 15 + 'px';
|
|
307
|
-
}
|
|
308
|
-
})
|
|
309
|
-
.html(metaData.currentValue + metaData.dataType);
|
|
262
|
+
}
|
|
263
|
+
renderCenterTexts(svg, metaData, radius, dimensions) {
|
|
264
|
+
const topTextPosition = radius / 2 - 10;
|
|
265
|
+
const midTextPosition = topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
|
|
266
|
+
const bottomTextPosition = midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
|
|
267
|
+
// Current Value
|
|
268
|
+
this.addForeignObject(svg, radius - this.chartConfiguration.currentValueWidthScaleFactor / 2, topTextPosition, this.chartConfiguration.currentValueWidthScaleFactor + 8, this.chartConfiguration.currentValueHeightScaleFactor, 'value-display', `${metaData.currentValue}${metaData.dataType || ''}`);
|
|
269
|
+
// Status
|
|
310
270
|
if (metaData.status) {
|
|
311
|
-
|
|
312
|
-
svg
|
|
313
|
-
.append('foreignObject')
|
|
314
|
-
.attr('transform', 'translate(' + (radius - widthTemp / 2) + ',' + midTextPosition + ')')
|
|
315
|
-
.attr('width', widthTemp)
|
|
316
|
-
.attr('height', this.chartConfiguration.currentValueHeightScaleFactor + 10)
|
|
317
|
-
.append('xhtml:div')
|
|
318
|
-
.attr('class', 'status-display')
|
|
319
|
-
.style('font-size', this.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px')
|
|
320
|
-
.html(metaData.status);
|
|
271
|
+
const statusWidth = metaData.status.length > 4 ? 210 : 120;
|
|
272
|
+
this.addForeignObject(svg, radius - statusWidth / 2, midTextPosition, statusWidth, this.chartConfiguration.currentValueHeightScaleFactor + 10, 'status-display', metaData.status);
|
|
321
273
|
}
|
|
274
|
+
// Date Range
|
|
275
|
+
const dateRangeHtml = metaData.dateRange
|
|
276
|
+
? `<span class="marginright-3"><i class="fa fa-calendar"></i></span><span>${metaData.dateRange}</span>`
|
|
277
|
+
: '';
|
|
278
|
+
this.addForeignObject(svg, radius - 105, bottomTextPosition, 210, this.chartConfiguration.currentValueHeightScaleFactor, 'daterange-display', dateRangeHtml);
|
|
279
|
+
}
|
|
280
|
+
addForeignObject(svg, x, y, width, height, className, content) {
|
|
281
|
+
const fontSize = this.getFontSize();
|
|
322
282
|
svg
|
|
323
283
|
.append('foreignObject')
|
|
324
|
-
.attr('transform',
|
|
325
|
-
.attr('width',
|
|
326
|
-
.attr('height',
|
|
284
|
+
.attr('transform', `translate(${x}, ${y})`)
|
|
285
|
+
.attr('width', width)
|
|
286
|
+
.attr('height', height)
|
|
327
287
|
.append('xhtml:div')
|
|
328
|
-
.attr('class',
|
|
329
|
-
.style('
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
})
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
'</span>');
|
|
355
|
-
else
|
|
356
|
-
return '';
|
|
357
|
-
});
|
|
358
|
-
var containerMidWidth = parseInt(chartContainer.style('width')) / 2;
|
|
359
|
-
var nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;
|
|
360
|
-
var updatedStartingPoint = containerMidWidth - nodeHalfWidth;
|
|
361
|
-
svg.attr('transform', 'translate(' +
|
|
362
|
-
(updatedStartingPoint + margin.left) +
|
|
363
|
-
',' +
|
|
364
|
-
margin.top +
|
|
365
|
-
')');
|
|
288
|
+
.attr('class', className)
|
|
289
|
+
.style('height', `${height + 10}px`)
|
|
290
|
+
.style('font-size', fontSize)
|
|
291
|
+
.html(content);
|
|
292
|
+
}
|
|
293
|
+
getFontSize() {
|
|
294
|
+
if (this.chartConfiguration.isDrilldownChart) {
|
|
295
|
+
return window.innerWidth < this.LARGE_SCREEN_WIDTH ? '14px' : '18px';
|
|
296
|
+
}
|
|
297
|
+
return window.innerWidth < this.LARGE_SCREEN_WIDTH ? '14px' : '18px';
|
|
298
|
+
}
|
|
299
|
+
centerSVG(svg, dimensions) {
|
|
300
|
+
const { margin, chartContainer } = dimensions;
|
|
301
|
+
const containerMidWidth = parseInt(chartContainer.style('width')) / 2;
|
|
302
|
+
const nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;
|
|
303
|
+
const updatedStartingPoint = containerMidWidth - nodeHalfWidth;
|
|
304
|
+
svg.attr('transform', `translate(${updatedStartingPoint + margin.left}, ${margin.top})`);
|
|
305
|
+
}
|
|
306
|
+
getCenterTranslation(radius) {
|
|
307
|
+
return `translate(${radius}, ${radius})`;
|
|
308
|
+
}
|
|
309
|
+
deg2rad(deg) {
|
|
310
|
+
return (deg * Math.PI) / 180;
|
|
311
|
+
}
|
|
312
|
+
getRange(data) {
|
|
313
|
+
return `${data[0]} and ${data[data.length - 1]}`;
|
|
366
314
|
}
|
|
367
|
-
handleClick(
|
|
368
|
-
this.clickEvent.emit(
|
|
315
|
+
handleClick(range) {
|
|
316
|
+
this.clickEvent.emit(range);
|
|
369
317
|
}
|
|
370
318
|
handleHeaderMenuClick(id) {
|
|
371
319
|
this.headerMenuclickEvent.emit(id);
|
|
372
320
|
}
|
|
373
321
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GuageChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
374
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GuageChartComponent, selector: "lib-guage-chart", inputs: { chartData: "chartData", customChartConfiguration: "customChartConfiguration" }, outputs: { clickEvent: "clickEvent", headerMenuclickEvent: "headerMenuclickEvent" }, viewQueries: [{ propertyName: "containerElt", first: true, predicate: ["guagechartcontainer"], descendants: true, static: true }, { propertyName: "guagecontainerElt", first: true, predicate: ["guagecontainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: i3.ChartHeaderV1Component, selector: "lib-chart-header-v1", inputs: ["isAlertEnabled", "title", "menuOptions", "isEditEnabled", "isria", "hasDrillDown", "selectedKpiTooltop"], outputs: ["menuOptionClickEvent"] }, { kind: "component", type: i4.ChartHeaderV2Component, selector: "lib-chart-header-v2", inputs: ["chartData", "chartConfiguration"], outputs: ["clickEvent", "zoomInZoomOutClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
322
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GuageChartComponent, selector: "lib-guage-chart", inputs: { chartData: "chartData", customChartConfiguration: "customChartConfiguration" }, outputs: { clickEvent: "clickEvent", headerMenuclickEvent: "headerMenuclickEvent" }, viewQueries: [{ propertyName: "containerElt", first: true, predicate: ["guagechartcontainer"], descendants: true, static: true }, { propertyName: "guagecontainerElt", first: true, predicate: ["guagecontainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #guagecontainer class=\"lib-chart-wrapper\" \r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n \r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 \r\n [chartData]=\"chartData\" \r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\">\r\n </lib-chart-header-v2>\r\n </div>\r\n \r\n <lib-chart-header-v1 \r\n *ngIf=\"isHeaderVisible\"\r\n [title]=\"chartData.metaData.title\" \r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" \r\n [isria]=\"customChartConfiguration.isRia\" \r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" \r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\">\r\n </lib-chart-header-v1>\r\n \r\n <div #guagechartcontainer\r\n id=\"guagechartcontainer\"\r\n class=\"lib-chart-svg guagecontainer\"\r\n [style.height.%]=\"chartConfiguration.svgHeight\">\r\n </div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: i3.ChartHeaderV1Component, selector: "lib-chart-header-v1", inputs: ["isAlertEnabled", "title", "menuOptions", "isEditEnabled", "isria", "hasDrillDown", "selectedKpiTooltop"], outputs: ["menuOptionClickEvent"] }, { kind: "component", type: i4.ChartHeaderV2Component, selector: "lib-chart-header-v2", inputs: ["chartData", "chartConfiguration"], outputs: ["clickEvent", "zoomInZoomOutClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
375
323
|
}
|
|
376
324
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GuageChartComponent, decorators: [{
|
|
377
325
|
type: Component,
|
|
378
|
-
args: [{ selector: 'lib-guage-chart', encapsulation: ViewEncapsulation.None, template: "<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"] }]
|
|
326
|
+
args: [{ selector: 'lib-guage-chart', encapsulation: ViewEncapsulation.None, template: "<div #guagecontainer class=\"lib-chart-wrapper\" \r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n \r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 \r\n [chartData]=\"chartData\" \r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\">\r\n </lib-chart-header-v2>\r\n </div>\r\n \r\n <lib-chart-header-v1 \r\n *ngIf=\"isHeaderVisible\"\r\n [title]=\"chartData.metaData.title\" \r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" \r\n [isria]=\"customChartConfiguration.isRia\" \r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" \r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\">\r\n </lib-chart-header-v1>\r\n \r\n <div #guagechartcontainer\r\n id=\"guagechartcontainer\"\r\n class=\"lib-chart-svg guagecontainer\"\r\n [style.height.%]=\"chartConfiguration.svgHeight\">\r\n </div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"] }]
|
|
379
327
|
}], ctorParameters: () => [], propDecorators: { containerElt: [{
|
|
380
328
|
type: ViewChild,
|
|
381
329
|
args: ['guagechartcontainer', { static: true }]
|
|
@@ -391,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
391
339
|
}], headerMenuclickEvent: [{
|
|
392
340
|
type: Output
|
|
393
341
|
}] } });
|
|
394
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhZ2UtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2d1YWdlLWNoYXJ0L2d1YWdlLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9ndWFnZS1jaGFydC9ndWFnZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sa0JBQWtCLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQVFsRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBK0N4RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBdkNBLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekQsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsYUFBUSxHQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUVoQyx5QkFBb0IsR0FBUTtZQUMxQixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVB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WCxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbEQsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHcEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRVbmlxdWVJZCB9IGZyb20gJy4uL3VuaXF1ZS1pZCc7XHJcbmltcG9ydCBDaGFydEhlbHBlciBmcm9tICcuLi9jaGFydC1oZWxwZXInO1xyXG5pbXBvcnQgeyBSZXNpemVkRXZlbnQgfSBmcm9tICdhbmd1bGFyLXJlc2l6ZS1ldmVudCc7XHJcbmltcG9ydCBIZWFkZXJDb25maWdIZWxwZXIgZnJvbSAnLi4vaGVhZGVyLWNvbmZpZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1ndWFnZS1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2d1YWdlLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ndWFnZS1jaGFydC5jb21wb25lbnQubGVzcycsICcuLi9jb21tb24tc3R5bGVzLmxlc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3VhZ2VDaGFydENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFVuaXF1ZUlkIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdndWFnZWNoYXJ0Y29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBjb250YWluZXJFbHQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdndWFnZWNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZ3VhZ2Vjb250YWluZXJFbHQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSBjaGFydERhdGE6IGFueTtcclxuICBASW5wdXQoKSBjdXN0b21DaGFydENvbmZpZ3VyYXRpb246IGFueTtcclxuICBAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBoZWFkZXJNZW51Y2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIGNoYXJ0Q29uZmlndXJhdGlvbjogYW55ID0ge307XHJcbiAgZGF0YVR5cGU6IGFueSA9ICcnO1xyXG4gIGRhdGF0eXBlX3N0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVuaXF1ZUlkOiBhbnkgPSB0aGlzLmdldFVuaXF1ZUlkKCk7XHJcbiAgaXNIZWFkZXJWaXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgZGVmYXVsdENvbmZpZ3VyYXRpb246IGFueSA9IHtcclxuICAgIG1hcmdpbjogeyB0b3A6IDQwLCByaWdodDogMjAsIGJvdHRvbTogMjAsIGxlZnQ6IDIwIH0sXHJcbiAgICBtaW5BbmdsZTogLTkwLFxyXG4gICAgbWF4QW5nbGU6IDkwLFxyXG4gICAgcmluZ0luc2V0OiAyMCxcclxuICAgIHJpbmdXaWR0aDogMjAsXHJcbiAgICBtYWpvclRpY2tzOiAzLFxyXG4gICAgc3ZnSGVpZ2h0OiA4MCxcclxuICAgIGxvd19jb2xvck1hcDogWycjNDNDQzAwJywgJyNGRkVGMEMnLCAnI0ZGNEUwQyddLFxyXG4gICAgaGlnaF9jb2xvck1hcDogWycjRkY0RTBDJywgJyNGRkVGMEMnLCAnIzQzQ0MwMCddLFxyXG4gICAgaXNIZWFkZXJWaXNpYmxlOiB1bmRlZmluZWQsXHJcbiAgICBwb2ludGVyV2lkdGg6IDEwLFxyXG4gICAgcG9pbnRlclRhaWxMZW5ndGg6IDUsXHJcbiAgICBwb2ludGVySGVhZExlbmd0aFBlcmNlbnQ6IDAuNyxcclxuICAgIGxhYmVsSW5zZXQ6IDEwLFxyXG4gICAgbGVnZW5kSnVzdGlmaWVkOiBmYWxzZSxcclxuICAgIGJhY2tncm91bmRDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgaXNEcmlsbGRvd25DaGFydDogdW5kZWZpbmVkLFxyXG4gICAgcmluZ1NjYWxlRmFjdG9yOiAwLFxyXG4gICAgdGV4dHNBdENlbnRlclNjYWxlRmFjdG9yOiAwLFxyXG4gICAgY3VycmVudFZhbHVlV2lkdGhTY2FsZUZhY3RvcjogNjAsXHJcbiAgICBjdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvcjogMzAsXHJcbiAgICBwb2ludGVyQ29sb3I6ICcjNjg2ODY4JyxcclxuICAgIGlzVG9nZ2xlVmlzaWJsZTogdW5kZWZpbmVkLFxyXG4gICAgc2VsZWN0ZWRLcGlUb29sdG9wOiB1bmRlZmluZWQsXHJcbiAgICBpc1ZhbHVlTGFibGVBZGp1c3Q6IHVuZGVmaW5lZCxcclxuICAgIGlzVGl0bGVIaWRkZW46IHVuZGVmaW5lZCxcclxuICAgIGhlYWRlck1lbnVPcHRpb25zOiBIZWFkZXJDb25maWdIZWxwZXIuaGVhZGVyQ29uZmlnLmhlYWRlck1lbnVPcHRpb25zLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0FsZXJ0RW5hYmxlZCgpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmhlYWRlck1lbnVPcHRpb25zPy5zb21lKG9wdGlvbiA9PiBvcHRpb24uaWQgPT09ICdlZGl0QWxlcnQnKTtcclxufVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGxldCBzZWxmID0gdGhpcztcclxuICAgIGQzLnNlbGVjdCgnIycgKyBzZWxmLnVuaXF1ZUlkKS5yZW1vdmUoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUxpbmVDaGFydCgpO1xyXG4gIH1cclxuICBvblJlc2l6ZWQoZXZlbnQ6IFJlc2l6ZWRFdmVudCkge1xyXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgZDMuc2VsZWN0KCcjJyArIHNlbGYudW5pcXVlSWQpLnJlbW92ZSgpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplTGluZUNoYXJ0KCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgaW5pdGlhbGl6ZUxpbmVDaGFydCgpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgIGxldCBkYXRhID0gW107XHJcbiAgICBsZXQgbWV0YURhdGE6IGFueSA9IG51bGw7XHJcbiAgICBsZXQgY29sb3JNYXBzID0gW107XHJcbiAgICBsZXQgYW5nbGVWYWx1ZSA9IFtdO1xyXG4gICAgbGV0IGRhdGFfcmVhZHk6IGFueSA9IFtdO1xyXG4gICAgbGV0IGxhYmVsQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgbGV0IGNvbG9yVHlwZSA9IG51bGw7XHJcblxyXG4gICBsZXQgaXNyaWEgPSB0aGlzLmN1c3RvbUNoYXJ0Q29uZmlndXJhdGlvbi5pc1JpYVxyXG5cclxuICAgIGZvciAodmFyIGkgaW4gdGhpcy5kZWZhdWx0Q29uZmlndXJhdGlvbikge1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbltpXSA9IENoYXJ0SGVscGVyLmdldFZhbHVlQnlDb25maWd1cmF0aW9uVHlwZShcclxuICAgICAgICBpLFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgdGhpcy5jdXN0b21DaGFydENvbmZpZ3VyYXRpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBkYXRhID0gdGhpcy5jaGFydERhdGEuZGF0YTtcclxuICAgIG1ldGFEYXRhID0gdGhpcy5jaGFydERhdGEubWV0YURhdGE7XHJcblxyXG4gICAgY29sb3JUeXBlID0gbWV0YURhdGEuY29sb3JUeXBlO1xyXG4gICAgaWYgKGNvbG9yVHlwZSA9PSAnbG93Jykge1xyXG4gICAgICBjb2xvck1hcHMgPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5sb3dfY29sb3JNYXA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2xvck1hcHMgPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5oaWdoX2NvbG9yTWFwO1xyXG4gICAgfVxyXG4gICAgaWYgKG1ldGFEYXRhLmRhdGFUeXBlKSB7XHJcbiAgICAgIHRoaXMuZGF0YVR5cGUgPSBtZXRhRGF0YS5kYXRhVHlwZTtcclxuICAgICAgaWYgKHRoaXMuZGF0YVR5cGUgPT0gJ1VTRCcpIHtcclxuICAgICAgICB0aGlzLmRhdGF0eXBlX3N0YXR1cyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kYXRhVHlwZSA9ICckICc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkYXRhLm1hcChmdW5jdGlvbiAoZGF0YVVuaXQsIGkpIHtcclxuICAgICAgaWYgKGkgPCBkYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBsZXQgZGlmZiA9IGRhdGFbaSArIDFdIC0gZGF0YVtpXTtcclxuICAgICAgICBkYXRhX3JlYWR5LnB1c2goZGlmZik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBjaGFydENvbnRhaW5lciA9IGQzLnNlbGVjdCh0aGlzLmNvbnRhaW5lckVsdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIHZhciBndWFnZWNvbnRhaW5lciA9IGQzLnNlbGVjdCh0aGlzLmd1YWdlY29udGFpbmVyRWx0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdmFyIG1hcmdpbiA9IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLm1hcmdpbjtcclxuICAgIHZhciB3aWR0aCA9XHJcbiAgICAgIHBhcnNlSW50KGNoYXJ0Q29udGFpbmVyLnN0eWxlKCd3aWR0aCcpKSAtIG1hcmdpbi5sZWZ0IC0gbWFyZ2luLnJpZ2h0O1xyXG5cclxuICAgIHZhciBoZWlnaHQgPVxyXG4gICAgICBwYXJzZUludChndWFnZWNvbnRhaW5lci5zdHlsZSgnaGVpZ2h0JykpIC1cclxuICAgICAgbWFyZ2luLnRvcCAtXHJcbiAgICAgIG1hcmdpbi5ib3R0b20gLVxyXG4gICAgICA1NjsgLy9jaGFydCBoZWFkZXIgaGVpZ2h0XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmlzSGVhZGVyVmlzaWJsZSAhPSB1bmRlZmluZWQpXHJcbiAgICAgIHRoaXMuaXNIZWFkZXJWaXNpYmxlID0gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNIZWFkZXJWaXNpYmxlO1xyXG5cclxuICAgIHZhciBzdmcgPSBjaGFydENvbnRhaW5lclxyXG4gICAgICAuYXBwZW5kKCdzdmcnKVxyXG4gICAgICAuYXR0cignaWQnLCBzZWxmLnVuaXF1ZUlkKVxyXG4gICAgICAuYXR0cignd2lkdGgnLCB3aWR0aCArIG1hcmdpbi5sZWZ0ICsgbWFyZ2luLnJpZ2h0KVxyXG4gICAgICAuYXR0cignaGVpZ2h0JywgaGVpZ2h0ICsgbWFyZ2luLnRvcCArIG1hcmdpbi5ib3R0b20pXHJcbiAgICAgIC5jYWxsKENoYXJ0SGVscGVyLnJlc3BvbnNpdmVmeSlcclxuICAgICAgLmFwcGVuZCgnZycpO1xyXG5cclxuICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbih3aWR0aCwgaGVpZ2h0KSAvIDI7XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmlzRHJpbGxkb3duQ2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlV2lkdGhTY2FsZUZhY3RvciArPSA0MDtcclxuICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IgKz0gMjA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPiAxNDAwKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IgKz0gMTU7XHJcbiAgICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlV2lkdGhTY2FsZUZhY3RvciAqPSAyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgdG9wVGV4dFBvc2l0aW9uID0gcmFkaXVzIC8gMiAtIDEwO1xyXG4gICAgbGV0IG1pZFRleHRQb3NpdGlvbiA9XHJcbiAgICAgIHRvcFRleHRQb3NpdGlvbiArIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yO1xyXG4gICAgbGV0IGJvdHRvbVRleHRQb3NpdGlvbiA9XHJcbiAgICAgIG1pZFRleHRQb3NpdGlvbiArIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yO1xyXG4gICAgdmFyIGRhdGFfbGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcblxyXG4gICAgZnVuY3Rpb24gZGVnMnJhZChkZWcpIHtcclxuICAgICAgcmV0dXJuIChkZWcgKiBNYXRoLlBJKSAvIDE4MDtcclxuICAgIH1cclxuICAgIGxldCB0ZW1wQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgbGV0IHRvdGFsID0gMDtcclxuICAgIGRhdGFfcmVhZHkubWFwKGZ1bmN0aW9uICh1bml0KSB7XHJcbiAgICAgIHRvdGFsICs9IHVuaXQ7XHJcbiAgICB9KTtcclxuICAgIGRhdGFfcmVhZHkubWFwKGZ1bmN0aW9uICh1bml0LCBpKSB7XHJcbiAgICAgIHZhciBhbmdsZSA9ICh1bml0IC8gdG90YWwpICogMTgwO1xyXG4gICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgIHRlbXBBcnJheS5wdXNoKGFuZ2xlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgY3VycmVudEFuZ2xlID0gdGVtcEFycmF5W2kgLSAxXSArIGFuZ2xlO1xyXG4gICAgICAgIHRlbXBBcnJheS5wdXNoKGN1cnJlbnRBbmdsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgYW5nbGVWYWx1ZSA9IHRlbXBBcnJheTtcclxuXHJcbiAgICB2YXIgYXJjID0gZDNcclxuICAgICAgLmFyYygpXHJcbiAgICAgIC5pbm5lclJhZGl1cyhcclxuICAgICAgICByYWRpdXMgLVxyXG4gICAgICAgICAgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucmluZ1dpZHRoIC1cclxuICAgICAgICAgIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLnJpbmdJbnNldFxyXG4gICAgICApXHJcbiAgICAgIC5vdXRlclJhZGl1cyhyYWRpdXMpXHJcbiAgICAgIC5zdGFydEFuZ2xlKGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgdmFyIHJhdGlvO1xyXG4gICAgICAgIGlmIChpID09PSAwKSB7XHJcbiAgICAgICAgICByYXRpbyA9IHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLm1pbkFuZ2xlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByYXRpbyA9IHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLm1pbkFuZ2xlICsgYW5nbGVWYWx1ZVtpIC0gMV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWcycmFkKHJhdGlvKTtcclxuICAgICAgfSlcclxuICAgICAgLmVuZEFuZ2xlKGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgdmFyIHJhdGlvO1xyXG4gICAgICAgIGlmIChpID09PSBkYXRhX3JlYWR5Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIHJhdGlvID0gc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWF4QW5nbGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJhdGlvID0gc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyBhbmdsZVZhbHVlW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGVnMnJhZChyYXRpbyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIGNlbnRlclRyYW5zbGF0aW9uKCkge1xyXG4gICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgnICsgcmFkaXVzICsgJywnICsgcmFkaXVzICsgJyknO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjZW50ZXJUeCA9IGNlbnRlclRyYW5zbGF0aW9uKCk7XHJcbiAgICB2YXIgdGlja0RhdGEgPSBkM1xyXG4gICAgICAucmFuZ2Uoc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWFqb3JUaWNrcylcclxuICAgICAgLm1hcChmdW5jdGlvbiAoaSkge1xyXG4gICAgICAgIHJldHVybiAxIC8gc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWFqb3JUaWNrcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgdmFyIGFyY3MgPSBzdmcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXJjJykuYXR0cigndHJhbnNmb3JtJywgY2VudGVyVHgpO1xyXG5cclxuICAgIGFyY3NcclxuICAgICAgLnNlbGVjdEFsbCgncGF0aCcpXHJcbiAgICAgIC5kYXRhKGRhdGFfcmVhZHkpXHJcbiAgICAgIC5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoJ3BhdGgnKVxyXG4gICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAoIW1ldGFEYXRhLmhhc0RyaWxsRG93biB8fCBtZXRhRGF0YS5jdXJyZW50VmFsdWUgPT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmFuZ2UgPSBnZXRSYW5nZShkKTtcclxuICAgICAgICBzZWxmLmhhbmRsZUNsaWNrKHJhbmdlKTtcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoJ2ZpbGwnLCBmdW5jdGlvbiAoZCwgaSkge1xyXG4gICAgICAgIHJldHVybiBjb2xvck1hcHNbaV07XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hdHRyKCdpZCcsIGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbG9yTWFwc1tpXTtcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoJ2QnLCBhcmMpXHJcbiAgICAgIC8vIC5zdHlsZSgnY3Vyc29yJywgJ3BvaW50ZXInKTtcclxuICAgICAgLnN0eWxlKCdjdXJzb3InLCBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChtZXRhRGF0YS5jdXJyZW50VmFsdWUgPiAwICYmIG1ldGFEYXRhLmhhc0RyaWxsRG93biAmJiAhaXNyaWEpXHJcbiAgICAgICAgICByZXR1cm4gJ3BvaW50ZXInO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuICdkZWZhdWx0JztcclxuICAgICAgfSk7XHJcblxyXG4gICAgbGV0IGdldFJhbmdlID0gZnVuY3Rpb24gKGQpIHtcclxuICAgICAgbGV0IGluZGV4ID0gZGF0YV9yZWFkeS5pbmRleE9mKGQpO1xyXG4gICAgICByZXR1cm4gZGF0YVswXSArICcgYW5kICcgKyBkYXRhW2RhdGEubGVuZ3RoIC0gMV07XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBwb2ludGVySGVhZExlbmd0aCA9IE1hdGgucm91bmQoXHJcbiAgICAgIHJhZGl1cyAqIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJIZWFkTGVuZ3RoUGVyY2VudFxyXG4gICAgKTtcclxuXHJcbiAgICB2YXIgbGluZURhdGEgPSBbXHJcbiAgICAgIFtzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5wb2ludGVyV2lkdGggLyAyLCAwXSxcclxuICAgICAgWzAsIC1wb2ludGVySGVhZExlbmd0aF0sXHJcbiAgICAgIFstKHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJXaWR0aCAvIDIpLCAwXSxcclxuICAgICAgWzAsIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJUYWlsTGVuZ3RoXSxcclxuICAgICAgW3NlbGYuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJXaWR0aCAvIDIsIDBdLFxyXG4gICAgXTtcclxuXHJcbiAgICB2YXIgcG9pbnRlckxpbmUgPSBkMy5saW5lKCk7XHJcbiAgICB2YXIgcGcgPSBzdmdcclxuICAgICAgLmFwcGVuZCgnZycpXHJcbiAgICAgIC5kYXRhKFtsaW5lRGF0YV0pXHJcbiAgICAgIC5hdHRyKCdjbGFzcycsICdwb2ludGVyJylcclxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGNlbnRlclR4KTtcclxuXHJcbiAgICB2YXIgcG9pbnRlclZhbHVlID0gbWV0YURhdGEuY3VycmVudFZhbHVlIC0gZGF0YVswXTtcclxuICAgIHZhciByYW5nZSA9IGRhdGFbZGF0YV9sZW5ndGggLSAxXSAtIGRhdGFbMF07XHJcbiAgICB2YXIgcG9pbnRlckFuZ2xlID1cclxuICAgICAgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyAocG9pbnRlclZhbHVlIC8gcmFuZ2UpICogMTgwO1xyXG4gICAgcGcuYXBwZW5kKCdwYXRoJylcclxuICAgICAgLmF0dHIoJ2QnLCBwb2ludGVyTGluZSlcclxuICAgICAgLmF0dHIoJ2ZpbGwnLCBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5wb2ludGVyQ29sb3IpXHJcbiAgICAgIC5hdHRyKFxyXG4gICAgICAgICd0cmFuc2Zvcm0nLFxyXG4gICAgICAgICdyb3RhdGUoJyArXHJcbiAgICAgICAgICBwb2ludGVyQW5nbGUgK1xyXG4gICAgICAgICAgJykgdHJhbnNsYXRlKDAsJyArXHJcbiAgICAgICAgICAoLXJhZGl1cyArIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLnJpbmdXaWR0aCArIHBvaW50ZXJIZWFkTGVuZ3RoKSArXHJcbiAgICAgICAgICAnKSdcclxuICAgICAgKTtcclxuXHJcbiAgICB2YXIgbGcgPSBzdmcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnbGFiZWwnKS5hdHRyKCd0cmFuc2Zvcm0nLCBjZW50ZXJUeCk7XHJcbiAgICBsZXQgbGFiZWxBcnJheVRlbXAgPSBbeyBuYW1lOiBkYXRhWzBdLCB2YWx1ZTogMCB9XTtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBkYXRhX3JlYWR5Lm1hcChmdW5jdGlvbiAoZGF0YVVuaXQsIGkpIHtcclxuICAgICAgY291bnQgKz0gZGF0YVVuaXQ7XHJcbiAgICAgIGxldCB0ZW1wID0geyBuYW1lOiBkYXRhW2kgKyAxXSwgdmFsdWU6IGNvdW50IH07XHJcbiAgICAgIGxhYmVsQXJyYXlUZW1wLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGxhYmVsQXJyYXkgPSBsYWJlbEFycmF5VGVtcDtcclxuXHJcbiAgICBsZy5zZWxlY3RBbGwoJy5idWJibGUnKVxyXG4gICAgICAuZGF0YShsYWJlbEFycmF5KVxyXG4gICAgICAuZW50ZXIoKVxyXG4gICAgICAuYXBwZW5kKCdnJylcclxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgdmFyIG5ld0FuZ2xlID1cclxuICAgICAgICAgIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLm1pbkFuZ2xlICsgKGQudmFsdWUgLyByYW5nZSkgKiAxODA7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICdyb3RhdGUoJyArXHJcbiAgICAgICAgICBuZXdBbmdsZSArXHJcbiAgICAgICAgICAnKSB0cmFuc2xhdGUoMCwnICtcclxuICAgICAgICAgIChzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5sYWJlbEluc2V0IC0gcmFkaXVzIC0gMjApICtcclxuICAgICAgICAgICcpJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hcHBlbmQoJ2cnKVxyXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgZnVuY3Rpb24gKGQsIGkpIHtcclxuICAgICAgICB2YXIgbmV3QW5nbGUgPVxyXG4gICAgICAgICAgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyAoZC52YWx1ZSAvIHJhbmdlKSAqIDE4MDtcclxuICAgICAgICBpZiAoaSA9PSAwICYmIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLmlzVmFsdWVMYWJsZUFkanVzdCkge1xyXG4gICAgICAgICAgcmV0dXJuICdyb3RhdGUoJyArICgwIC0gbmV3QW5nbGUpICsgJykgdHJhbnNsYXRlKC0yNywwKSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGkgPT0gbGFiZWxBcnJheS5sZW5ndGggLSAxICYmXHJcbiAgICAgICAgICBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5pc1ZhbHVlTGFibGVBZGp1c3RcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiAncm90YXRlKCcgKyAoMCAtIG5ld0FuZ2xlKSArICcpIHRyYW5zbGF0ZSgtMTUsMCknO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gJ3JvdGF0ZSgnICsgKDAgLSBuZXdBbmdsZSkgKyAnKSB0cmFuc2xhdGUoLTE3LDApJztcclxuICAgICAgfSlcclxuICAgICAgLmFwcGVuZCgndGV4dCcpXHJcbiAgICAgIC5hdHRyKCdzdHlsZScsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQwMClcclxuICAgICAgICAgIHJldHVybiAnZm9udC1zaXplOiAnICsgJzEycHgnICsgJzsgZm9udC13ZWlnaHQ6JyArICc2MDA7JztcclxuICAgICAgICBlbHNlIHJldHVybiAnZm9udC1zaXplOiAnICsgJzE0cHgnICsgJzsgZm9udC13ZWlnaHQ6JyArICc2MDA7JztcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoJ2ZpbGwnLCAndmFyKC0tY2hhcnQtdGV4dC1jb2xvciknKVxyXG4gICAgICAudGV4dChmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmIChtZXRhRGF0YS5kYXRhVHlwZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGQubmFtZSArIG1ldGFEYXRhLmRhdGFUeXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZC5uYW1lO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBzdmdcclxuICAgICAgLmFwcGVuZCgnZm9yZWlnbk9iamVjdCcpXHJcbiAgICAgIC5hdHRyKFxyXG4gICAgICAgICd0cmFuc2Zvcm0nLFxyXG4gICAgICAgICd0cmFuc2xhdGUoJyArXHJcbiAgICAgICAgICAocmFkaXVzIC0gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlV2lkdGhTY2FsZUZhY3RvciAvIDIpICtcclxuICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICB0b3BUZXh0UG9zaXRpb24gK1xyXG4gICAgICAgICAgJyknXHJcbiAgICAgIClcclxuICAgICAgLmF0dHIoJ3dpZHRoJywgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlV2lkdGhTY2FsZUZhY3RvciArIDgpXHJcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvcilcclxuICAgICAgLmFwcGVuZCgneGh0bWw6ZGl2JylcclxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ3ZhbHVlLWRpc3BsYXknKVxyXG4gICAgICAuc3R5bGUoXHJcbiAgICAgICAgJ2hlaWdodCcsXHJcbiAgICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IgKyAxMCArICdweCdcclxuICAgICAgKVxyXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPiAxNTAwKSB7XHJcbiAgICAgICAgICBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciAtIDI1ICsgJ3B4JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IgLSAxNSArICdweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuaHRtbChtZXRhRGF0YS5jdXJyZW50VmFsdWUgKyBtZXRhRGF0YS5kYXRhVHlwZSk7XHJcbiAgICBpZiAobWV0YURhdGEuc3RhdHVzKSB7XHJcbiAgICAgIGxldCB3aWR0aFRlbXAgPSBtZXRhRGF0YS5zdGF0dXMubGVuZ3RoID4gNCA/IDIxMCA6IDEyMDtcclxuICAgICAgc3ZnXHJcbiAgICAgICAgLmFwcGVuZCgnZm9yZWlnbk9iamVjdCcpXHJcbiAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAndHJhbnNmb3JtJyxcclxuICAgICAgICAgICd0cmFuc2xhdGUoJyArIChyYWRpdXMgLSB3aWR0aFRlbXAgLyAyKSArICcsJyArIG1pZFRleHRQb3NpdGlvbiArICcpJ1xyXG4gICAgICAgIClcclxuICAgICAgICAuYXR0cignd2lkdGgnLCB3aWR0aFRlbXApXHJcbiAgICAgICAgLmF0dHIoXHJcbiAgICAgICAgICAnaGVpZ2h0JyxcclxuICAgICAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yICsgMTBcclxuICAgICAgICApXHJcbiAgICAgICAgLmFwcGVuZCgneGh0bWw6ZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAnc3RhdHVzLWRpc3BsYXknKVxyXG4gICAgICAgIC5zdHlsZShcclxuICAgICAgICAgICdmb250LXNpemUnLFxyXG4gICAgICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IgLSAyNSArICdweCdcclxuICAgICAgICApXHJcbiAgICAgICAgLmh0bWwobWV0YURhdGEuc3RhdHVzKTtcclxuICAgIH1cclxuICAgIHN2Z1xyXG4gICAgICAuYXBwZW5kKCdmb3JlaWduT2JqZWN0JylcclxuICAgICAgLmF0dHIoXHJcbiAgICAgICAgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgJ3RyYW5zbGF0ZSgnICsgKHJhZGl1cyAtIDEwNSkgKyAnLCcgKyBib3R0b21UZXh0UG9zaXRpb24gKyAnKSdcclxuICAgICAgKVxyXG4gICAgICAuYXR0cignd2lkdGgnLCAyMTApXHJcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvcilcclxuICAgICAgLmFwcGVuZCgneGh0bWw6ZGl2JylcclxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2RhdGVyYW5nZS1kaXNwbGF5JylcclxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLmlzRHJpbGxkb3duQ2hhcnQpIHtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTQwMCkgcmV0dXJuICcxNHB4JztcclxuICAgICAgICAgICAgZWxzZSByZXR1cm4gJzE4cHgnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKSByZXR1cm4gJzE0cHgnO1xyXG4gICAgICAgICAgZWxzZSByZXR1cm4gJzE4cHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmh0bWwoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBkZXNpcmVkU2l6ZTtcclxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKSBkZXNpcmVkU2l6ZSA9ICcxNHB4JztcclxuICAgICAgICBlbHNlIGRlc2lyZWRTaXplID0gJzE4cHgnO1xyXG4gICAgICAgIGlmIChtZXRhRGF0YS5kYXRlUmFuZ2UpXHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJtYXJnaW5yaWdodC0zXCI+PGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiPjwvaT48L3NwYW4+PHNwYW4+ICcgK1xyXG4gICAgICAgICAgICBtZXRhRGF0YS5kYXRlUmFuZ2UgK1xyXG4gICAgICAgICAgICAnPC9zcGFuPidcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgZWxzZSByZXR1cm4gJyc7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHZhciBjb250YWluZXJNaWRXaWR0aCA9IHBhcnNlSW50KGNoYXJ0Q29udGFpbmVyLnN0eWxlKCd3aWR0aCcpKSAvIDI7XHJcbiAgICB2YXIgbm9kZUhhbGZXaWR0aCA9IHN2Zy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLyAyO1xyXG4gICAgdmFyIHVwZGF0ZWRTdGFydGluZ1BvaW50ID0gY29udGFpbmVyTWlkV2lkdGggLSBub2RlSGFsZldpZHRoO1xyXG5cclxuICAgIHN2Zy5hdHRyKFxyXG4gICAgICAndHJhbnNmb3JtJyxcclxuICAgICAgJ3RyYW5zbGF0ZSgnICtcclxuICAgICAgICAodXBkYXRlZFN0YXJ0aW5nUG9pbnQgKyBtYXJnaW4ubGVmdCkgK1xyXG4gICAgICAgICcsJyArXHJcbiAgICAgICAgbWFyZ2luLnRvcCArXHJcbiAgICAgICAgJyknXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2soZDogYW55KSB7XHJcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChkKTtcclxuICB9XHJcbiAgaGFuZGxlSGVhZGVyTWVudUNsaWNrKGlkKSB7XHJcbiAgICB0aGlzLmhlYWRlck1lbnVjbGlja0V2ZW50LmVtaXQoaWQpO1xyXG4gIH1cclxufSIsIjxkaXYgI2d1YWdlY29udGFpbmVyIGNsYXNzPVwibGliLWNoYXJ0LXdyYXBwZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHZhcigtLWNhcmQtYmcpO1wiXHJcbiAgKHJlc2l6ZWQpPVwib25SZXNpemVkKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFsdFwiICpuZ0lmPVwiIWlzSGVhZGVyVmlzaWJsZVwiPlxyXG4gICAgPGxpYi1jaGFydC1oZWFkZXItdjIgW2NoYXJ0RGF0YV09XCJjaGFydERhdGFcIiBbY2hhcnRDb25maWd1cmF0aW9uXT1cImNoYXJ0Q29uZmlndXJhdGlvblwiXHJcbiAgICAgIChjbGlja0V2ZW50KT1cImhhbmRsZUNsaWNrKCRldmVudClcIj48L2xpYi1jaGFydC1oZWFkZXItdjI+XHJcbiAgPC9kaXY+XHJcbiAgPGxpYi1jaGFydC1oZWFkZXItdjEgW3RpdGxlXT1cImNoYXJ0RGF0YS5tZXRhRGF0YS50aXRsZVwiIFtoYXNEcmlsbERvd25dPVwiY2hhcnREYXRhLm1ldGFEYXRhLmhhc0RyaWxsRG93blwiXHJcbiAgICBbaXNFZGl0RW5hYmxlZF09XCJjaGFydERhdGEubWV0YURhdGEuaXNFZGl0RW5hYmxlZFwiIFtpc3JpYV09XCJjdXN0b21DaGFydENvbmZpZ3VyYXRpb24uaXNSaWFcIiBbbWVudU9wdGlvbnNdPVwiY2hhcnRDb25maWd1cmF0aW9uLmhlYWRlck1lbnVPcHRpb25zXCJcclxuICAgIFtzZWxlY3RlZEtwaVRvb2x0b3BdPVwiY2hhcnRDb25maWd1cmF0aW9uLnNlbGVjdGVkS3BpVG9vbHRvcFwiIChtZW51T3B0aW9uQ2xpY2tFdmVudCk9XCJoYW5kbGVIZWFkZXJNZW51Q2xpY2soJGV2ZW50KVwiXHJcbiAgICBbaXNBbGVydEVuYWJsZWRdPVwiaXNBbGVydEVuYWJsZWRcIiAqbmdJZj1cImlzSGVhZGVyVmlzaWJsZVwiPjwvbGliLWNoYXJ0LWhlYWRlci12MT5cclxuICA8ZGl2IFtzdHlsZS5oZWlnaHRdPVwiY2hhcnRDb25maWd1cmF0aW9uLnN2Z0hlaWdodFwiIGlkPVwiZ3VhZ2VjaGFydGNvbnRhaW5lclwiICNndWFnZWNoYXJ0Y29udGFpbmVyXHJcbiAgICBjbGFzcz1cImxpYi1jaGFydC1zdmcgZ3VhZ2Vjb250YWluZXJcIj48L2Rpdj5cclxuPC9kaXY+Il19
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhZ2UtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2d1YWdlLWNoYXJ0L2d1YWdlLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9ndWFnZS1jaGFydC9ndWFnZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sa0JBQWtCLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQXVEbEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjtJQW9EeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQTdDRCw2QkFBd0IsR0FBZ0MsRUFBRSxDQUFDO1FBQzFELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFNUQsdUJBQWtCLEdBQXVCLEVBQXdCLENBQUM7UUFDbEUsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFTix3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUzQix5QkFBb0IsR0FBdUI7WUFDMUQsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNwRCxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQ2IsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsRUFBRTtZQUNiLFNBQVMsRUFBRSxFQUFFO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixTQUFTLEVBQUUsRUFBRTtZQUNiLFlBQVksRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1lBQy9DLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1lBQ2hELGVBQWUsRUFBRSxTQUFTO1lBQzFCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsd0JBQXdCLEVBQUUsR0FBRztZQUM3QixVQUFVLEVBQUUsRUFBRTtZQUNkLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLGVBQWUsRUFBRSxTQUFTO1lBQzFCLGdCQUFnQixFQUFFLFNBQVM7WUFDM0IsZUFBZSxFQUFFLENBQUM7WUFDbEIsd0JBQXdCLEVBQUUsQ0FBQztZQUMzQiw0QkFBNEIsRUFBRSxFQUFFO1lBQ2hDLDZCQUE2QixFQUFFLEVBQUU7WUFDakMsWUFBWSxFQUFFLFNBQVM7WUFDdkIsZUFBZSxFQUFFLFNBQVM7WUFDMUIsa0JBQWtCLEVBQUUsU0FBUztZQUM3QixrQkFBa0IsRUFBRSxTQUFTO1lBQzdCLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxpQkFBaUI7U0FDckUsQ0FBQztJQUlGLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUNyRCxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQ3RDLElBQUksS0FBSyxDQUFDO0lBQ2IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFtQjtRQUMzQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUNwRSxHQUFHLEVBQ0gsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsd0JBQXdCLENBQzlCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsS0FBSyxLQUFLLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsU0FBeUI7UUFDNUMsT0FBTyxTQUFTLEtBQUssS0FBSztZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVk7WUFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7SUFDNUMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFzQjtRQUM1QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFFNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRSxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBRTlDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ25GLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUVoSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO1FBQ2pFLENBQUM7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVPLFNBQVMsQ0FBQyxVQUFlO1FBQy9CLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFFN0QsT0FBTyxjQUFjO2FBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2pELElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQzthQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE1BQWM7UUFDdkMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLElBQUksRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsSUFBSSxFQUFFLENBQUM7UUFDOUQsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLElBQUksRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFjLEVBQUUsWUFBc0I7UUFDN0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsVUFBVSxJQUFJLE9BQU8sQ0FBQztZQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVSxDQUNoQixHQUFRLEVBQ1IsWUFBc0IsRUFDdEIsV0FBcUIsRUFDckIsU0FBbUIsRUFDbkIsUUFBdUIsRUFDdkIsTUFBYztRQUVkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZFLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTlFLElBQUk7YUFDRCxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDbEIsS0FBSyxFQUFFO2FBQ1AsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFNLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQzthQUNkLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3BCLE9BQU8sUUFBUSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUs7Z0JBQ2pFLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsQ0FBQyxDQUFDO2FBQ0QsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQVUsRUFBRSxDQUFNLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFlBQXNCLEVBQUUsV0FBcUIsRUFBRSxNQUFjO1FBQ3RGLE9BQU8sRUFBRTthQUNOLEdBQUcsRUFBRTthQUNMLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO2FBQzNGLFdBQVcsQ0FBQyxNQUFNLENBQUM7YUFDbkIsVUFBVSxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQVMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVE7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQzthQUNELFFBQVEsQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUM5QixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVE7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVEsRUFBRSxJQUFjLEVBQUUsUUFBdUIsRUFBRSxNQUFjO1FBQ3JGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRWhHLE1BQU0sUUFBUSxHQUFHO1lBQ2YsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7WUFDOUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDOUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QixNQUFNLEVBQUUsR0FBRyxHQUFHO2FBQ1gsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUNYLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRXJGLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ2QsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUM7YUFDdEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDO2FBQ2xELElBQUksQ0FDSCxXQUFXLEVBQ1gsVUFBVSxZQUFZLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxHQUFHLGlCQUFpQixHQUFHLENBQzNHLENBQUM7SUFDTixDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVEsRUFBRSxVQUFpQixFQUFFLElBQWMsRUFBRSxRQUF1QixFQUFFLE1BQWM7UUFDdkcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU5RSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQzthQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ2hCLEtBQUssRUFBRTthQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDWCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzVFLE9BQU8sVUFBVSxRQUFRLGtCQUFrQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxHQUFHLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUNqRyxDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUN2QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFFbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMxRCxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDckYsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLGVBQWUsT0FBTyxNQUFNLENBQUM7UUFDekQsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUMvRSxPQUFPLGNBQWMsUUFBUSxxQkFBcUIsQ0FBQztRQUNyRCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDO2FBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVEsRUFBRSxRQUF1QixFQUFFLE1BQWMsRUFBRSxVQUFlO1FBQzFGLE1BQU0sZUFBZSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLENBQUM7UUFDaEcsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDO1FBRW5HLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQ25CLEdBQUcsRUFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixHQUFHLENBQUMsRUFDakUsZUFBZSxFQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLEVBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFDckQsZUFBZSxFQUNmLEdBQUcsUUFBUSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUNyRCxDQUFDO1FBRUYsU0FBUztRQUNULElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixHQUFHLEVBQ0gsTUFBTSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQ3hCLGVBQWUsRUFDZixXQUFXLEVBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixHQUFHLEVBQUUsRUFDMUQsZ0JBQWdCLEVBQ2hCLFFBQVEsQ0FBQyxNQUFNLENBQ2hCLENBQUM7UUFDSixDQUFDO1FBRUQsYUFBYTtRQUNiLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxTQUFTO1lBQ3RDLENBQUMsQ0FBQywwRUFBMEUsUUFBUSxDQUFDLFNBQVMsU0FBUztZQUN2RyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixHQUFHLEVBQ0gsTUFBTSxHQUFHLEdBQUcsRUFDWixrQkFBa0IsRUFDbEIsR0FBRyxFQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFDckQsbUJBQW1CLEVBQ25CLGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUN0QixHQUFRLEVBQ1IsQ0FBUyxFQUNULENBQVMsRUFDVCxLQUFhLEVBQ2IsTUFBYyxFQUNkLFNBQWlCLEVBQ2pCLE9BQWU7UUFFZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFcEMsR0FBRzthQUNBLE1BQU0sQ0FBQyxlQUFlLENBQUM7YUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQzthQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQzthQUN0QixNQUFNLENBQUMsV0FBVyxDQUFDO2FBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO2FBQ3hCLEtBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUM7YUFDbkMsS0FBSyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUM7YUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0MsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdkUsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxTQUFTLENBQUMsR0FBUSxFQUFFLFVBQWU7UUFDekMsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RSxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsaUJBQWlCLEdBQUcsYUFBYSxDQUFDO1FBRS9ELEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBYztRQUN6QyxPQUFPLGFBQWEsTUFBTSxLQUFLLE1BQU0sR0FBRyxDQUFDO0lBQzNDLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBVztRQUN6QixPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDL0IsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFjO1FBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELHFCQUFxQixDQUFDLEVBQVU7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQXRhVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix5Z0JDdkVoQyxvcENBNkJNOzs0RkQwQ08sbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJO3dEQUlyQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlsRCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBPbkNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFVuaXF1ZUlkIH0gZnJvbSAnLi4vdW5pcXVlLWlkJztcclxuaW1wb3J0IENoYXJ0SGVscGVyIGZyb20gJy4uL2NoYXJ0LWhlbHBlcic7XHJcbmltcG9ydCB7IFJlc2l6ZWRFdmVudCB9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcclxuaW1wb3J0IEhlYWRlckNvbmZpZ0hlbHBlciBmcm9tICcuLi9oZWFkZXItY29uZmlnJztcclxuXHJcbmludGVyZmFjZSBDaGFydERhdGEge1xyXG4gIGRhdGE6IG51bWJlcltdO1xyXG4gIG1ldGFEYXRhOiBDaGFydE1ldGFkYXRhO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQ2hhcnRNZXRhZGF0YSB7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgY29sb3JUeXBlOiAnbG93JyB8ICdoaWdoJztcclxuICBkYXRhVHlwZT86IHN0cmluZztcclxuICBjdXJyZW50VmFsdWU6IG51bWJlcjtcclxuICBzdGF0dXM/OiBzdHJpbmc7XHJcbiAgZGF0ZVJhbmdlPzogc3RyaW5nO1xyXG4gIGhhc0RyaWxsRG93bj86IGJvb2xlYW47XHJcbiAgaXNFZGl0RW5hYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmludGVyZmFjZSBDaGFydENvbmZpZ3VyYXRpb24ge1xyXG4gIG1hcmdpbjogeyB0b3A6IG51bWJlcjsgcmlnaHQ6IG51bWJlcjsgYm90dG9tOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9O1xyXG4gIG1pbkFuZ2xlOiBudW1iZXI7XHJcbiAgbWF4QW5nbGU6IG51bWJlcjtcclxuICByaW5nSW5zZXQ6IG51bWJlcjtcclxuICByaW5nV2lkdGg6IG51bWJlcjtcclxuICBtYWpvclRpY2tzOiBudW1iZXI7XHJcbiAgc3ZnSGVpZ2h0OiBudW1iZXI7XHJcbiAgbG93X2NvbG9yTWFwOiBzdHJpbmdbXTtcclxuICBoaWdoX2NvbG9yTWFwOiBzdHJpbmdbXTtcclxuICBpc0hlYWRlclZpc2libGU/OiBib29sZWFuO1xyXG4gIHBvaW50ZXJXaWR0aDogbnVtYmVyO1xyXG4gIHBvaW50ZXJUYWlsTGVuZ3RoOiBudW1iZXI7XHJcbiAgcG9pbnRlckhlYWRMZW5ndGhQZXJjZW50OiBudW1iZXI7XHJcbiAgbGFiZWxJbnNldDogbnVtYmVyO1xyXG4gIGxlZ2VuZEp1c3RpZmllZDogYm9vbGVhbjtcclxuICBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcclxuICBpc0RyaWxsZG93bkNoYXJ0PzogYm9vbGVhbjtcclxuICByaW5nU2NhbGVGYWN0b3I6IG51bWJlcjtcclxuICB0ZXh0c0F0Q2VudGVyU2NhbGVGYWN0b3I6IG51bWJlcjtcclxuICBjdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yOiBudW1iZXI7XHJcbiAgY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3I6IG51bWJlcjtcclxuICBwb2ludGVyQ29sb3I6IHN0cmluZztcclxuICBpc1RvZ2dsZVZpc2libGU/OiBib29sZWFuO1xyXG4gIHNlbGVjdGVkS3BpVG9vbHRvcD86IGFueTtcclxuICBpc1ZhbHVlTGFibGVBZGp1c3Q/OiBib29sZWFuO1xyXG4gIGlzVGl0bGVIaWRkZW4/OiBib29sZWFuO1xyXG4gIGhlYWRlck1lbnVPcHRpb25zOiBhbnlbXTtcclxuICBpc1JpYT86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWd1YWdlLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3VhZ2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2d1YWdlLWNoYXJ0LmNvbXBvbmVudC5sZXNzJywgJy4uL2NvbW1vbi1zdHlsZXMubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdWFnZUNoYXJ0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50VW5pcXVlSWQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQFZpZXdDaGlsZCgnZ3VhZ2VjaGFydGNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgY29udGFpbmVyRWx0ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3VhZ2Vjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGd1YWdlY29udGFpbmVyRWx0ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgY2hhcnREYXRhITogQ2hhcnREYXRhO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNoYXJ0Q29uZmlndXJhdGlvbjogUGFydGlhbDxDaGFydENvbmZpZ3VyYXRpb24+ID0ge307XHJcbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgaGVhZGVyTWVudWNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY2hhcnRDb25maWd1cmF0aW9uOiBDaGFydENvbmZpZ3VyYXRpb24gPSB7fSBhcyBDaGFydENvbmZpZ3VyYXRpb247XHJcbiAgZGF0YVR5cGUgPSAnJztcclxuICBkYXRhdHlwZV9zdGF0dXMgPSBmYWxzZTtcclxuICB1bmlxdWVJZCA9IHRoaXMuZ2V0VW5pcXVlSWQoKTtcclxuICBpc0hlYWRlclZpc2libGUgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IENIQVJUX0hFQURFUl9IRUlHSFQgPSA1NjtcclxuICBwcml2YXRlIHJlYWRvbmx5IExBUkdFX1NDUkVFTl9XSURUSCA9IDE0MDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBYTEFSR0VfU0NSRUVOX1dJRFRIID0gMTUwMDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0Q29uZmlndXJhdGlvbjogQ2hhcnRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgbWFyZ2luOiB7IHRvcDogNDAsIHJpZ2h0OiAyMCwgYm90dG9tOiAyMCwgbGVmdDogMjAgfSxcclxuICAgIG1pbkFuZ2xlOiAtOTAsXHJcbiAgICBtYXhBbmdsZTogOTAsXHJcbiAgICByaW5nSW5zZXQ6IDIwLFxyXG4gICAgcmluZ1dpZHRoOiAyMCxcclxuICAgIG1ham9yVGlja3M6IDMsXHJcbiAgICBzdmdIZWlnaHQ6IDgwLFxyXG4gICAgbG93X2NvbG9yTWFwOiBbJyM0M0NDMDAnLCAnI0ZGRUYwQycsICcjRkY0RTBDJ10sXHJcbiAgICBoaWdoX2NvbG9yTWFwOiBbJyNGRjRFMEMnLCAnI0ZGRUYwQycsICcjNDNDQzAwJ10sXHJcbiAgICBpc0hlYWRlclZpc2libGU6IHVuZGVmaW5lZCxcclxuICAgIHBvaW50ZXJXaWR0aDogMTAsXHJcbiAgICBwb2ludGVyVGFpbExlbmd0aDogNSxcclxuICAgIHBvaW50ZXJIZWFkTGVuZ3RoUGVyY2VudDogMC43LFxyXG4gICAgbGFiZWxJbnNldDogMTAsXHJcbiAgICBsZWdlbmRKdXN0aWZpZWQ6IGZhbHNlLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBpc0RyaWxsZG93bkNoYXJ0OiB1bmRlZmluZWQsXHJcbiAgICByaW5nU2NhbGVGYWN0b3I6IDAsXHJcbiAgICB0ZXh0c0F0Q2VudGVyU2NhbGVGYWN0b3I6IDAsXHJcbiAgICBjdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yOiA2MCxcclxuICAgIGN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yOiAzMCxcclxuICAgIHBvaW50ZXJDb2xvcjogJyM2ODY4NjgnLFxyXG4gICAgaXNUb2dnbGVWaXNpYmxlOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZEtwaVRvb2x0b3A6IHVuZGVmaW5lZCxcclxuICAgIGlzVmFsdWVMYWJsZUFkanVzdDogdW5kZWZpbmVkLFxyXG4gICAgaXNUaXRsZUhpZGRlbjogdW5kZWZpbmVkLFxyXG4gICAgaGVhZGVyTWVudU9wdGlvbnM6IEhlYWRlckNvbmZpZ0hlbHBlci5oZWFkZXJDb25maWcuaGVhZGVyTWVudU9wdGlvbnMsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQWxlcnRFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uPy5oZWFkZXJNZW51T3B0aW9ucz8uc29tZShcclxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSAnZWRpdEFsZXJ0J1xyXG4gICAgKSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydjaGFydERhdGEnXSB8fCBjaGFuZ2VzWydjdXN0b21DaGFydENvbmZpZ3VyYXRpb24nXSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUV4aXN0aW5nQ2hhcnQoKTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplQ2hhcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUmVzaXplZChldmVudDogUmVzaXplZEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUV4aXN0aW5nQ2hhcnQoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUV4aXN0aW5nQ2hhcnQoKTogdm9pZCB7XHJcbiAgICBkMy5zZWxlY3QoYCMke3RoaXMudW5pcXVlSWR9YCkucmVtb3ZlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVDaGFydCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaGFydERhdGEpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLm1lcmdlQ29uZmlndXJhdGlvbigpO1xyXG4gICAgdGhpcy5zZXR1cERhdGFUeXBlKCk7XHJcbiAgICBcclxuICAgIGNvbnN0IHsgZGF0YSwgbWV0YURhdGEgfSA9IHRoaXMuY2hhcnREYXRhO1xyXG4gICAgY29uc3QgY29sb3JNYXBzID0gdGhpcy5nZXRDb2xvck1hcHMobWV0YURhdGEuY29sb3JUeXBlKTtcclxuICAgIGNvbnN0IGRhdGFTZWdtZW50cyA9IHRoaXMuY2FsY3VsYXRlRGF0YVNlZ21lbnRzKGRhdGEpO1xyXG4gICAgY29uc3QgYW5nbGVWYWx1ZXMgPSB0aGlzLmNhbGN1bGF0ZUFuZ2xlcyhkYXRhU2VnbWVudHMpO1xyXG4gICAgXHJcbiAgICBjb25zdCBkaW1lbnNpb25zID0gdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XHJcbiAgICBjb25zdCBzdmcgPSB0aGlzLmNyZWF0ZVNWRyhkaW1lbnNpb25zKTtcclxuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWluKGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0KSAvIDI7XHJcblxyXG4gICAgdGhpcy5hZGp1c3RTY2FsZUZhY3RvcnMocmFkaXVzKTtcclxuICAgIFxyXG4gICAgY29uc3QgbGFiZWxBcnJheSA9IHRoaXMuY3JlYXRlTGFiZWxBcnJheShkYXRhLCBkYXRhU2VnbWVudHMpO1xyXG4gICAgXHJcbiAgICB0aGlzLnJlbmRlckFyY3Moc3ZnLCBkYXRhU2VnbWVudHMsIGFuZ2xlVmFsdWVzLCBjb2xvck1hcHMsIG1ldGFEYXRhLCByYWRpdXMpO1xyXG4gICAgdGhpcy5yZW5kZXJQb2ludGVyKHN2ZywgZGF0YSwgbWV0YURhdGEsIHJhZGl1cyk7XHJcbiAgICB0aGlzLnJlbmRlckxhYmVscyhzdmcsIGxhYmVsQXJyYXksIGRhdGEsIG1ldGFEYXRhLCByYWRpdXMpO1xyXG4gICAgdGhpcy5yZW5kZXJDZW50ZXJUZXh0cyhzdmcsIG1ldGFEYXRhLCByYWRpdXMsIGRpbWVuc2lvbnMpO1xyXG4gICAgXHJcbiAgICB0aGlzLmNlbnRlclNWRyhzdmcsIGRpbWVuc2lvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtZXJnZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb25ba2V5XSA9IENoYXJ0SGVscGVyLmdldFZhbHVlQnlDb25maWd1cmF0aW9uVHlwZShcclxuICAgICAgICBrZXksXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlndXJhdGlvbixcclxuICAgICAgICB0aGlzLmN1c3RvbUNoYXJ0Q29uZmlndXJhdGlvblxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRGF0YVR5cGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhVHlwZSA9IHRoaXMuY2hhcnREYXRhLm1ldGFEYXRhLmRhdGFUeXBlO1xyXG4gICAgaWYgKGRhdGFUeXBlKSB7XHJcbiAgICAgIHRoaXMuZGF0YVR5cGUgPSBkYXRhVHlwZSA9PT0gJ1VTRCcgPyAnJCAnIDogZGF0YVR5cGU7XHJcbiAgICAgIHRoaXMuZGF0YXR5cGVfc3RhdHVzID0gZGF0YVR5cGUgPT09ICdVU0QnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb2xvck1hcHMoY29sb3JUeXBlOiAnbG93JyB8ICdoaWdoJyk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBjb2xvclR5cGUgPT09ICdsb3cnXHJcbiAgICAgID8gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubG93X2NvbG9yTWFwXHJcbiAgICAgIDogdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaGlnaF9jb2xvck1hcDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlRGF0YVNlZ21lbnRzKGRhdGE6IG51bWJlcltdKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIGRhdGEuc2xpY2UoMCwgLTEpLm1hcCgodmFsdWUsIGkpID0+IGRhdGFbaSArIDFdIC0gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBbmdsZXMoZGF0YVNlZ21lbnRzOiBudW1iZXJbXSk6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IHRvdGFsID0gZGF0YVNlZ21lbnRzLnJlZHVjZSgoc3VtLCB2YWx1ZSkgPT4gc3VtICsgdmFsdWUsIDApO1xyXG4gICAgY29uc3QgYW5nbGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgXHJcbiAgICBkYXRhU2VnbWVudHMuZm9yRWFjaCgoc2VnbWVudCwgaSkgPT4ge1xyXG4gICAgICBjb25zdCBhbmdsZSA9IChzZWdtZW50IC8gdG90YWwpICogMTgwO1xyXG4gICAgICBhbmdsZXMucHVzaChpID09PSAwID8gYW5nbGUgOiBhbmdsZXNbaSAtIDFdICsgYW5nbGUpO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICAgIHJldHVybiBhbmdsZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZURpbWVuc2lvbnMoKSB7XHJcbiAgICBjb25zdCBjaGFydENvbnRhaW5lciA9IGQzLnNlbGVjdCh0aGlzLmNvbnRhaW5lckVsdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIGNvbnN0IGd1YWdlQ29udGFpbmVyID0gZDMuc2VsZWN0KHRoaXMuZ3VhZ2Vjb250YWluZXJFbHQubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBtYXJnaW4gPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5tYXJnaW47XHJcblxyXG4gICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjaGFydENvbnRhaW5lci5zdHlsZSgnd2lkdGgnKSkgLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodDtcclxuICAgIGNvbnN0IGhlaWdodCA9IHBhcnNlSW50KGd1YWdlQ29udGFpbmVyLnN0eWxlKCdoZWlnaHQnKSkgLSBtYXJnaW4udG9wIC0gbWFyZ2luLmJvdHRvbSAtIHRoaXMuQ0hBUlRfSEVBREVSX0hFSUdIVDtcclxuXHJcbiAgICBpZiAodGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNIZWFkZXJWaXNpYmxlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pc0hlYWRlclZpc2libGUgPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5pc0hlYWRlclZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgbWFyZ2luLCBjaGFydENvbnRhaW5lciB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVTVkcoZGltZW5zaW9uczogYW55KTogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBudWxsLCB1bmRlZmluZWQ+IHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgbWFyZ2luLCBjaGFydENvbnRhaW5lciB9ID0gZGltZW5zaW9ucztcclxuXHJcbiAgICByZXR1cm4gY2hhcnRDb250YWluZXJcclxuICAgICAgLmFwcGVuZCgnc3ZnJylcclxuICAgICAgLmF0dHIoJ2lkJywgdGhpcy51bmlxdWVJZClcclxuICAgICAgLmF0dHIoJ3dpZHRoJywgd2lkdGggKyBtYXJnaW4ubGVmdCArIG1hcmdpbi5yaWdodClcclxuICAgICAgLmF0dHIoJ2hlaWdodCcsIGhlaWdodCArIG1hcmdpbi50b3AgKyBtYXJnaW4uYm90dG9tKVxyXG4gICAgICAuY2FsbChDaGFydEhlbHBlci5yZXNwb25zaXZlZnkpXHJcbiAgICAgIC5hcHBlbmQoJ2cnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRqdXN0U2NhbGVGYWN0b3JzKHJhZGl1czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNEcmlsbGRvd25DaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICs9IDQwO1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciArPSAyMDtcclxuICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPiB0aGlzLkxBUkdFX1NDUkVFTl9XSURUSCkge1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciArPSAxNTtcclxuICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlV2lkdGhTY2FsZUZhY3RvciAqPSAyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVMYWJlbEFycmF5KGRhdGE6IG51bWJlcltdLCBkYXRhU2VnbWVudHM6IG51bWJlcltdKSB7XHJcbiAgICBjb25zdCBsYWJlbEFycmF5ID0gW3sgbmFtZTogZGF0YVswXSwgdmFsdWU6IDAgfV07XHJcbiAgICBsZXQgY3VtdWxhdGl2ZSA9IDA7XHJcblxyXG4gICAgZGF0YVNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQsIGkpID0+IHtcclxuICAgICAgY3VtdWxhdGl2ZSArPSBzZWdtZW50O1xyXG4gICAgICBsYWJlbEFycmF5LnB1c2goeyBuYW1lOiBkYXRhW2kgKyAxXSwgdmFsdWU6IGN1bXVsYXRpdmUgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGFiZWxBcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQXJjcyhcclxuICAgIHN2ZzogYW55LFxyXG4gICAgZGF0YVNlZ21lbnRzOiBudW1iZXJbXSxcclxuICAgIGFuZ2xlVmFsdWVzOiBudW1iZXJbXSxcclxuICAgIGNvbG9yTWFwczogc3RyaW5nW10sXHJcbiAgICBtZXRhRGF0YTogQ2hhcnRNZXRhZGF0YSxcclxuICAgIHJhZGl1czogbnVtYmVyXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc1JpYSA9IHRoaXMuY3VzdG9tQ2hhcnRDb25maWd1cmF0aW9uLmlzUmlhO1xyXG4gICAgY29uc3QgY2VudGVyVHggPSB0aGlzLmdldENlbnRlclRyYW5zbGF0aW9uKHJhZGl1cyk7XHJcbiAgICBjb25zdCBhcmMgPSB0aGlzLmNyZWF0ZUFyY0dlbmVyYXRvcihkYXRhU2VnbWVudHMsIGFuZ2xlVmFsdWVzLCByYWRpdXMpO1xyXG5cclxuICAgIGNvbnN0IGFyY3MgPSBzdmcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXJjJykuYXR0cigndHJhbnNmb3JtJywgY2VudGVyVHgpO1xyXG5cclxuICAgIGFyY3NcclxuICAgICAgLnNlbGVjdEFsbCgncGF0aCcpXHJcbiAgICAgIC5kYXRhKGRhdGFTZWdtZW50cylcclxuICAgICAgLmVudGVyKClcclxuICAgICAgLmFwcGVuZCgncGF0aCcpXHJcbiAgICAgIC5hdHRyKCdmaWxsJywgKGQ6IGFueSwgaTogbnVtYmVyKSA9PiBjb2xvck1hcHNbaV0pXHJcbiAgICAgIC5hdHRyKCdpZCcsIChkOiBhbnksIGk6IG51bWJlcikgPT4gY29sb3JNYXBzW2ldKVxyXG4gICAgICAuYXR0cignZCcsIGFyYylcclxuICAgICAgLnN0eWxlKCdjdXJzb3InLCAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG1ldGFEYXRhLmN1cnJlbnRWYWx1ZSA+IDAgJiYgbWV0YURhdGEuaGFzRHJpbGxEb3duICYmICFpc1JpYVxyXG4gICAgICAgICAgPyAncG9pbnRlcidcclxuICAgICAgICAgIDogJ2RlZmF1bHQnO1xyXG4gICAgICB9KVxyXG4gICAgICAub24oJ2NsaWNrJywgKGV2ZW50OiBhbnksIGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghbWV0YURhdGEuaGFzRHJpbGxEb3duIHx8IG1ldGFEYXRhLmN1cnJlbnRWYWx1ZSA9PT0gMCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2sodGhpcy5nZXRSYW5nZSh0aGlzLmNoYXJ0RGF0YS5kYXRhKSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVBcmNHZW5lcmF0b3IoZGF0YVNlZ21lbnRzOiBudW1iZXJbXSwgYW5nbGVWYWx1ZXM6IG51bWJlcltdLCByYWRpdXM6IG51bWJlcik6IGFueSB7XHJcbiAgICByZXR1cm4gZDNcclxuICAgICAgLmFyYygpXHJcbiAgICAgIC5pbm5lclJhZGl1cyhyYWRpdXMgLSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5yaW5nV2lkdGggLSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5yaW5nSW5zZXQpXHJcbiAgICAgIC5vdXRlclJhZGl1cyhyYWRpdXMpXHJcbiAgICAgIC5zdGFydEFuZ2xlKChkOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gaSA9PT0gMFxyXG4gICAgICAgICAgPyB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZVxyXG4gICAgICAgICAgOiB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIGFuZ2xlVmFsdWVzW2kgLSAxXTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWcycmFkKHJhdGlvKTtcclxuICAgICAgfSlcclxuICAgICAgLmVuZEFuZ2xlKChkOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gaSA9PT0gZGF0YVNlZ21lbnRzLmxlbmd0aCAtIDFcclxuICAgICAgICAgID8gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWF4QW5nbGVcclxuICAgICAgICAgIDogdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyBhbmdsZVZhbHVlc1tpXTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZWcycmFkKHJhdGlvKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlclBvaW50ZXIoc3ZnOiBhbnksIGRhdGE6IG51bWJlcltdLCBtZXRhRGF0YTogQ2hhcnRNZXRhZGF0YSwgcmFkaXVzOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNlbnRlclR4ID0gdGhpcy5nZXRDZW50ZXJUcmFuc2xhdGlvbihyYWRpdXMpO1xyXG4gICAgY29uc3QgcG9pbnRlckhlYWRMZW5ndGggPSBNYXRoLnJvdW5kKHJhZGl1cyAqIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJIZWFkTGVuZ3RoUGVyY2VudCk7XHJcblxyXG4gICAgY29uc3QgbGluZURhdGEgPSBbXHJcbiAgICAgIFt0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5wb2ludGVyV2lkdGggLyAyLCAwXSxcclxuICAgICAgWzAsIC1wb2ludGVySGVhZExlbmd0aF0sXHJcbiAgICAgIFstKHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJXaWR0aCAvIDIpLCAwXSxcclxuICAgICAgWzAsIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJUYWlsTGVuZ3RoXSxcclxuICAgICAgW3RoaXMuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJXaWR0aCAvIDIsIDBdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBwb2ludGVyTGluZSA9IGQzLmxpbmUoKTtcclxuICAgIGNvbnN0IHBnID0gc3ZnXHJcbiAgICAgIC5hcHBlbmQoJ2cnKVxyXG4gICAgICAuZGF0YShbbGluZURhdGFdKVxyXG4gICAgICAuYXR0cignY2xhc3MnLCAncG9pbnRlcicpXHJcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBjZW50ZXJUeCk7XHJcblxyXG4gICAgY29uc3QgcmFuZ2UgPSBkYXRhW2RhdGEubGVuZ3RoIC0gMV0gLSBkYXRhWzBdO1xyXG4gICAgY29uc3QgcG9pbnRlclZhbHVlID0gbWV0YURhdGEuY3VycmVudFZhbHVlIC0gZGF0YVswXTtcclxuICAgIGNvbnN0IHBvaW50ZXJBbmdsZSA9IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLm1pbkFuZ2xlICsgKHBvaW50ZXJWYWx1ZSAvIHJhbmdlKSAqIDE4MDtcclxuXHJcbiAgICBwZy5hcHBlbmQoJ3BhdGgnKVxyXG4gICAgICAuYXR0cignZCcsIHBvaW50ZXJMaW5lKVxyXG4gICAgICAuYXR0cignZmlsbCcsIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJDb2xvcilcclxuICAgICAgLmF0dHIoXHJcbiAgICAgICAgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgYHJvdGF0ZSgke3BvaW50ZXJBbmdsZX0pIHRyYW5zbGF0ZSgwLCAkey1yYWRpdXMgKyB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5yaW5nV2lkdGggKyBwb2ludGVySGVhZExlbmd0aH0pYFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJMYWJlbHMoc3ZnOiBhbnksIGxhYmVsQXJyYXk6IGFueVtdLCBkYXRhOiBudW1iZXJbXSwgbWV0YURhdGE6IENoYXJ0TWV0YWRhdGEsIHJhZGl1czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBjZW50ZXJUeCA9IHRoaXMuZ2V0Q2VudGVyVHJhbnNsYXRpb24ocmFkaXVzKTtcclxuICAgIGNvbnN0IHJhbmdlID0gZGF0YVtkYXRhLmxlbmd0aCAtIDFdIC0gZGF0YVswXTtcclxuICAgIGNvbnN0IGxnID0gc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2xhYmVsJykuYXR0cigndHJhbnNmb3JtJywgY2VudGVyVHgpO1xyXG5cclxuICAgIGxnLnNlbGVjdEFsbCgnLmJ1YmJsZScpXHJcbiAgICAgIC5kYXRhKGxhYmVsQXJyYXkpXHJcbiAgICAgIC5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoJ2cnKVxyXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgKGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlID0gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyAoZC52YWx1ZSAvIHJhbmdlKSAqIDE4MDtcclxuICAgICAgICByZXR1cm4gYHJvdGF0ZSgke25ld0FuZ2xlfSkgdHJhbnNsYXRlKDAsICR7dGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubGFiZWxJbnNldCAtIHJhZGl1cyAtIDIwfSlgO1xyXG4gICAgICB9KVxyXG4gICAgICAuYXBwZW5kKCdnJylcclxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIChkOiBhbnksIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlID0gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyAoZC52YWx1ZSAvIHJhbmdlKSAqIDE4MDtcclxuICAgICAgICBsZXQgeE9mZnNldCA9IC0xNztcclxuICAgICAgICBcclxuICAgICAgICBpZiAoaSA9PT0gMCAmJiB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5pc1ZhbHVlTGFibGVBZGp1c3QpIHtcclxuICAgICAgICAgIHhPZmZzZXQgPSAtMjc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSBsYWJlbEFycmF5Lmxlbmd0aCAtIDEgJiYgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNWYWx1ZUxhYmxlQWRqdXN0KSB7XHJcbiAgICAgICAgICB4T2Zmc2V0ID0gLTE1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gYHJvdGF0ZSgkey1uZXdBbmdsZX0pIHRyYW5zbGF0ZSgke3hPZmZzZXR9LCAwKWA7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxyXG4gICAgICAuYXR0cignc3R5bGUnLCAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSB3aW5kb3cuaW5uZXJXaWR0aCA8IHRoaXMuTEFSR0VfU0NSRUVOX1dJRFRIID8gJzEycHgnIDogJzE0cHgnO1xyXG4gICAgICAgIHJldHVybiBgZm9udC1zaXplOiAke2ZvbnRTaXplfTsgZm9udC13ZWlnaHQ6IDYwMDtgO1xyXG4gICAgICB9KVxyXG4gICAgICAuYXR0cignZmlsbCcsICd2YXIoLS1jaGFydC10ZXh0LWNvbG9yKScpXHJcbiAgICAgIC50ZXh0KChkOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gbWV0YURhdGEuZGF0YVR5cGUgPyBgJHtkLm5hbWV9JHttZXRhRGF0YS5kYXRhVHlwZX1gIDogZC5uYW1lO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQ2VudGVyVGV4dHMoc3ZnOiBhbnksIG1ldGFEYXRhOiBDaGFydE1ldGFkYXRhLCByYWRpdXM6IG51bWJlciwgZGltZW5zaW9uczogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB0b3BUZXh0UG9zaXRpb24gPSByYWRpdXMgLyAyIC0gMTA7XHJcbiAgICBjb25zdCBtaWRUZXh0UG9zaXRpb24gPSB0b3BUZXh0UG9zaXRpb24gKyB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvcjtcclxuICAgIGNvbnN0IGJvdHRvbVRleHRQb3NpdGlvbiA9IG1pZFRleHRQb3NpdGlvbiArIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yO1xyXG5cclxuICAgIC8vIEN1cnJlbnQgVmFsdWVcclxuICAgIHRoaXMuYWRkRm9yZWlnbk9iamVjdChcclxuICAgICAgc3ZnLFxyXG4gICAgICByYWRpdXMgLSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yIC8gMixcclxuICAgICAgdG9wVGV4dFBvc2l0aW9uLFxyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICsgOCxcclxuICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IsXHJcbiAgICAgICd2YWx1ZS1kaXNwbGF5JyxcclxuICAgICAgYCR7bWV0YURhdGEuY3VycmVudFZhbHVlfSR7bWV0YURhdGEuZGF0YVR5cGUgfHwgJyd9YFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBTdGF0dXNcclxuICAgIGlmIChtZXRhRGF0YS5zdGF0dXMpIHtcclxuICAgICAgY29uc3Qgc3RhdHVzV2lkdGggPSBtZXRhRGF0YS5zdGF0dXMubGVuZ3RoID4gNCA/IDIxMCA6IDEyMDtcclxuICAgICAgdGhpcy5hZGRGb3JlaWduT2JqZWN0KFxyXG4gICAgICAgIHN2ZyxcclxuICAgICAgICByYWRpdXMgLSBzdGF0dXNXaWR0aCAvIDIsXHJcbiAgICAgICAgbWlkVGV4dFBvc2l0aW9uLFxyXG4gICAgICAgIHN0YXR1c1dpZHRoLFxyXG4gICAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yICsgMTAsXHJcbiAgICAgICAgJ3N0YXR1cy1kaXNwbGF5JyxcclxuICAgICAgICBtZXRhRGF0YS5zdGF0dXNcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBEYXRlIFJhbmdlXHJcbiAgICBjb25zdCBkYXRlUmFuZ2VIdG1sID0gbWV0YURhdGEuZGF0ZVJhbmdlXHJcbiAgICAgID8gYDxzcGFuIGNsYXNzPVwibWFyZ2lucmlnaHQtM1wiPjxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIj48L2k+PC9zcGFuPjxzcGFuPiR7bWV0YURhdGEuZGF0ZVJhbmdlfTwvc3Bhbj5gXHJcbiAgICAgIDogJyc7XHJcbiAgICBcclxuICAgIHRoaXMuYWRkRm9yZWlnbk9iamVjdChcclxuICAgICAgc3ZnLFxyXG4gICAgICByYWRpdXMgLSAxMDUsXHJcbiAgICAgIGJvdHRvbVRleHRQb3NpdGlvbixcclxuICAgICAgMjEwLFxyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvcixcclxuICAgICAgJ2RhdGVyYW5nZS1kaXNwbGF5JyxcclxuICAgICAgZGF0ZVJhbmdlSHRtbFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRm9yZWlnbk9iamVjdChcclxuICAgIHN2ZzogYW55LFxyXG4gICAgeDogbnVtYmVyLFxyXG4gICAgeTogbnVtYmVyLFxyXG4gICAgd2lkdGg6IG51bWJlcixcclxuICAgIGhlaWdodDogbnVtYmVyLFxyXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICBjb250ZW50OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvbnRTaXplID0gdGhpcy5nZXRGb250U2l6ZSgpO1xyXG4gICAgXHJcbiAgICBzdmdcclxuICAgICAgLmFwcGVuZCgnZm9yZWlnbk9iamVjdCcpXHJcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7eH0sICR7eX0pYClcclxuICAgICAgLmF0dHIoJ3dpZHRoJywgd2lkdGgpXHJcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCBoZWlnaHQpXHJcbiAgICAgIC5hcHBlbmQoJ3hodG1sOmRpdicpXHJcbiAgICAgIC5hdHRyKCdjbGFzcycsIGNsYXNzTmFtZSlcclxuICAgICAgLnN0eWxlKCdoZWlnaHQnLCBgJHtoZWlnaHQgKyAxMH1weGApXHJcbiAgICAgIC5zdHlsZSgnZm9udC1zaXplJywgZm9udFNpemUpXHJcbiAgICAgIC5odG1sKGNvbnRlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb250U2l6ZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmlzRHJpbGxkb3duQ2hhcnQpIHtcclxuICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgdGhpcy5MQVJHRV9TQ1JFRU5fV0lEVEggPyAnMTRweCcgOiAnMThweCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPCB0aGlzLkxBUkdFX1NDUkVFTl9XSURUSCA/ICcxNHB4JyA6ICcxOHB4JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2VudGVyU1ZHKHN2ZzogYW55LCBkaW1lbnNpb25zOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgbWFyZ2luLCBjaGFydENvbnRhaW5lciB9ID0gZGltZW5zaW9ucztcclxuICAgIGNvbnN0IGNvbnRhaW5lck1pZFdpZHRoID0gcGFyc2VJbnQoY2hhcnRDb250YWluZXIuc3R5bGUoJ3dpZHRoJykpIC8gMjtcclxuICAgIGNvbnN0IG5vZGVIYWxmV2lkdGggPSBzdmcubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gMjtcclxuICAgIGNvbnN0IHVwZGF0ZWRTdGFydGluZ1BvaW50ID0gY29udGFpbmVyTWlkV2lkdGggLSBub2RlSGFsZldpZHRoO1xyXG5cclxuICAgIHN2Zy5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7dXBkYXRlZFN0YXJ0aW5nUG9pbnQgKyBtYXJnaW4ubGVmdH0sICR7bWFyZ2luLnRvcH0pYCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENlbnRlclRyYW5zbGF0aW9uKHJhZGl1czogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgdHJhbnNsYXRlKCR7cmFkaXVzfSwgJHtyYWRpdXN9KWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlZzJyYWQoZGVnOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChkZWcgKiBNYXRoLlBJKSAvIDE4MDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmFuZ2UoZGF0YTogbnVtYmVyW10pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke2RhdGFbMF19IGFuZCAke2RhdGFbZGF0YS5sZW5ndGggLSAxXX1gO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2socmFuZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGlja0V2ZW50LmVtaXQocmFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSGVhZGVyTWVudUNsaWNrKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyTWVudWNsaWNrRXZlbnQuZW1pdChpZCk7XHJcbiAgfVxyXG59IiwiPGRpdiAjZ3VhZ2Vjb250YWluZXIgY2xhc3M9XCJsaWItY2hhcnQtd3JhcHBlclwiIFxyXG4gICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2FyZC1iZyk7XCJcclxuICAgICAocmVzaXplZCk9XCJvblJlc2l6ZWQoJGV2ZW50KVwiPlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItYWx0XCIgKm5nSWY9XCIhaXNIZWFkZXJWaXNpYmxlXCI+XHJcbiAgICA8bGliLWNoYXJ0LWhlYWRlci12MiBcclxuICAgICAgW2NoYXJ0RGF0YV09XCJjaGFydERhdGFcIiBcclxuICAgICAgW2NoYXJ0Q29uZmlndXJhdGlvbl09XCJjaGFydENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAoY2xpY2tFdmVudCk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCI+XHJcbiAgICA8L2xpYi1jaGFydC1oZWFkZXItdjI+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGxpYi1jaGFydC1oZWFkZXItdjEgXHJcbiAgICAqbmdJZj1cImlzSGVhZGVyVmlzaWJsZVwiXHJcbiAgICBbdGl0bGVdPVwiY2hhcnREYXRhLm1ldGFEYXRhLnRpdGxlXCIgXHJcbiAgICBbaGFzRHJpbGxEb3duXT1cImNoYXJ0RGF0YS5tZXRhRGF0YS5oYXNEcmlsbERvd25cIlxyXG4gICAgW2lzRWRpdEVuYWJsZWRdPVwiY2hhcnREYXRhLm1ldGFEYXRhLmlzRWRpdEVuYWJsZWRcIiBcclxuICAgIFtpc3JpYV09XCJjdXN0b21DaGFydENvbmZpZ3VyYXRpb24uaXNSaWFcIiBcclxuICAgIFttZW51T3B0aW9uc109XCJjaGFydENvbmZpZ3VyYXRpb24uaGVhZGVyTWVudU9wdGlvbnNcIlxyXG4gICAgW3NlbGVjdGVkS3BpVG9vbHRvcF09XCJjaGFydENvbmZpZ3VyYXRpb24uc2VsZWN0ZWRLcGlUb29sdG9wXCIgXHJcbiAgICBbaXNBbGVydEVuYWJsZWRdPVwiaXNBbGVydEVuYWJsZWRcIlxyXG4gICAgKG1lbnVPcHRpb25DbGlja0V2ZW50KT1cImhhbmRsZUhlYWRlck1lbnVDbGljaygkZXZlbnQpXCI+XHJcbiAgPC9saWItY2hhcnQtaGVhZGVyLXYxPlxyXG4gIFxyXG4gIDxkaXYgI2d1YWdlY2hhcnRjb250YWluZXJcclxuICAgICAgIGlkPVwiZ3VhZ2VjaGFydGNvbnRhaW5lclwiXHJcbiAgICAgICBjbGFzcz1cImxpYi1jaGFydC1zdmcgZ3VhZ2Vjb250YWluZXJcIlxyXG4gICAgICAgW3N0eWxlLmhlaWdodC4lXT1cImNoYXJ0Q29uZmlndXJhdGlvbi5zdmdIZWlnaHRcIj5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|