@seniorsistemas/angular-components 17.16.6 → 17.16.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/seniorsistemas-angular-components.umd.js +42 -40
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/slider/slider.component.d.ts +1 -0
- package/esm2015/components/slider/slider.component.js +41 -40
- package/esm2015/components/stats-card/stats-card.component.js +1 -1
- package/esm5/components/slider/slider.component.js +42 -40
- package/esm5/components/stats-card/stats-card.component.js +1 -1
- package/fesm2015/seniorsistemas-angular-components.js +41 -40
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +42 -40
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -41,6 +41,7 @@ export declare class SliderComponent implements OnInit, AfterViewInit, ControlVa
|
|
|
41
41
|
private mapRangeValuesForSlider;
|
|
42
42
|
private activeMouseDown;
|
|
43
43
|
private focusActive;
|
|
44
|
+
constructor();
|
|
44
45
|
ngOnInit(): void;
|
|
45
46
|
ngOnChanges(changes: SimpleChanges): void;
|
|
46
47
|
ngAfterViewInit(): void;
|
|
@@ -143,7 +143,9 @@ let SliderComponent = SliderComponent_1 = class SliderComponent {
|
|
|
143
143
|
const hasChanges = hasChangesOnMin || hasChangesOnMax;
|
|
144
144
|
if (hasChanges) {
|
|
145
145
|
this.setUserRangeMapValues();
|
|
146
|
-
|
|
146
|
+
setTimeout(() => {
|
|
147
|
+
this.setRangeValues();
|
|
148
|
+
});
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
151
|
ngAfterViewInit() {
|
|
@@ -173,6 +175,7 @@ let SliderComponent = SliderComponent_1 = class SliderComponent {
|
|
|
173
175
|
}
|
|
174
176
|
writeValue(obj) {
|
|
175
177
|
this.value = obj;
|
|
178
|
+
this.setRangeValues();
|
|
176
179
|
}
|
|
177
180
|
registerOnChange(fn) {
|
|
178
181
|
this.onChange = fn;
|
|
@@ -288,6 +291,9 @@ let SliderComponent = SliderComponent_1 = class SliderComponent {
|
|
|
288
291
|
this.startValue = this.getClosestValueFromMapSlider(startValue);
|
|
289
292
|
this.endValue = this.getClosestValueFromMapSlider(endValue);
|
|
290
293
|
};
|
|
294
|
+
if (this.value === null || this.value === undefined) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
291
297
|
if (Array.isArray(this.value) && !this.multiple) {
|
|
292
298
|
throw new Error('You must use "multiple" with value as array');
|
|
293
299
|
}
|
|
@@ -295,48 +301,43 @@ let SliderComponent = SliderComponent_1 = class SliderComponent {
|
|
|
295
301
|
this.startValue = this.value[0];
|
|
296
302
|
this.endValue = this.value[1];
|
|
297
303
|
}
|
|
298
|
-
else if (this.multiple && !Array.isArray(this.value)) {
|
|
299
|
-
this.value = [this.startValue, this.endValue];
|
|
300
|
-
}
|
|
301
304
|
else if (!this.multiple) {
|
|
302
305
|
this.startValue = this.value;
|
|
303
306
|
this.endValue = this.value;
|
|
304
307
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
_startValue = _endValue - difference;
|
|
316
|
-
}
|
|
317
|
-
else if (startValueIsLessThanMin) {
|
|
318
|
-
_startValue = this.min;
|
|
319
|
-
_endValue = _startValue + difference;
|
|
320
|
-
}
|
|
321
|
-
if (needUpdateValues) {
|
|
322
|
-
_setStartAndEndValue(_startValue, _endValue);
|
|
323
|
-
this.setValue([this.startValue, this.endValue]);
|
|
324
|
-
}
|
|
308
|
+
_setStartAndEndValue(this.startValue, this.endValue);
|
|
309
|
+
if (this.multiple) {
|
|
310
|
+
let [_startValue, _endValue] = this.value;
|
|
311
|
+
const difference = getDifference(_endValue, _startValue);
|
|
312
|
+
const endValueIsGreatherThanMax = _endValue > this.max;
|
|
313
|
+
const startValueIsLessThanMin = _startValue < this.min;
|
|
314
|
+
const needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;
|
|
315
|
+
if (endValueIsGreatherThanMax) {
|
|
316
|
+
_endValue = this.max;
|
|
317
|
+
_startValue = _endValue - difference;
|
|
325
318
|
}
|
|
326
|
-
else {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
319
|
+
else if (startValueIsLessThanMin) {
|
|
320
|
+
_startValue = this.min;
|
|
321
|
+
_endValue = _startValue + difference;
|
|
322
|
+
}
|
|
323
|
+
if (needUpdateValues) {
|
|
324
|
+
_setStartAndEndValue(_startValue, _endValue);
|
|
325
|
+
this.setValue([this.startValue, this.endValue]);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
let _value = this.value;
|
|
330
|
+
const valueGreatherThanMax = _value > this.max;
|
|
331
|
+
const valueLessThanMin = _value < this.min;
|
|
332
|
+
const needUpdateValue = valueGreatherThanMax || valueLessThanMin;
|
|
333
|
+
if (valueGreatherThanMax) {
|
|
334
|
+
_value = this.max;
|
|
335
|
+
}
|
|
336
|
+
else if (valueLessThanMin) {
|
|
337
|
+
_value = this.min;
|
|
338
|
+
}
|
|
339
|
+
if (needUpdateValue) {
|
|
340
|
+
this.setValue(_value, false);
|
|
340
341
|
}
|
|
341
342
|
}
|
|
342
343
|
this.setProgress();
|
|
@@ -573,7 +574,7 @@ __decorate([
|
|
|
573
574
|
SliderComponent = SliderComponent_1 = __decorate([
|
|
574
575
|
Component({
|
|
575
576
|
selector: "s-slider",
|
|
576
|
-
template: "<div\n class=\"slider-container\"\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\n [tabindex]=\"tabindex\"\n (click)=\"onTrackClick($event)\"\n (focus)=\"onFocusIn()\"\n (blur)=\"onBlur()\">\n <div\n #track\n class=\"slider-track\"\n [ngClass]=\"{\n 'slider-track--hidden-thumb': hiddenThumb,\n 'slider-track--moving-multiple-thumbs': movingProgressBar\n }\">\n <div\n class=\"slider-progress\"\n (mousedown)=\"onProgressMouseDown($event)\"\n [style.left.%]=\"progressLeft\"\n [style.width]=\"progressWidth\"\n ></div>\n <div\n *ngIf=\"multiple\"\n class=\"slider-thumb\"\n [sTooltip]=\"tooltipStartText\"\n (mousedown)=\"onMouseDown($event, 'start')\"\n [style.left.%]=\"startValue\"\n ></div>\n <div\n [sTooltip]=\"tooltipEndText\"\n class=\"slider-thumb\"\n (mousedown)=\"onMouseDown($event, 'end')\"\n [style.left.%]=\"endValue\"></div>\n </div>\n <div class=\"footer\">\n <span>{{ minValueLabel || min }}</span>\n <span>{{ maxValueLabel || max }}</span>\n </div>\n</div>\n",
|
|
577
|
+
template: "<div\n class=\"slider-container\"\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\n [tabindex]=\"tabindex\"\n (click)=\"onTrackClick($event)\"\n (focus)=\"onFocusIn()\"\n (blur)=\"onBlur()\">\n <div\n #track\n class=\"slider-track\"\n [ngClass]=\"{\n 'slider-track--hidden-thumb': hiddenThumb,\n 'slider-track--moving-multiple-thumbs': movingProgressBar\n }\">\n <div\n class=\"slider-progress\"\n (mousedown)=\"onProgressMouseDown($event)\"\n [style.left.%]=\"progressLeft\"\n [style.width]=\"progressWidth\"\n ></div>\n <div\n *ngIf=\"multiple\"\n class=\"slider-thumb\"\n [sTooltip]=\"tooltipStartText\"\n [showDelay]=\"0\"\n (mousedown)=\"onMouseDown($event, 'start')\"\n [style.left.%]=\"startValue\"\n ></div>\n <div\n [sTooltip]=\"tooltipEndText\"\n class=\"slider-thumb\"\n [showDelay]=\"0\"\n (mousedown)=\"onMouseDown($event, 'end')\"\n [style.left.%]=\"endValue\"></div>\n </div>\n <div class=\"footer\">\n <span>{{ minValueLabel || min }}</span>\n <span>{{ maxValueLabel || max }}</span>\n </div>\n</div>\n",
|
|
577
578
|
providers: [
|
|
578
579
|
{
|
|
579
580
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -616,4 +617,4 @@ const getDifference = (end, start) => {
|
|
|
616
617
|
};
|
|
617
618
|
const ɵ3 = getDifference;
|
|
618
619
|
export { ɵ0, ɵ1, ɵ2, ɵ3 };
|
|
619
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjekUsSUFBYSxlQUFlLHVCQUE1QixNQUFhLGVBQWU7SUFBNUI7UUFDcUIsb0JBQWUsR0FBRyxHQUFHLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFLOUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixVQUFLLEdBQThCLENBQUMsQ0FBQztRQUdyQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO1FBRzVELFNBQUksR0FBRyxDQUFDLENBQUM7UUFHVCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFFBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRzNCLFFBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBUzNCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFYixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixhQUFRLEdBQStDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRSxjQUFTLEdBQStDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVq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Q0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNGLE9BQU8sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDO0FBQ3hDLENBQUMsQ0FBQzs7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQTs7QUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLXNsaWRlclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vc2xpZGVyLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3NsaWRlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9SQU5HRV9WQUxVRSA9IDEwMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1JTl9SQU5HRV9WQUxVRSA9IDA7XG4gICAgQFZpZXdDaGlsZChcInRyYWNrXCIpXG4gICAgcHVibGljIHRyYWNrITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSA9IDA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdGVwID0gMTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGRlblRodW1iID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXggPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heFZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIHB1YmxpYyBzdGFydFZhbHVlID0gMDtcbiAgICBwdWJsaWMgZW5kVmFsdWUgPSAwO1xuICAgIHB1YmxpYyBtb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgIHB1YmxpYyBwcm9ncmVzc0xlZnQgPSAwO1xuICAgIHB1YmxpYyBwcm9ncmVzc1dpZHRoID0gXCJcIjtcblxuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSkgPT4gdm9pZCA9ICgpID0+IHsgfTtcblxuICAgIHByaXZhdGUgZHJhZ2dpbmdUaHVtYjogXCJzdGFydFwiIHwgXCJlbmRcIiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICBwcml2YXRlIHN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgcHJpdmF0ZSByYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICBwcml2YXRlIHRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgLyoqXG4gICAgICogTWFwIG9mIHZhbGlkIHZhbHVlcyBmb3IgdmFsdWVzIGluIHJhbmdlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2l0aCBtaW4gPSAtMTAgYW5kIG1heCA9IDEwIHdpbGwgaGF2ZSB0aGlzIG1hcC5cbiAgICAgKiB7XG4gICAgICogICAgIC0xMDogeyAwIH0sXG4gICAgICogICAgIC05OiB7IDEwIH0sXG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgMTA6IHsgMTAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBwcml2YXRlIG1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyOiBNYXA8bnVtYmVyLCBudW1iZXI+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgYWN0aXZlTW91c2VEb3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb2N1c0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFVzZXJSYW5nZU1hcFZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXNPbk1pbiA9IGNoYW5nZXMubWluICYmICFjaGFuZ2VzLm1pbi5maXJzdENoYW5nZTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlc09uTWF4ID0gY2hhbmdlcy5tYXggJiYgIWNoYW5nZXMubWF4LmZpcnN0Q2hhbmdlO1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzID0gaGFzQ2hhbmdlc09uTWluIHx8IGhhc0NoYW5nZXNPbk1heDtcbiAgICAgICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VXNlclJhbmdlTWFwVmFsdWVzKCk7XG4gICAgICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWVzKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWVzKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBvbktleWRvd24oJGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzQWN0aXZlICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93S2V5TGVmdCA9ICRldmVudC5rZXkgPT09IFwiQXJyb3dMZWZ0XCI7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93S2V5UmlnaHQgPSAkZXZlbnQua2V5ID09PSBcIkFycm93UmlnaHRcIjtcbiAgICAgICAgICAgIGlmIChpc0Fycm93S2V5TGVmdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQXJyb3dLZXlMZWZ0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQXJyb3dLZXlSaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQXJyb3dLZXlSaWdodCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdGlwU3RhcnRUZXh0KCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IHRoaXMudmFsdWVbMF0/LnRvU3RyaW5nKCkgOiB0aGlzLnZhbHVlPy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRpcEVuZFRleHQoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZVsxXT8udG9TdHJpbmcoKSA6IHRoaXMudmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Gb2N1c0luKCkge1xuICAgICAgICB0aGlzLmZvY3VzQWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVHJhY2tDbGljayhldnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLm1vdmluZ1Byb2dyZXNzQmFyIHx8IHRoaXMuYWN0aXZlTW91c2VEb3duKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhY2tDbGlja1BlcmNlbnRhZ2UgPSB0aGlzLmdldFBlcmNlbnRhZ2VCeUV2ZW50KGV2dCk7XG4gICAgICAgIGNvbnN0IHRyYWNrQ2xpY2tUb1VzZXJSYW5nZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZSh0cmFja0NsaWNrUGVyY2VudGFnZSk7XG4gICAgICAgIGNvbnN0IF90cmFja0NsaWNrVmFsaWQgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRyYWNrQ2xpY2tUb1VzZXJSYW5nZSA6IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICBjb25zdCBfc2V0RW5kVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfZW5kVmFsdWVVc2VyVmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodGhpcy5lbmRWYWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBfZW5kVmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHRyYWNrQ2xpY2tUb1VzZXJSYW5nZSkgOiB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcyAmJiBfZW5kVmFsdWVVc2VyVmFsdWUgIT09IHRyYWNrQ2xpY2tUb1VzZXJSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSBfZW5kVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBfc2V0U3RhcnRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9zdGFydFZhbHVlVXNlclZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHRoaXMuc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgX3N0YXJ0VmFsdWVVc2VyVmFsdWUgIT09IHRyYWNrQ2xpY2tUb1VzZXJSYW5nZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9zdGFydFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldCh0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gX3N0YXJ0VmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICAgICAgY29uc3QgdmFsaWRTdGFydCA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQoc3RhcnQpIDogc3RhcnQ7XG4gICAgICAgICAgICBjb25zdCB2YWxpZEVuZCA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQoZW5kKSA6IGVuZDtcbiAgICAgICAgICAgIGNvbnN0IF91cGRhdGVTdGFydCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBfc2V0U3RhcnRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoW3RyYWNrQ2xpY2tQZXJjZW50YWdlLCB2YWxpZEVuZF0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgX3VwZGF0ZUVuZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBfc2V0RW5kVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt2YWxpZFN0YXJ0LCB0cmFja0NsaWNrUGVyY2VudGFnZV0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrUGVyY2VudGFnZUJldHdlZW5SYW5nZSA9IGlzSW5SYW5nZShfdHJhY2tDbGlja1ZhbGlkLCBzdGFydCwgZW5kKTtcbiAgICAgICAgICAgIGlmIChfdHJhY2tDbGlja1ZhbGlkIDwgc3RhcnQpIHtcbiAgICAgICAgICAgICAgICBfdXBkYXRlU3RhcnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX3RyYWNrQ2xpY2tWYWxpZCA+IGVuZCkge1xuICAgICAgICAgICAgICAgIF91cGRhdGVFbmQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xpY2tQZXJjZW50YWdlQmV0d2VlblJhbmdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWlkZGxlID0gKHN0YXJ0ICsgZW5kKSAvIDI7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJhY2tDbGlja1BlcmNlbnRhZ2VJc0V4YWN0aWRkbGUgPSBfdHJhY2tDbGlja1ZhbGlkID09PSBtaWRkbGU7XG4gICAgICAgICAgICAgICAgaWYgKHRyYWNrQ2xpY2tQZXJjZW50YWdlSXNFeGFjdGlkZGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIF91cGRhdGVTdGFydCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldFN0YXJ0ID0gX3RyYWNrQ2xpY2tWYWxpZCA8IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0RW5kID0gX3RyYWNrQ2xpY2tWYWxpZCA+IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdXBkYXRlU3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZXRFbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF91cGRhdGVFbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodHJhY2tDbGlja1BlcmNlbnRhZ2UpO1xuICAgICAgICAgICAgX3NldEVuZFZhbHVlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUHJvZ3Jlc3NNb3VzZURvd24oZXZ0OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2dyZXNzQmFyRXZlbnRQb3NpdGlvblN0YXJ0ID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldnQpO1xuICAgICAgICB0aGlzLnN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gdGhpcy5zdGFydFZhbHVlO1xuICAgICAgICB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IHRoaXMuZW5kVmFsdWUgLSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSB0aGlzLnZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gZW5kIC0gc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlUHJvZ3Jlc3NCYXJNb3ZlRW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb3VzZURvd24oXzogTW91c2VFdmVudCwgdGh1bWI6IFwic3RhcnRcIiB8IFwiZW5kXCIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgICAgICB0aGlzLmRyYWdnaW5nVGh1bWIgPSB0aHVtYjtcbiAgICAgICAgdGhpcy5hY3RpdmVNb3VzZURvd24gPSB0cnVlO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25UaHVtYk1vdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uTW91c2VVcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSYW5nZVZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgX3NldFN0YXJ0QW5kRW5kVmFsdWUgPSAoc3RhcnRWYWx1ZTogbnVtYmVyLCBlbmRWYWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKGVuZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCB1c2UgXCJtdWx0aXBsZVwiIHdpdGggdmFsdWUgYXMgYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMudmFsdWVbMV07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZSAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgX3NldFN0YXJ0QW5kRW5kVmFsdWUodGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgbGV0IFtfc3RhcnRWYWx1ZSwgX2VuZFZhbHVlXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gZ2V0RGlmZmVyZW5jZShfZW5kVmFsdWUsIF9zdGFydFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRWYWx1ZUlzR3JlYXRoZXJUaGFuTWF4ID0gX2VuZFZhbHVlID4gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4gPSBfc3RhcnRWYWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRVcGRhdGVWYWx1ZXMgPSBlbmRWYWx1ZUlzR3JlYXRoZXJUaGFuTWF4IHx8IHN0YXJ0VmFsdWVJc0xlc3NUaGFuTWluO1xuICAgICAgICAgICAgICAgIGlmIChlbmRWYWx1ZUlzR3JlYXRoZXJUaGFuTWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgICAgICBfc3RhcnRWYWx1ZSA9IF9lbmRWYWx1ZSAtIGRpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFZhbHVlSXNMZXNzVGhhbk1pbikge1xuICAgICAgICAgICAgICAgICAgICBfc3RhcnRWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgICAgICBfZW5kVmFsdWUgPSBfc3RhcnRWYWx1ZSArIGRpZmZlcmVuY2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZWVkVXBkYXRlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIF9zZXRTdGFydEFuZEVuZFZhbHVlKF9zdGFydFZhbHVlLCBfZW5kVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBfdmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUdyZWF0aGVyVGhhbk1heCA9IF92YWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlTGVzc1RoYW5NaW4gPSBfdmFsdWUgPCB0aGlzLm1pbjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZWVkVXBkYXRlVmFsdWUgPSB2YWx1ZUdyZWF0aGVyVGhhbk1heCB8fCB2YWx1ZUxlc3NUaGFuTWluO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUdyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgICAgICBfdmFsdWUgPSB0aGlzLm1heDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlTGVzc1RoYW5NaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZhbHVlID0gdGhpcy5taW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZWVkVXBkYXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShfdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblRodW1iTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCAhdGhpcy5kcmFnZ2luZ1RodW1iKSByZXR1cm47XG5cbiAgICAgICAgbGV0IG5ld1Bvc2l0aW9uID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiICYmIG5ld1Bvc2l0aW9uID4gdGhpcy5lbmRWYWx1ZSkgfHxcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJlbmRcIiAmJiBuZXdQb3NpdGlvbiA8IHRoaXMuc3RhcnRWYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbkluVXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKG5ld1Bvc2l0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwiZW5kXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdKTtcblxuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCAmJiB0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwic3RhcnRcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09PSBlbmQgJiYgdGhpcy5kcmFnZ2luZ1RodW1iID09PSBcImVuZFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyBwb3NpdGlvbkluVXNlclJhbmdlIDogbmV3UG9zaXRpb247XG4gICAgICAgICAgICBjb25zdCBpc0F0U2FtZVZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyBwb3NpdGlvbkluVXNlclJhbmdlID09PSB0aGlzLnZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBoYXNTdGVwID0gdGhpcy5zdGVwICE9PSAwO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVJc1ZhbGlkQnlTdGVwID0gaGFzU3RlcCA/IGN1cnJlbnRWYWx1ZSArIHRoaXMuc3RlcCA9PT0gX3ZhbHVlIHx8IGN1cnJlbnRWYWx1ZSAtIHRoaXMuc3RlcCA9PT0gX3ZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoaXNBdFNhbWVWYWx1ZSAmJiAhbmV3VmFsdWVJc1ZhbGlkQnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQocG9zaXRpb25JblVzZXJSYW5nZSkgOiBuZXdQb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmdUaHVtYiA9IG51bGw7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vblRodW1iTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vdXNlRG93biA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb2dyZXNzQmFyTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm1vdmluZ1Byb2dyZXNzQmFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbmV3Q2VudGVyID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCA9IHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVCZWZvcmVFdmVudCA9IHRoaXMuc3RhcnRWYWx1ZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5yYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgIGxldCB7IG5ld1N0YXJ0LCBuZXdFbmQgfSA9IGNhbGN1bGF0ZU5ld1JhbmdlKFxuICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50LFxuICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50ICsgcmFuZ2UsXG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnQsXG4gICAgICAgICAgICBuZXdDZW50ZXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG5ld1N0YXJ0IDwgdGhpcy5NSU5fUkFOR0VfVkFMVUUgfHwgbmV3RW5kID4gdGhpcy5NQVhfUkFOR0VfVkFMVUUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVCZWZvcmVFdmVudFVzZXJSYW5nZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZShzdGFydFZhbHVlQmVmb3JlRXZlbnQpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50VXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCk7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJVc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUobmV3Q2VudGVyKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUmFuZ2UgPSB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50O1xuICAgICAgICAgICAgbGV0IHsgbmV3U3RhcnQsIG5ld0VuZCB9ID0gY2FsY3VsYXRlTmV3UmFuZ2UoXG4gICAgICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlLFxuICAgICAgICAgICAgICAgIHN0YXJ0VmFsdWVCZWZvcmVFdmVudFVzZXJSYW5nZSArIHZhbHVlUmFuZ2UsXG4gICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50VXNlclJhbmdlLFxuICAgICAgICAgICAgICAgIGNlbnRlclVzZXJSYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChuZXdTdGFydCA8IHRoaXMubWluIHx8IG5ld0VuZCA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQobmV3U3RhcnQpO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KG5ld0VuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBuZXdTdGFydDtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSBuZXdFbmQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShbdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlXSk7XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoYW5kbGVQcm9ncmVzc0Jhck1vdmVFbmQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmUpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldFByb2dyZXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0xlZnQgPSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzV2lkdGggPSBgY2FsYygke3RoaXMuZW5kVmFsdWUgLSB0aGlzLnN0YXJ0VmFsdWV9JSArIDEwcHgpYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NMZWZ0ID0gMDtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NXaWR0aCA9IGBjYWxjKCR7dGhpcy5lbmRWYWx1ZX0lICsgMTBweClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwZXJjZW50YWdlIG9mIGEgbW91c2UgZXZlbnQgZnJvbSB0aGUgdHJhY2sncyBsZWZ0IGVkZ2VcbiAgICAgKiBAcGFyYW0gbW91c2VFdmVudCBtb3VzZSBldmVudFxuICAgICAqIEByZXR1cm5zIHBlcmNlbnRhZ2UgZnJvbSB0aGUgbGVmdCBlZGdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQZXJjZW50YWdlQnlFdmVudChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdHJhY2tSZWN0ID0gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZXQgbmV3TGVmdCA9IE1hdGgucm91bmQoKChtb3VzZUV2ZW50LmNsaWVudFggLSB0cmFja1JlY3QubGVmdCkgLyB0cmFja1JlY3Qud2lkdGgpICogdGhpcy5NQVhfUkFOR0VfVkFMVUUpO1xuICAgICAgICBuZXdMZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obmV3TGVmdCwgdGhpcy5NQVhfUkFOR0VfVkFMVUUpKTtcbiAgICAgICAgcmV0dXJuIG5ld0xlZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSwgcGFyc2UgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgcGFyc2UpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoeCkpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMubWF4O1xuICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWF4IHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbiB2YWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgY29uc3QgZGVjaW1hbFBsYWNlcyA9IDI7XG4gICAgICAgIGNvbnN0IHN0ZXBDb3VudCA9IE1hdGguZmxvb3IocmFuZ2UgLyB0aGlzLnN0ZXApO1xuICAgICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlID0gc3RhcnQ7IHZhbHVlIDw9IGVuZDsgdmFsdWUgKz0gdGhpcy5zdGVwKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gIT09IGVuZCkge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2goZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1hcHBlZCA9ICgodmFsdWUgLSBzdGFydCkgLyByYW5nZSkgKiB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcHBlZC50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcHBlZFZhbHVlc1swXSA9IDA7XG4gICAgICAgIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV0gPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLk1BWF9SQU5HRV9WQUxVRSAtIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGVycm9yUGVyU3RlcCA9IGVycm9yIC8gc3RlcENvdW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG1hcHBlZFZhbHVlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hcHBlZFZhbHVlc1tpXSArPSBlcnJvclBlclN0ZXA7XG4gICAgICAgICAgICBtYXBwZWRWYWx1ZXNbaV0gPSBwYXJzZUZsb2F0KG1hcHBlZFZhbHVlc1tpXS50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLnNldCh2YWx1ZSwgbWFwcGVkVmFsdWVzW2luZGV4XSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlIGJ5IHVzaW5nIHRoZSBtYXAgb2YgcmFuZ2UgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogSWYgdGhlIG1hcCBpcyAwOiB7IDAgfSwgMTogeyAxMCB9LCAyOiB7IDMwIH0sIDM6IHsgNDAgfSwgNDogeyA1MCB9XG4gICAgICogYW5kIHRoZSBzbGlkZXJWYWx1ZSBpcyAzNywgdGhlIGZ1bmN0aW9uIHJldHVybnMgM1xuICAgICAqIG9yIHRoZSBzbGlkZXIgdmFsdWUgaXMgNDAsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDRcbiAgICAgKiBAcGFyYW0gc2xpZGVyVmFsdWUgdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXIgKHZhbHVlcyBvbmx5IGJldHdlZW4gcmFuZ2UgTUlOIGFuZCBNQVgpXG4gICAgICogQHJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHNsaWRlclZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWFwVG9BcnJheSA9IEFycmF5LmZyb20odGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlcikubWFwKChbdmFsdWUsIG1hcHBlZF0pID0+ICh7IHZhbHVlLCBtYXBwZWQgfSkpO1xuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4Lm1hcHBlZCA9PSBzbGlkZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSBtYXBUb0FycmF5LnJlZHVjZSgocHJldiwgY3VycikgPT4gTWF0aC5hYnMoY3Vyci5tYXBwZWQgLSBzbGlkZXJWYWx1ZSkgPCBNYXRoLmFicyhwcmV2Lm1hcHBlZCAtIHNsaWRlclZhbHVlKSA/IGN1cnIgOiBwcmV2KTtcbiAgICAgICAgcmV0dXJuIGV4YWN0VmFsdWUgPyBleGFjdFZhbHVlLnZhbHVlIDogY2xvc2VzdC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGtleSBmcm9tIHRoZSBtYXAgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBnaXZlbiBzbGlkZXIgdmFsdWUuXG4gICAgICogQHBhcmFtIHVzZXJWYWx1ZSAtIFRoZSB2YWx1ZSB0byBmaW5kIHRoZSBjbG9zZXN0IGtleSBmb3IuICh2YWx1ZXMgb25seSBiZXR3ZWVuIDAgLSAxMDApXG4gICAgICogQHJldHVybnMgVGhlIGtleSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjbG9zZXN0IG1hcHBlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIodXNlclZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtYXBUb0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyKS5tYXAoKFt2YWx1ZSwgbWFwcGVkXSkgPT4gKHsgdmFsdWUsIG1hcHBlZCB9KSk7XG4gICAgICAgIGlmICh1c2VyVmFsdWUgPj0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBUb0FycmF5W21hcFRvQXJyYXkubGVuZ3RoIC0gMV0ubWFwcGVkXG4gICAgICAgIH0gZWxzZSBpZiAodXNlclZhbHVlIDw9IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheVswXS5tYXBwZWRcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4LnZhbHVlID09IHVzZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3RWYWx1ZSA9IG1hcFRvQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLmFicyhjdXJyLnZhbHVlIC0gdXNlclZhbHVlKSA8IE1hdGguYWJzKHByZXYudmFsdWUgLSB1c2VyVmFsdWUpID8gY3VyciA6IHByZXYpO1xuICAgICAgICBjb25zdCBpdGVtID0gZXhhY3RWYWx1ZSB8fCBjbG9zZXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gbWFwVG9BcnJheVswXSA9PT0gaXRlbTtcbiAgICAgICAgY29uc3QgaXNMYXN0SXRlbSA9IG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAxXSA9PT0gaXRlbTtcbiAgICAgICAgaWYgKGlzRmlyc3RJdGVtICYmIHVzZXJWYWx1ZSA+IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbMV0ubWFwcGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0xhc3RJdGVtICYmIHVzZXJWYWx1ZSA8IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAyXS5tYXBwZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWFwcGVkO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGhhbmRsZUFycm93S2V5TGVmdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50U3RhcnRBbmRFbmRWYWx1ZShmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudEVuZFZhbHVlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBcnJvd0tleVJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKGluY3JlbWVudDogYm9vbGVhbikge1xuICAgICAgICBsZXQgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gZ2V0RGlmZmVyZW5jZShlbmQsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGluY3JlbWVudCkge1xuICAgICAgICAgICAgc3RhcnQgKz0gdGhpcy5zdGVwO1xuICAgICAgICAgICAgZW5kICs9IHRoaXMuc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0IC09IHRoaXMuc3RlcDtcbiAgICAgICAgICAgIGVuZCAtPSB0aGlzLnN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnRMZXNzVGhhbk1pbiA9IHN0YXJ0IDwgdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZEdyZWF0ZXJUaGFuTWF4ID0gZW5kID4gdGhpcy5tYXg7XG4gICAgICAgIGlmIChzdGFydExlc3NUaGFuTWluIHx8IGVuZEdyZWF0ZXJUaGFuTWF4KSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRMZXNzVGhhbk1pbikge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRHcmVhdGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQgPCB0aGlzLm1pbiB8fCBlbmQgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoW3N0YXJ0LCBlbmRdLCBmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgc3RhcnQgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoc3RhcnQpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSBlbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChpbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IHRoaXMuc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlIC09IHRoaXMuc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgX25ld0VuZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgX25ld0VuZFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKF9uZXdFbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9uZXdFbmRWYWx1ZSA8IHRoaXMuTUlOX1JBTkdFX1ZBTFVFIHx8IF9uZXdFbmRWYWx1ZSA+IHRoaXMuTUFYX1JBTkdFX1ZBTFVFKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IF9uZXdFbmRWYWx1ZTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5lbmRWYWx1ZTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShfbmV3RW5kVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5lZWRQYXJzZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ICE9PSB0aGlzLk1BWF9SQU5HRV9WQUxVRSB8fCB0aGlzLm1pbiAhPT0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG4gICAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgYSBuZXcgcmFuZ2UgYmFzZWQgb24gdGhlIG9sZCByYW5nZSBhbmQgdGhlIHBvc2l0aW9ucyBjbGlja2VkIGFuZCBmaW5hbGl6ZWQuXG4gKlxuICogQHBhcmFtIG9sZFN0YXJ0IC0gVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBvbGQgcmFuZ2UuXG4gKiBAcGFyYW0gb2xkRW5kIC0gVGhlIGVuZGluZyB2YWx1ZSBvZiB0aGUgb2xkIHJhbmdlLlxuICogQHBhcmFtIGNsaWNrZWRQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgY2xpY2sgb2NjdXJyZWQuXG4gKiBAcGFyYW0gZmluYWxQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcmFuZ2Ugc2hvdWxkIGVuZC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXcgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgb2YgdGhlIHJhbmdlLlxuICovXG5jb25zdCBjYWxjdWxhdGVOZXdSYW5nZSA9IChvbGRTdGFydDogbnVtYmVyLCBvbGRFbmQ6IG51bWJlciwgY2xpY2tlZFBvc2l0aW9uOiBudW1iZXIsIGZpbmFsUG9zaXRpb246IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHJhbmdlID0gb2xkRW5kIC0gb2xkU3RhcnQ7XG4gICAgY29uc3QgbmV3U3RhcnQgPSBmaW5hbFBvc2l0aW9uIC0gKGNsaWNrZWRQb3NpdGlvbiAtIG9sZFN0YXJ0KTtcbiAgICBjb25zdCBuZXdFbmQgPSBuZXdTdGFydCArIHJhbmdlO1xuICAgIHJldHVybiB7IG5ld1N0YXJ0LCBuZXdFbmQgfTtcbn07XG5cbmNvbnN0IGlzSW5SYW5nZSA9ICh2YWx1ZTogbnVtYmVyLCByYW5nZVN0YXJ0OiBudW1iZXIsIHJhbmdlRW5kOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbbWluLCBtYXhdID0gcmFuZ2VTdGFydCA8IHJhbmdlRW5kID8gW3JhbmdlU3RhcnQsIHJhbmdlRW5kXSA6IFtyYW5nZUVuZCwgcmFuZ2VTdGFydF07XG4gICAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuXG5jb25zdCBnZXRNaWRwb2ludCA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1pZHBvaW50ID0gKHN0YXJ0ICsgZW5kKSAvIDI7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQobWlkcG9pbnQudG9GaXhlZCgyKSk7XG59XG5jb25zdCBnZXREaWZmZXJlbmNlID0gKGVuZDogbnVtYmVyLCBzdGFydDogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGVuZCAtIHN0YXJ0KTtcbn1cbiJdfQ==
|
|
620
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjekUsSUFBYSxlQUFlLHVCQUE1QixNQUFhLGVBQWU7SUFvRXhCO1FBbkVpQixvQkFBZSxHQUFHLEdBQUcsQ0FBQztRQUN0QixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUs5QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFVBQUssR0FBOEIsQ0FBQyxDQUFDO1FBR3JDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFHNUQsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUdULGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBR3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsUUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFHM0IsUUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFTM0IsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUViLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLGFBQVEsR0FBK0MsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLGNBQVMsR0FBK0MsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNGLE9BQU8sS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDO0FBQ3hDLENBQUMsQ0FBQzs7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQTs7QUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLXNsaWRlclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vc2xpZGVyLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3NsaWRlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9SQU5HRV9WQUxVRSA9IDEwMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1JTl9SQU5HRV9WQUxVRSA9IDA7XG4gICAgQFZpZXdDaGlsZChcInRyYWNrXCIpXG4gICAgcHVibGljIHRyYWNrITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSA9IDA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdGVwID0gMTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGRlblRodW1iID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXggPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heFZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIHB1YmxpYyBzdGFydFZhbHVlID0gMDtcbiAgICBwdWJsaWMgZW5kVmFsdWUgPSAwO1xuICAgIHB1YmxpYyBtb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgIHB1YmxpYyBwcm9ncmVzc0xlZnQgPSAwO1xuICAgIHB1YmxpYyBwcm9ncmVzc1dpZHRoID0gXCJcIjtcblxuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSkgPT4gdm9pZCA9ICgpID0+IHsgfTtcblxuICAgIHByaXZhdGUgZHJhZ2dpbmdUaHVtYjogXCJzdGFydFwiIHwgXCJlbmRcIiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICBwcml2YXRlIHN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgcHJpdmF0ZSByYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICBwcml2YXRlIHRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgLyoqXG4gICAgICogTWFwIG9mIHZhbGlkIHZhbHVlcyBmb3IgdmFsdWVzIGluIHJhbmdlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2l0aCBtaW4gPSAtMTAgYW5kIG1heCA9IDEwIHdpbGwgaGF2ZSB0aGlzIG1hcC5cbiAgICAgKiB7XG4gICAgICogICAgIC0xMDogeyAwIH0sXG4gICAgICogICAgIC05OiB7IDEwIH0sXG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgMTA6IHsgMTAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBwcml2YXRlIG1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyOiBNYXA8bnVtYmVyLCBudW1iZXI+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgYWN0aXZlTW91c2VEb3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb2N1c0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzT25NaW4gPSBjaGFuZ2VzLm1pbiAmJiAhY2hhbmdlcy5taW4uZmlyc3RDaGFuZ2U7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXNPbk1heCA9IGNoYW5nZXMubWF4ICYmICFjaGFuZ2VzLm1heC5maXJzdENoYW5nZTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlcyA9IGhhc0NoYW5nZXNPbk1pbiB8fCBoYXNDaGFuZ2VzT25NYXg7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnNldFVzZXJSYW5nZU1hcFZhbHVlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlcygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZXMoKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6a2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNBY3RpdmUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlMZWZ0ID0gJGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIjtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlSaWdodCA9ICRldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiO1xuICAgICAgICAgICAgaWYgKGlzQXJyb3dLZXlMZWZ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcnJvd0tleUxlZnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJvd0tleVJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcnJvd0tleVJpZ2h0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBTdGFydFRleHQoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZVswXT8udG9TdHJpbmcoKSA6IHRoaXMudmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdGlwRW5kVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlWzFdPy50b1N0cmluZygpIDogdGhpcy52YWx1ZT8udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG9iajtcbiAgICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRm9jdXNJbigpIHtcbiAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRyYWNrQ2xpY2soZXZ0OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCB0aGlzLmFjdGl2ZU1vdXNlRG93bikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYWNrQ2xpY2tQZXJjZW50YWdlID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldnQpO1xuICAgICAgICBjb25zdCB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodHJhY2tDbGlja1BlcmNlbnRhZ2UpO1xuICAgICAgICBjb25zdCBfdHJhY2tDbGlja1ZhbGlkID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UgOiB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgY29uc3QgX3NldEVuZFZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2VuZFZhbHVlVXNlclZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgX2VuZFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldCh0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIDogdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgX2VuZFZhbHVlVXNlclZhbHVlICE9PSB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gX2VuZFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgX3NldFN0YXJ0VmFsdWUgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfc3RhcnRWYWx1ZVVzZXJWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZSh0aGlzLnN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzICYmIF9zdGFydFZhbHVlVXNlclZhbHVlICE9PSB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBfc3RhcnRWYWx1ZSA9IHRoaXMubmVlZFBhcnNlVmFsdWVzXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQodHJhY2tDbGlja1RvVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IF9zdGFydFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkU3RhcnQgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHN0YXJ0KSA6IHN0YXJ0O1xuICAgICAgICAgICAgY29uc3QgdmFsaWRFbmQgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KGVuZCkgOiBlbmQ7XG4gICAgICAgICAgICBjb25zdCBfdXBkYXRlU3RhcnQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgX3NldFN0YXJ0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0cmFja0NsaWNrUGVyY2VudGFnZSwgdmFsaWRFbmRdKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IF91cGRhdGVFbmQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgX3NldEVuZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdmFsaWRTdGFydCwgdHJhY2tDbGlja1BlcmNlbnRhZ2VdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBjbGlja1BlcmNlbnRhZ2VCZXR3ZWVuUmFuZ2UgPSBpc0luUmFuZ2UoX3RyYWNrQ2xpY2tWYWxpZCwgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICBpZiAoX3RyYWNrQ2xpY2tWYWxpZCA8IHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgX3VwZGF0ZVN0YXJ0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90cmFja0NsaWNrVmFsaWQgPiBlbmQpIHtcbiAgICAgICAgICAgICAgICBfdXBkYXRlRW5kKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNsaWNrUGVyY2VudGFnZUJldHdlZW5SYW5nZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IChzdGFydCArIGVuZCkgLyAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrQ2xpY2tQZXJjZW50YWdlSXNFeGFjdGlkZGxlID0gX3RyYWNrQ2xpY2tWYWxpZCA9PT0gbWlkZGxlO1xuICAgICAgICAgICAgICAgIGlmICh0cmFja0NsaWNrUGVyY2VudGFnZUlzRXhhY3RpZGRsZSkge1xuICAgICAgICAgICAgICAgICAgICBfdXBkYXRlU3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXRTdGFydCA9IF90cmFja0NsaWNrVmFsaWQgPCBtaWRkbGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldEVuZCA9IF90cmFja0NsaWNrVmFsaWQgPiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXRTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2V0RW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdXBkYXRlRW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRyYWNrQ2xpY2tQZXJjZW50YWdlKTtcbiAgICAgICAgICAgIF9zZXRFbmRWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblByb2dyZXNzTW91c2VEb3duKGV2dDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9ncmVzc0JhckV2ZW50UG9zaXRpb25TdGFydCA9IHRoaXMuZ2V0UGVyY2VudGFnZUJ5RXZlbnQoZXZ0KTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgdGhpcy5yYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSB0aGlzLmVuZFZhbHVlIC0gdGhpcy5zdGFydFZhbHVlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICAgICAgdGhpcy50b3RhbFJhbmdlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IGVuZCAtIHN0YXJ0O1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VEb3duKF86IE1vdXNlRXZlbnQsIHRodW1iOiBcInN0YXJ0XCIgfCBcImVuZFwiKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kcmFnZ2luZ1RodW1iID0gdGh1bWI7XG4gICAgICAgIHRoaXMuYWN0aXZlTW91c2VEb3duID0gdHJ1ZTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uVGh1bWJNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UmFuZ2VWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IF9zZXRTdGFydEFuZEVuZFZhbHVlID0gKHN0YXJ0VmFsdWU6IG51bWJlciwgZW5kVmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKHN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMuZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcihlbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgdXNlIFwibXVsdGlwbGVcIiB3aXRoIHZhbHVlIGFzIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy52YWx1ZVswXTtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgICBfc2V0U3RhcnRBbmRFbmRWYWx1ZSh0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgbGV0IFtfc3RhcnRWYWx1ZSwgX2VuZFZhbHVlXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBnZXREaWZmZXJlbmNlKF9lbmRWYWx1ZSwgX3N0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZW5kVmFsdWVJc0dyZWF0aGVyVGhhbk1heCA9IF9lbmRWYWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4gPSBfc3RhcnRWYWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlcyA9IGVuZFZhbHVlSXNHcmVhdGhlclRoYW5NYXggfHwgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW47XG4gICAgICAgICAgICBpZiAoZW5kVmFsdWVJc0dyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIF9zdGFydFZhbHVlID0gX2VuZFZhbHVlIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4pIHtcbiAgICAgICAgICAgICAgICBfc3RhcnRWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IF9zdGFydFZhbHVlICsgZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZWVkVXBkYXRlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgX3NldFN0YXJ0QW5kRW5kVmFsdWUoX3N0YXJ0VmFsdWUsIF9lbmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgX3ZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUdyZWF0aGVyVGhhbk1heCA9IF92YWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgY29uc3QgdmFsdWVMZXNzVGhhbk1pbiA9IF92YWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlID0gdmFsdWVHcmVhdGhlclRoYW5NYXggfHwgdmFsdWVMZXNzVGhhbk1pbjtcbiAgICAgICAgICAgIGlmICh2YWx1ZUdyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIF92YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUxlc3NUaGFuTWluKSB7XG4gICAgICAgICAgICAgICAgX3ZhbHVlID0gdGhpcy5taW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmVlZFVwZGF0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShfdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblRodW1iTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCAhdGhpcy5kcmFnZ2luZ1RodW1iKSByZXR1cm47XG5cbiAgICAgICAgbGV0IG5ld1Bvc2l0aW9uID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiICYmIG5ld1Bvc2l0aW9uID4gdGhpcy5lbmRWYWx1ZSkgfHxcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJlbmRcIiAmJiBuZXdQb3NpdGlvbiA8IHRoaXMuc3RhcnRWYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbkluVXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKG5ld1Bvc2l0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwiZW5kXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdKTtcblxuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCAmJiB0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwic3RhcnRcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09PSBlbmQgJiYgdGhpcy5kcmFnZ2luZ1RodW1iID09PSBcImVuZFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyBwb3NpdGlvbkluVXNlclJhbmdlIDogbmV3UG9zaXRpb247XG4gICAgICAgICAgICBjb25zdCBpc0F0U2FtZVZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyBwb3NpdGlvbkluVXNlclJhbmdlID09PSB0aGlzLnZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBoYXNTdGVwID0gdGhpcy5zdGVwICE9PSAwO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVJc1ZhbGlkQnlTdGVwID0gaGFzU3RlcCA/IGN1cnJlbnRWYWx1ZSArIHRoaXMuc3RlcCA9PT0gX3ZhbHVlIHx8IGN1cnJlbnRWYWx1ZSAtIHRoaXMuc3RlcCA9PT0gX3ZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoaXNBdFNhbWVWYWx1ZSAmJiAhbmV3VmFsdWVJc1ZhbGlkQnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQocG9zaXRpb25JblVzZXJSYW5nZSkgOiBuZXdQb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmdUaHVtYiA9IG51bGw7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vblRodW1iTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vdXNlRG93biA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb2dyZXNzQmFyTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm1vdmluZ1Byb2dyZXNzQmFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbmV3Q2VudGVyID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCA9IHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVCZWZvcmVFdmVudCA9IHRoaXMuc3RhcnRWYWx1ZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5yYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgIGxldCB7IG5ld1N0YXJ0LCBuZXdFbmQgfSA9IGNhbGN1bGF0ZU5ld1JhbmdlKFxuICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50LFxuICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50ICsgcmFuZ2UsXG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnQsXG4gICAgICAgICAgICBuZXdDZW50ZXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG5ld1N0YXJ0IDwgdGhpcy5NSU5fUkFOR0VfVkFMVUUgfHwgbmV3RW5kID4gdGhpcy5NQVhfUkFOR0VfVkFMVUUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVCZWZvcmVFdmVudFVzZXJSYW5nZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZShzdGFydFZhbHVlQmVmb3JlRXZlbnQpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50VXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCk7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJVc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUobmV3Q2VudGVyKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUmFuZ2UgPSB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50O1xuICAgICAgICAgICAgbGV0IHsgbmV3U3RhcnQsIG5ld0VuZCB9ID0gY2FsY3VsYXRlTmV3UmFuZ2UoXG4gICAgICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlLFxuICAgICAgICAgICAgICAgIHN0YXJ0VmFsdWVCZWZvcmVFdmVudFVzZXJSYW5nZSArIHZhbHVlUmFuZ2UsXG4gICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50VXNlclJhbmdlLFxuICAgICAgICAgICAgICAgIGNlbnRlclVzZXJSYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChuZXdTdGFydCA8IHRoaXMubWluIHx8IG5ld0VuZCA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQobmV3U3RhcnQpO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KG5ld0VuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBuZXdTdGFydDtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSBuZXdFbmQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShbdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlXSk7XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoYW5kbGVQcm9ncmVzc0Jhck1vdmVFbmQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmUpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldFByb2dyZXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0xlZnQgPSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzV2lkdGggPSBgY2FsYygke3RoaXMuZW5kVmFsdWUgLSB0aGlzLnN0YXJ0VmFsdWV9JSArIDEwcHgpYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NMZWZ0ID0gMDtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NXaWR0aCA9IGBjYWxjKCR7dGhpcy5lbmRWYWx1ZX0lICsgMTBweClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwZXJjZW50YWdlIG9mIGEgbW91c2UgZXZlbnQgZnJvbSB0aGUgdHJhY2sncyBsZWZ0IGVkZ2VcbiAgICAgKiBAcGFyYW0gbW91c2VFdmVudCBtb3VzZSBldmVudFxuICAgICAqIEByZXR1cm5zIHBlcmNlbnRhZ2UgZnJvbSB0aGUgbGVmdCBlZGdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQZXJjZW50YWdlQnlFdmVudChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdHJhY2tSZWN0ID0gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZXQgbmV3TGVmdCA9IE1hdGgucm91bmQoKChtb3VzZUV2ZW50LmNsaWVudFggLSB0cmFja1JlY3QubGVmdCkgLyB0cmFja1JlY3Qud2lkdGgpICogdGhpcy5NQVhfUkFOR0VfVkFMVUUpO1xuICAgICAgICBuZXdMZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obmV3TGVmdCwgdGhpcy5NQVhfUkFOR0VfVkFMVUUpKTtcbiAgICAgICAgcmV0dXJuIG5ld0xlZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSwgcGFyc2UgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgcGFyc2UpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoeCkpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMubWF4O1xuICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWF4IHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbiB2YWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgY29uc3QgZGVjaW1hbFBsYWNlcyA9IDI7XG4gICAgICAgIGNvbnN0IHN0ZXBDb3VudCA9IE1hdGguZmxvb3IocmFuZ2UgLyB0aGlzLnN0ZXApO1xuICAgICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlID0gc3RhcnQ7IHZhbHVlIDw9IGVuZDsgdmFsdWUgKz0gdGhpcy5zdGVwKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gIT09IGVuZCkge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2goZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1hcHBlZCA9ICgodmFsdWUgLSBzdGFydCkgLyByYW5nZSkgKiB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcHBlZC50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcHBlZFZhbHVlc1swXSA9IDA7XG4gICAgICAgIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV0gPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLk1BWF9SQU5HRV9WQUxVRSAtIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGVycm9yUGVyU3RlcCA9IGVycm9yIC8gc3RlcENvdW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG1hcHBlZFZhbHVlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hcHBlZFZhbHVlc1tpXSArPSBlcnJvclBlclN0ZXA7XG4gICAgICAgICAgICBtYXBwZWRWYWx1ZXNbaV0gPSBwYXJzZUZsb2F0KG1hcHBlZFZhbHVlc1tpXS50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLnNldCh2YWx1ZSwgbWFwcGVkVmFsdWVzW2luZGV4XSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlIGJ5IHVzaW5nIHRoZSBtYXAgb2YgcmFuZ2UgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogSWYgdGhlIG1hcCBpcyAwOiB7IDAgfSwgMTogeyAxMCB9LCAyOiB7IDMwIH0sIDM6IHsgNDAgfSwgNDogeyA1MCB9XG4gICAgICogYW5kIHRoZSBzbGlkZXJWYWx1ZSBpcyAzNywgdGhlIGZ1bmN0aW9uIHJldHVybnMgM1xuICAgICAqIG9yIHRoZSBzbGlkZXIgdmFsdWUgaXMgNDAsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDRcbiAgICAgKiBAcGFyYW0gc2xpZGVyVmFsdWUgdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXIgKHZhbHVlcyBvbmx5IGJldHdlZW4gcmFuZ2UgTUlOIGFuZCBNQVgpXG4gICAgICogQHJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHNsaWRlclZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWFwVG9BcnJheSA9IEFycmF5LmZyb20odGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlcikubWFwKChbdmFsdWUsIG1hcHBlZF0pID0+ICh7IHZhbHVlLCBtYXBwZWQgfSkpO1xuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4Lm1hcHBlZCA9PSBzbGlkZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSBtYXBUb0FycmF5LnJlZHVjZSgocHJldiwgY3VycikgPT4gTWF0aC5hYnMoY3Vyci5tYXBwZWQgLSBzbGlkZXJWYWx1ZSkgPCBNYXRoLmFicyhwcmV2Lm1hcHBlZCAtIHNsaWRlclZhbHVlKSA/IGN1cnIgOiBwcmV2KTtcbiAgICAgICAgcmV0dXJuIGV4YWN0VmFsdWUgPyBleGFjdFZhbHVlLnZhbHVlIDogY2xvc2VzdC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGtleSBmcm9tIHRoZSBtYXAgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBnaXZlbiBzbGlkZXIgdmFsdWUuXG4gICAgICogQHBhcmFtIHVzZXJWYWx1ZSAtIFRoZSB2YWx1ZSB0byBmaW5kIHRoZSBjbG9zZXN0IGtleSBmb3IuICh2YWx1ZXMgb25seSBiZXR3ZWVuIDAgLSAxMDApXG4gICAgICogQHJldHVybnMgVGhlIGtleSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjbG9zZXN0IG1hcHBlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIodXNlclZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtYXBUb0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyKS5tYXAoKFt2YWx1ZSwgbWFwcGVkXSkgPT4gKHsgdmFsdWUsIG1hcHBlZCB9KSk7XG4gICAgICAgIGlmICh1c2VyVmFsdWUgPj0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBUb0FycmF5W21hcFRvQXJyYXkubGVuZ3RoIC0gMV0ubWFwcGVkXG4gICAgICAgIH0gZWxzZSBpZiAodXNlclZhbHVlIDw9IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheVswXS5tYXBwZWRcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4LnZhbHVlID09IHVzZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3RWYWx1ZSA9IG1hcFRvQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLmFicyhjdXJyLnZhbHVlIC0gdXNlclZhbHVlKSA8IE1hdGguYWJzKHByZXYudmFsdWUgLSB1c2VyVmFsdWUpID8gY3VyciA6IHByZXYpO1xuICAgICAgICBjb25zdCBpdGVtID0gZXhhY3RWYWx1ZSB8fCBjbG9zZXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gbWFwVG9BcnJheVswXSA9PT0gaXRlbTtcbiAgICAgICAgY29uc3QgaXNMYXN0SXRlbSA9IG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAxXSA9PT0gaXRlbTtcbiAgICAgICAgaWYgKGlzRmlyc3RJdGVtICYmIHVzZXJWYWx1ZSA+IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbMV0ubWFwcGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0xhc3RJdGVtICYmIHVzZXJWYWx1ZSA8IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAyXS5tYXBwZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWFwcGVkO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGhhbmRsZUFycm93S2V5TGVmdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50U3RhcnRBbmRFbmRWYWx1ZShmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudEVuZFZhbHVlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBcnJvd0tleVJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKGluY3JlbWVudDogYm9vbGVhbikge1xuICAgICAgICBsZXQgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gZ2V0RGlmZmVyZW5jZShlbmQsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGluY3JlbWVudCkge1xuICAgICAgICAgICAgc3RhcnQgKz0gdGhpcy5zdGVwO1xuICAgICAgICAgICAgZW5kICs9IHRoaXMuc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0IC09IHRoaXMuc3RlcDtcbiAgICAgICAgICAgIGVuZCAtPSB0aGlzLnN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnRMZXNzVGhhbk1pbiA9IHN0YXJ0IDwgdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZEdyZWF0ZXJUaGFuTWF4ID0gZW5kID4gdGhpcy5tYXg7XG4gICAgICAgIGlmIChzdGFydExlc3NUaGFuTWluIHx8IGVuZEdyZWF0ZXJUaGFuTWF4KSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRMZXNzVGhhbk1pbikge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRHcmVhdGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQgPCB0aGlzLm1pbiB8fCBlbmQgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoW3N0YXJ0LCBlbmRdLCBmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgc3RhcnQgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoc3RhcnQpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSBlbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChpbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IHRoaXMuc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlIC09IHRoaXMuc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgX25ld0VuZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgX25ld0VuZFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKF9uZXdFbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9uZXdFbmRWYWx1ZSA8IHRoaXMuTUlOX1JBTkdFX1ZBTFVFIHx8IF9uZXdFbmRWYWx1ZSA+IHRoaXMuTUFYX1JBTkdFX1ZBTFVFKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IF9uZXdFbmRWYWx1ZTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5lbmRWYWx1ZTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShfbmV3RW5kVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5lZWRQYXJzZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ICE9PSB0aGlzLk1BWF9SQU5HRV9WQUxVRSB8fCB0aGlzLm1pbiAhPT0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG4gICAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgYSBuZXcgcmFuZ2UgYmFzZWQgb24gdGhlIG9sZCByYW5nZSBhbmQgdGhlIHBvc2l0aW9ucyBjbGlja2VkIGFuZCBmaW5hbGl6ZWQuXG4gKlxuICogQHBhcmFtIG9sZFN0YXJ0IC0gVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBvbGQgcmFuZ2UuXG4gKiBAcGFyYW0gb2xkRW5kIC0gVGhlIGVuZGluZyB2YWx1ZSBvZiB0aGUgb2xkIHJhbmdlLlxuICogQHBhcmFtIGNsaWNrZWRQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgY2xpY2sgb2NjdXJyZWQuXG4gKiBAcGFyYW0gZmluYWxQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcmFuZ2Ugc2hvdWxkIGVuZC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXcgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgb2YgdGhlIHJhbmdlLlxuICovXG5jb25zdCBjYWxjdWxhdGVOZXdSYW5nZSA9IChvbGRTdGFydDogbnVtYmVyLCBvbGRFbmQ6IG51bWJlciwgY2xpY2tlZFBvc2l0aW9uOiBudW1iZXIsIGZpbmFsUG9zaXRpb246IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHJhbmdlID0gb2xkRW5kIC0gb2xkU3RhcnQ7XG4gICAgY29uc3QgbmV3U3RhcnQgPSBmaW5hbFBvc2l0aW9uIC0gKGNsaWNrZWRQb3NpdGlvbiAtIG9sZFN0YXJ0KTtcbiAgICBjb25zdCBuZXdFbmQgPSBuZXdTdGFydCArIHJhbmdlO1xuICAgIHJldHVybiB7IG5ld1N0YXJ0LCBuZXdFbmQgfTtcbn07XG5cbmNvbnN0IGlzSW5SYW5nZSA9ICh2YWx1ZTogbnVtYmVyLCByYW5nZVN0YXJ0OiBudW1iZXIsIHJhbmdlRW5kOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbbWluLCBtYXhdID0gcmFuZ2VTdGFydCA8IHJhbmdlRW5kID8gW3JhbmdlU3RhcnQsIHJhbmdlRW5kXSA6IFtyYW5nZUVuZCwgcmFuZ2VTdGFydF07XG4gICAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuXG5jb25zdCBnZXRNaWRwb2ludCA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1pZHBvaW50ID0gKHN0YXJ0ICsgZW5kKSAvIDI7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQobWlkcG9pbnQudG9GaXhlZCgyKSk7XG59XG5jb25zdCBnZXREaWZmZXJlbmNlID0gKGVuZDogbnVtYmVyLCBzdGFydDogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGVuZCAtIHN0YXJ0KTtcbn1cbiJdfQ==
|
|
@@ -117,7 +117,7 @@ StatsCardComponent = StatsCardComponent_1 = __decorate([
|
|
|
117
117
|
selector: "s-stats-card",
|
|
118
118
|
template: "<div\n [id]=\"id\"\n class=\"s-stats-card\"\n [ngClass]=\"{\n 's-stats-card--always-border': alwaysWithBorder,\n 's-stats-card--light': lightMode,\n 's-stats-card--color': !lightMode,\n 's-stats-card--light-version': lightVersion,\n 's-stats-card--clickable': clickable\n }\"\n (click)=\"clickable && onClick.next($event)\">\n\n <div\n [id]=\"id + '-background'\"\n class=\"s-stats-card-background\"\n [ngStyle]=\"{ 'background-color': !lightMode && color || '' }\">\n </div>\n <div\n [id]=\"id + '-overlay'\"\n class=\"s-stats-card-overlay\">\n </div>\n\n <div\n [id]=\"id + '-info-container'\"\n class=\"s-stats-card-info-container\">\n <div class=\"s-stats-card-info-inner-container\">\n <div\n [id]=\"id + '-icon-container'\"\n class=\"s-stats-card-icon-container\"\n [ngStyle]=\"{ 'background-color': lightMode && color || '' }\">\n <span\n [id]=\"id + '-icon'\"\n [class]=\"iconClass\"\n [ngClass]=\"{ 's-stats-card-icon': true }\"\n [ngStyle]=\"{'color': !lightMode && color || ''}\"\n aria-hidden=\"true\"></span>\n </div>\n\n <div\n [id]=\"id + '-text-container'\"\n class=\"s-stats-card-text-container\">\n <h4\n [id]=\"id + '-label'\"\n class=\"s-stats-card-label\"\n [pTooltip]=\"label\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n {{ label }}\n </h4>\n <span\n [id]=\"id + '-value'\"\n class=\"s-stats-card-value\"\n [pTooltip]=\"displayValue\"\n tooltipPosition=\"top\"\n showDelay=\"500\">\n {{ displayValue }}\n </span>\n </div>\n </div>\n <div class=\"s-stats-card-content-inner-container\">\n <div #content class=\"s-stats-card-content-container\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"content.children.length\"\n class=\"s-stats-card-content-separator\">\n </div>\n </div>\n <span\n *ngIf=\"tooltip\"\n class=\"s-status-card-tooltip\"\n [pTooltip]=\"tooltip\"\n tooltipPosition=\"right\">\n <i class=\"fa fa-info-circle s-status-card-tooltip-icon\"></i>\n </span>\n </div>\n</div>\n",
|
|
119
119
|
encapsulation: ViewEncapsulation.None,
|
|
120
|
-
styles: ["s-stats-card{display:block;height:auto;position:relative}s-stats-card .s-stats-card{border:1px solid transparent;min-width:120px;overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-background,s-stats-card .s-stats-card .s-stats-card-overlay{height:calc(100% - 2px);left:1px;position:absolute;top:1px;width:calc(100% - 2px)}s-stats-card .s-stats-card .s-stats-card-background{background-color:#fff}s-stats-card .s-stats-card .s-stats-card-overlay{background-color:#000;opacity:0;transition:opacity .2s ease-out}s-stats-card .s-stats-card .s-stats-card-info-container{overflow:auto;padding:15px;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container{overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{float:left;font-size:24px;height:50px;line-height:50px;text-align:center;transition:width .2s ease-out;width:50px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{-ms-flex-align:start;align-items:flex-start;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;float:left;height:50px;-ms-flex-pack:center;justify-content:center;max-width:calc(100% - 65px);padding-left:15px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label{font-weight:400;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{display:inline-block;font-size:20px;font-weight:700;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-separator{border-top:1px solid #ccc;margin:15px 0;-ms-flex-order:1;order:1}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-container{-ms-flex-order:2;order:2}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip{font-size:1rem;line-height:0;margin:.3rem;position:absolute;right:0;top:0}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip .s-status-card-tooltip-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--color .s-stats-card-icon-container{background-color:#fff}s-stats-card .s-stats-card.s-stats-card--light *{color:#333}s-stats-card .s-stats-card.s-stats-card--light .s-stats-card-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--light * .s-status-card-tooltip .s-status-card-tooltip-icon,s-stats-card .s-stats-card.s-stats-card--light .s-stats-card-label{color:#999}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card.s-stats-card--clickable{cursor:pointer}s-stats-card .s-stats-card:hover .s-stats-card-overlay{opacity:.2}s-stats-card .s-stats-card.s-stats-card--light:hover .s-stats-card-overlay{opacity:.08}s-stats-card .s-stats-card.s-stats-card--light{border-color:#ccc}.s-sidebar-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.ui-dialog-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),p-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border){border-color:transparent}@media (max-width:767px){s-stats-card .s-stats-card{height:auto}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:visible;white-space:normal;word-break:break-all}}"]
|
|
120
|
+
styles: ["s-stats-card{display:block;height:auto;position:relative}s-stats-card .s-stats-card{border:1px solid transparent;min-width:120px;overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-background,s-stats-card .s-stats-card .s-stats-card-overlay{height:calc(100% - 2px);left:1px;position:absolute;top:1px;width:calc(100% - 2px)}s-stats-card .s-stats-card .s-stats-card-background{background-color:#fff}s-stats-card .s-stats-card .s-stats-card-overlay{background-color:#000;opacity:0;transition:opacity .2s ease-out}s-stats-card .s-stats-card .s-stats-card-info-container{overflow:auto;padding:15px;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container{overflow:hidden;position:relative}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{float:left;font-size:24px;height:50px;line-height:50px;text-align:center;transition:width .2s ease-out;width:50px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{-ms-flex-align:start;align-items:flex-start;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;float:left;height:50px;-ms-flex-pack:center;justify-content:center;max-width:calc(100% - 65px);padding-left:15px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label{font-weight:400;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{display:inline-block;font-size:20px;font-weight:700;width:100%}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-separator{border-top:1px solid #ccc;margin:15px 0;-ms-flex-order:1;order:1}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-content-inner-container .s-stats-card-content-container{-ms-flex-order:2;order:2}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip{font-size:1rem;line-height:0;margin:.3rem;position:absolute;right:0;top:0}s-stats-card .s-stats-card .s-stats-card-info-container .s-status-card-tooltip .s-status-card-tooltip-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--color .s-stats-card-icon-container{background-color:#fff}s-stats-card .s-stats-card.s-stats-card--light *{color:#333}s-stats-card .s-stats-card.s-stats-card--light .s-stats-card-icon{color:#fff}s-stats-card .s-stats-card.s-stats-card--light * .s-status-card-tooltip .s-status-card-tooltip-icon,s-stats-card .s-stats-card.s-stats-card--light .s-stats-card-label{color:#999}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card.s-stats-card--light-version .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card.s-stats-card--clickable{cursor:pointer}s-stats-card .s-stats-card:hover .s-stats-card-overlay{opacity:.2}s-stats-card .s-stats-card.s-stats-card--light:hover .s-stats-card-overlay{opacity:.08}s-stats-card .s-stats-card.s-stats-card--light{border-color:#ccc}.s-sidebar-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),.ui-dialog-content .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),p-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border),s-panel .s-stats-card.s-stats-card--light:not(.s-stats-card--always-border){border-color:transparent}@media (max-width:767px){s-stats-card .s-stats-card{height:auto}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container{height:100%;left:0;position:absolute;right:0;width:10px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-icon-container .s-stats-card-icon{display:none}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container{height:auto;max-width:calc(100% - 25px);padding-left:25px}s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-label,s-stats-card .s-stats-card .s-stats-card-info-container .s-stats-card-info-inner-container .s-stats-card-text-container .s-stats-card-value{overflow:visible;white-space:normal;word-break:break-all}}"]
|
|
121
121
|
})
|
|
122
122
|
], StatsCardComponent);
|
|
123
123
|
export { StatsCardComponent };
|