@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
|
@@ -139,12 +139,15 @@ var SliderComponent = /** @class */ (function () {
|
|
|
139
139
|
this.setUserRangeMapValues();
|
|
140
140
|
};
|
|
141
141
|
SliderComponent.prototype.ngOnChanges = function (changes) {
|
|
142
|
+
var _this = this;
|
|
142
143
|
var hasChangesOnMin = changes.min && !changes.min.firstChange;
|
|
143
144
|
var hasChangesOnMax = changes.max && !changes.max.firstChange;
|
|
144
145
|
var hasChanges = hasChangesOnMin || hasChangesOnMax;
|
|
145
146
|
if (hasChanges) {
|
|
146
147
|
this.setUserRangeMapValues();
|
|
147
|
-
|
|
148
|
+
setTimeout(function () {
|
|
149
|
+
_this.setRangeValues();
|
|
150
|
+
});
|
|
148
151
|
}
|
|
149
152
|
};
|
|
150
153
|
SliderComponent.prototype.ngAfterViewInit = function () {
|
|
@@ -183,6 +186,7 @@ var SliderComponent = /** @class */ (function () {
|
|
|
183
186
|
});
|
|
184
187
|
SliderComponent.prototype.writeValue = function (obj) {
|
|
185
188
|
this.value = obj;
|
|
189
|
+
this.setRangeValues();
|
|
186
190
|
};
|
|
187
191
|
SliderComponent.prototype.registerOnChange = function (fn) {
|
|
188
192
|
this.onChange = fn;
|
|
@@ -300,6 +304,9 @@ var SliderComponent = /** @class */ (function () {
|
|
|
300
304
|
_this.startValue = _this.getClosestValueFromMapSlider(startValue);
|
|
301
305
|
_this.endValue = _this.getClosestValueFromMapSlider(endValue);
|
|
302
306
|
};
|
|
307
|
+
if (this.value === null || this.value === undefined) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
303
310
|
if (Array.isArray(this.value) && !this.multiple) {
|
|
304
311
|
throw new Error('You must use "multiple" with value as array');
|
|
305
312
|
}
|
|
@@ -307,48 +314,43 @@ var SliderComponent = /** @class */ (function () {
|
|
|
307
314
|
this.startValue = this.value[0];
|
|
308
315
|
this.endValue = this.value[1];
|
|
309
316
|
}
|
|
310
|
-
else if (this.multiple && !Array.isArray(this.value)) {
|
|
311
|
-
this.value = [this.startValue, this.endValue];
|
|
312
|
-
}
|
|
313
317
|
else if (!this.multiple) {
|
|
314
318
|
this.startValue = this.value;
|
|
315
319
|
this.endValue = this.value;
|
|
316
320
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
_startValue = _endValue - difference;
|
|
328
|
-
}
|
|
329
|
-
else if (startValueIsLessThanMin) {
|
|
330
|
-
_startValue = this.min;
|
|
331
|
-
_endValue = _startValue + difference;
|
|
332
|
-
}
|
|
333
|
-
if (needUpdateValues) {
|
|
334
|
-
_setStartAndEndValue(_startValue, _endValue);
|
|
335
|
-
this.setValue([this.startValue, this.endValue]);
|
|
336
|
-
}
|
|
321
|
+
_setStartAndEndValue(this.startValue, this.endValue);
|
|
322
|
+
if (this.multiple) {
|
|
323
|
+
var _a = __read(this.value, 2), _startValue = _a[0], _endValue = _a[1];
|
|
324
|
+
var difference = getDifference(_endValue, _startValue);
|
|
325
|
+
var endValueIsGreatherThanMax = _endValue > this.max;
|
|
326
|
+
var startValueIsLessThanMin = _startValue < this.min;
|
|
327
|
+
var needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;
|
|
328
|
+
if (endValueIsGreatherThanMax) {
|
|
329
|
+
_endValue = this.max;
|
|
330
|
+
_startValue = _endValue - difference;
|
|
337
331
|
}
|
|
338
|
-
else {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
332
|
+
else if (startValueIsLessThanMin) {
|
|
333
|
+
_startValue = this.min;
|
|
334
|
+
_endValue = _startValue + difference;
|
|
335
|
+
}
|
|
336
|
+
if (needUpdateValues) {
|
|
337
|
+
_setStartAndEndValue(_startValue, _endValue);
|
|
338
|
+
this.setValue([this.startValue, this.endValue]);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
var _value = this.value;
|
|
343
|
+
var valueGreatherThanMax = _value > this.max;
|
|
344
|
+
var valueLessThanMin = _value < this.min;
|
|
345
|
+
var needUpdateValue = valueGreatherThanMax || valueLessThanMin;
|
|
346
|
+
if (valueGreatherThanMax) {
|
|
347
|
+
_value = this.max;
|
|
348
|
+
}
|
|
349
|
+
else if (valueLessThanMin) {
|
|
350
|
+
_value = this.min;
|
|
351
|
+
}
|
|
352
|
+
if (needUpdateValue) {
|
|
353
|
+
this.setValue(_value, false);
|
|
352
354
|
}
|
|
353
355
|
}
|
|
354
356
|
this.setProgress();
|
|
@@ -598,7 +600,7 @@ var SliderComponent = /** @class */ (function () {
|
|
|
598
600
|
SliderComponent = SliderComponent_1 = __decorate([
|
|
599
601
|
Component({
|
|
600
602
|
selector: "s-slider",
|
|
601
|
-
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",
|
|
603
|
+
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",
|
|
602
604
|
providers: [
|
|
603
605
|
{
|
|
604
606
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -643,4 +645,4 @@ var getDifference = function (end, start) {
|
|
|
643
645
|
};
|
|
644
646
|
var ɵ3 = getDifference;
|
|
645
647
|
export { ɵ0, ɵ1, ɵ2, ɵ3 };
|
|
646
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWN6RTtJQUFBO1FBQUEsaUJBb2tCQztRQW5rQm9CLG9CQUFlLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBSzlCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsVUFBSyxHQUE4QixDQUFDLENBQUM7UUFHckMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUc1RCxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBR1QsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixRQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUczQixRQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQVMzQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRWIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsYUFBUSxHQUErQyxjQUFRLENBQUMsQ0FBQztRQUNqRSxjQUFTLEdBQStDLGNBQVEsQ0FBQyxDQUFDO1FBRWpFLGtCQUFhLEdBQTJCLElBQUksQ0FBQztRQUM3QyxrQ0FB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QUFvRixFQUFuRixXQUFHLEVBQUUsV0FBOEUsQ0FBQztJQUMzRixPQUFPLEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsQ0FBQztBQUN4QyxDQUFDLENBQUM7O0FBRUYsSUFBTSxXQUFXLEdBQUcsVUFBQyxLQUFhLEVBQUUsR0FBVztJQUMzQyxJQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQTs7QUFDRCxJQUFNLGFBQWEsR0FBRyxVQUFDLEdBQVcsRUFBRSxLQUFhO0lBQzdDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtc2xpZGVyXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9zbGlkZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vc2xpZGVyLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFYX1JBTkdFX1ZBTFVFID0gMTAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUlOX1JBTkdFX1ZBTFVFID0gMDtcbiAgICBAVmlld0NoaWxkKFwidHJhY2tcIilcbiAgICBwdWJsaWMgdHJhY2shOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdID0gMDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgW251bWJlciwgbnVtYmVyXT4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0ZXAgPSAxO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGlkZGVuVGh1bWIgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW4gPSB0aGlzLk1JTl9SQU5HRV9WQUxVRTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IHRoaXMuTUFYX1JBTkdFX1ZBTFVFO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluVmFsdWVMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4VmFsdWVMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGFiaW5kZXggPSAwO1xuXG4gICAgcHVibGljIHN0YXJ0VmFsdWUgPSAwO1xuICAgIHB1YmxpYyBlbmRWYWx1ZSA9IDA7XG4gICAgcHVibGljIG1vdmluZ1Byb2dyZXNzQmFyID0gZmFsc2U7XG4gICAgcHVibGljIHByb2dyZXNzTGVmdCA9IDA7XG4gICAgcHVibGljIHByb2dyZXNzV2lkdGggPSBcIlwiO1xuXG4gICAgcHVibGljIG9uQ2hhbmdlOiAodmFsdWU6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0pID0+IHZvaWQgPSAoKSA9PiB7IH07XG4gICAgcHVibGljIG9uVG91Y2hlZDogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuXG4gICAgcHJpdmF0ZSBkcmFnZ2luZ1RodW1iOiBcInN0YXJ0XCIgfCBcImVuZFwiIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwcm9ncmVzc0JhckV2ZW50UG9zaXRpb25TdGFydCA9IC0xO1xuICAgIHByaXZhdGUgc3RhcnRWYWx1ZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICBwcml2YXRlIHJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgIHByaXZhdGUgdG90YWxSYW5nZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICAvKipcbiAgICAgKiBNYXAgb2YgdmFsaWQgdmFsdWVzIGZvciB2YWx1ZXMgaW4gcmFuZ2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiB3aXRoIG1pbiA9IC0xMCBhbmQgbWF4ID0gMTAgd2lsbCBoYXZlIHRoaXMgbWFwLlxuICAgICAqIHtcbiAgICAgKiAgICAgLTEwOiB7IDAgfSxcbiAgICAgKiAgICAgLTk6IHsgMTAgfSxcbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAxMDogeyAxMCB9XG4gICAgICogfVxuICAgICAqL1xuICAgIHByaXZhdGUgbWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXI6IE1hcDxudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBhY3RpdmVNb3VzZURvd24gPSBmYWxzZTtcbiAgICBwcml2YXRlIGZvY3VzQWN0aXZlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VXNlclJhbmdlTWFwVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlc09uTWluID0gY2hhbmdlcy5taW4gJiYgIWNoYW5nZXMubWluLmZpcnN0Q2hhbmdlO1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzT25NYXggPSBjaGFuZ2VzLm1heCAmJiAhY2hhbmdlcy5tYXguZmlyc3RDaGFuZ2U7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXMgPSBoYXNDaGFuZ2VzT25NaW4gfHwgaGFzQ2hhbmdlc09uTWF4O1xuICAgICAgICBpZiAoaGFzQ2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5zZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZXMoKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6a2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNBY3RpdmUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlMZWZ0ID0gJGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIjtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlSaWdodCA9ICRldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiO1xuICAgICAgICAgICAgaWYgKGlzQXJyb3dLZXlMZWZ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcnJvd0tleUxlZnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJvd0tleVJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcnJvd0tleVJpZ2h0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBTdGFydFRleHQoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZVswXT8udG9TdHJpbmcoKSA6IHRoaXMudmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdGlwRW5kVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlWzFdPy50b1N0cmluZygpIDogdGhpcy52YWx1ZT8udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG9iajtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZvY3VzSW4oKSB7XG4gICAgICAgIHRoaXMuZm9jdXNBY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25UcmFja0NsaWNrKGV2dDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubW92aW5nUHJvZ3Jlc3NCYXIgfHwgdGhpcy5hY3RpdmVNb3VzZURvd24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0cmFja0NsaWNrUGVyY2VudGFnZSA9IHRoaXMuZ2V0UGVyY2VudGFnZUJ5RXZlbnQoZXZ0KTtcbiAgICAgICAgY29uc3QgdHJhY2tDbGlja1RvVXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHRyYWNrQ2xpY2tQZXJjZW50YWdlKTtcbiAgICAgICAgY29uc3QgX3RyYWNrQ2xpY2tWYWxpZCA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdHJhY2tDbGlja1RvVXNlclJhbmdlIDogdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgIGNvbnN0IF9zZXRFbmRWYWx1ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9lbmRWYWx1ZVVzZXJWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZSh0aGlzLmVuZFZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IF9lbmRWYWx1ZSA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQodHJhY2tDbGlja1RvVXNlclJhbmdlKSA6IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzICYmIF9lbmRWYWx1ZVVzZXJWYWx1ZSAhPT0gdHJhY2tDbGlja1RvVXNlclJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IF9lbmRWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubmVlZFBhcnNlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IF9zZXRTdGFydFZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX3N0YXJ0VmFsdWVVc2VyVmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodGhpcy5zdGFydFZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcyAmJiBfc3RhcnRWYWx1ZVVzZXJWYWx1ZSAhPT0gdHJhY2tDbGlja1RvVXNlclJhbmdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgX3N0YXJ0VmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlc1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHRyYWNrQ2xpY2tUb1VzZXJSYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgOiB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBfc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubmVlZFBhcnNlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSB0aGlzLnZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICBjb25zdCB2YWxpZFN0YXJ0ID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChzdGFydCkgOiBzdGFydDtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkRW5kID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChlbmQpIDogZW5kO1xuICAgICAgICAgICAgY29uc3QgX3VwZGF0ZVN0YXJ0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIF9zZXRTdGFydFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdHJhY2tDbGlja1BlcmNlbnRhZ2UsIHZhbGlkRW5kXSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBfdXBkYXRlRW5kID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIF9zZXRFbmRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoW3ZhbGlkU3RhcnQsIHRyYWNrQ2xpY2tQZXJjZW50YWdlXSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY2xpY2tQZXJjZW50YWdlQmV0d2VlblJhbmdlID0gaXNJblJhbmdlKF90cmFja0NsaWNrVmFsaWQsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgaWYgKF90cmFja0NsaWNrVmFsaWQgPCBzdGFydCkge1xuICAgICAgICAgICAgICAgIF91cGRhdGVTdGFydCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChfdHJhY2tDbGlja1ZhbGlkID4gZW5kKSB7XG4gICAgICAgICAgICAgICAgX3VwZGF0ZUVuZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjbGlja1BlcmNlbnRhZ2VCZXR3ZWVuUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGUgPSAoc3RhcnQgKyBlbmQpIC8gMjtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFja0NsaWNrUGVyY2VudGFnZUlzRXhhY3RpZGRsZSA9IF90cmFja0NsaWNrVmFsaWQgPT09IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBpZiAodHJhY2tDbGlja1BlcmNlbnRhZ2VJc0V4YWN0aWRkbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0U3RhcnQgPSBfdHJhY2tDbGlja1ZhbGlkIDwgbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXRFbmQgPSBfdHJhY2tDbGlja1ZhbGlkID4gbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0U3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF91cGRhdGVTdGFydCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNldEVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZUVuZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0cmFja0NsaWNrUGVyY2VudGFnZSk7XG4gICAgICAgICAgICBfc2V0RW5kVmFsdWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qcm9ncmVzc01vdXNlRG93bihldnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSB0aGlzLmdldFBlcmNlbnRhZ2VCeUV2ZW50KGV2dCk7XG4gICAgICAgIHRoaXMuc3RhcnRWYWx1ZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgIHRoaXMucmFuZ2VCZXR3ZWVuRWxlbWVudHNCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gdGhpcy5lbmRWYWx1ZSAtIHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIHRoaXMudG90YWxSYW5nZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMuaGFuZGxlUHJvZ3Jlc3NCYXJNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmVFbmQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vdXNlRG93bihfOiBNb3VzZUV2ZW50LCB0aHVtYjogXCJzdGFydFwiIHwgXCJlbmRcIik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZHJhZ2dpbmdUaHVtYiA9IHRodW1iO1xuICAgICAgICB0aGlzLmFjdGl2ZU1vdXNlRG93biA9IHRydWU7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vblRodW1iTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJhbmdlVmFsdWVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBfc2V0U3RhcnRBbmRFbmRWYWx1ZSA9IChzdGFydFZhbHVlOiBudW1iZXIsIGVuZFZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcihzdGFydFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoZW5kVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IHVzZSBcIm11bHRpcGxlXCIgd2l0aCB2YWx1ZSBhcyBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMudmFsdWVbMF07XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy52YWx1ZVsxXTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gW3RoaXMuc3RhcnRWYWx1ZSwgdGhpcy5lbmRWYWx1ZV07XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzKSB7XG4gICAgICAgICAgICBfc2V0U3RhcnRBbmRFbmRWYWx1ZSh0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBsZXQgW19zdGFydFZhbHVlLCBfZW5kVmFsdWVdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBnZXREaWZmZXJlbmNlKF9lbmRWYWx1ZSwgX3N0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFZhbHVlSXNHcmVhdGhlclRoYW5NYXggPSBfZW5kVmFsdWUgPiB0aGlzLm1heDtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFZhbHVlSXNMZXNzVGhhbk1pbiA9IF9zdGFydFZhbHVlIDwgdGhpcy5taW47XG4gICAgICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlcyA9IGVuZFZhbHVlSXNHcmVhdGhlclRoYW5NYXggfHwgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW47XG4gICAgICAgICAgICAgICAgaWYgKGVuZFZhbHVlSXNHcmVhdGhlclRoYW5NYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgX2VuZFZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgICAgIF9zdGFydFZhbHVlID0gX2VuZFZhbHVlIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0VmFsdWVJc0xlc3NUaGFuTWluKSB7XG4gICAgICAgICAgICAgICAgICAgIF9zdGFydFZhbHVlID0gdGhpcy5taW47XG4gICAgICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IF9zdGFydFZhbHVlICsgZGlmZmVyZW5jZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRVcGRhdGVWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgX3NldFN0YXJ0QW5kRW5kVmFsdWUoX3N0YXJ0VmFsdWUsIF9lbmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoW3RoaXMuc3RhcnRWYWx1ZSwgdGhpcy5lbmRWYWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IF92YWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlR3JlYXRoZXJUaGFuTWF4ID0gX3ZhbHVlID4gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVMZXNzVGhhbk1pbiA9IF92YWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRVcGRhdGVWYWx1ZSA9IHZhbHVlR3JlYXRoZXJUaGFuTWF4IHx8IHZhbHVlTGVzc1RoYW5NaW47XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlR3JlYXRoZXJUaGFuTWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIF92YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVMZXNzVGhhbk1pbikge1xuICAgICAgICAgICAgICAgICAgICBfdmFsdWUgPSB0aGlzLm1pbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRVcGRhdGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKF92YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGh1bWJNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1vdmluZ1Byb2dyZXNzQmFyIHx8ICF0aGlzLmRyYWdnaW5nVGh1bWIpIHJldHVybjtcblxuICAgICAgICBsZXQgbmV3UG9zaXRpb24gPSB0aGlzLmdldFBlcmNlbnRhZ2VCeUV2ZW50KGV2ZW50KTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5kcmFnZ2luZ1RodW1iID09PSBcInN0YXJ0XCIgJiYgbmV3UG9zaXRpb24gPiB0aGlzLmVuZFZhbHVlKSB8fFxuICAgICAgICAgICAgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy5kcmFnZ2luZ1RodW1iID09PSBcImVuZFwiICYmIG5ld1Bvc2l0aW9uIDwgdGhpcy5zdGFydFZhbHVlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uSW5Vc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUobmV3UG9zaXRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZ1RodW1iID09PSBcInN0YXJ0XCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlc1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHBvc2l0aW9uSW5Vc2VyUmFuZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogbmV3UG9zaXRpb247XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJlbmRcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlc1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHBvc2l0aW9uSW5Vc2VyUmFuZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogbmV3UG9zaXRpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoW3RoaXMuc3RhcnRWYWx1ZSwgdGhpcy5lbmRWYWx1ZV0pO1xuXG4gICAgICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSB0aGlzLnZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl07XG5cbiAgICAgICAgICAgIGlmIChzdGFydCA9PT0gZW5kICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5lbmRWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT09IGVuZCAmJiB0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwiZW5kXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5zdGFydFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgICAgICBjb25zdCBfdmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHBvc2l0aW9uSW5Vc2VyUmFuZ2UgOiBuZXdQb3NpdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGlzQXRTYW1lVmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHBvc2l0aW9uSW5Vc2VyUmFuZ2UgPT09IHRoaXMudmFsdWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1N0ZXAgPSB0aGlzLnN0ZXAgIT09IDA7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZUlzVmFsaWRCeVN0ZXAgPSBoYXNTdGVwID8gY3VycmVudFZhbHVlICsgdGhpcy5zdGVwID09PSBfdmFsdWUgfHwgY3VycmVudFZhbHVlIC0gdGhpcy5zdGVwID09PSBfdmFsdWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChpc0F0U2FtZVZhbHVlICYmICFuZXdWYWx1ZUlzVmFsaWRCeVN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKSA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5lbmRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIG9uTW91c2VVcCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZ1RodW1iID0gbnVsbDtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uVGh1bWJNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW91c2VEb3duID0gZmFsc2U7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaGFuZGxlUHJvZ3Jlc3NCYXJNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMubW92aW5nUHJvZ3Jlc3NCYXIgPSB0cnVlO1xuICAgICAgICBjb25zdCBuZXdDZW50ZXIgPSB0aGlzLmdldFBlcmNlbnRhZ2VCeUV2ZW50KGV2ZW50KTtcbiAgICAgICAgY29uc3Qgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50ID0gdGhpcy5wcm9ncmVzc0JhckV2ZW50UG9zaXRpb25TdGFydDtcbiAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50ID0gdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudDtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudDtcbiAgICAgICAgbGV0IHsgbmV3U3RhcnQsIG5ld0VuZCB9ID0gY2FsY3VsYXRlTmV3UmFuZ2UoXG4gICAgICAgICAgICBzdGFydFZhbHVlQmVmb3JlRXZlbnQsXG4gICAgICAgICAgICBzdGFydFZhbHVlQmVmb3JlRXZlbnQgKyByYW5nZSxcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCxcbiAgICAgICAgICAgIG5ld0NlbnRlclxuICAgICAgICApO1xuICAgICAgICBpZiAobmV3U3RhcnQgPCB0aGlzLk1JTl9SQU5HRV9WQUxVRSB8fCBuZXdFbmQgPiB0aGlzLk1BWF9SQU5HRV9WQUxVRSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHN0YXJ0VmFsdWVCZWZvcmVFdmVudCk7XG4gICAgICAgICAgICBjb25zdCBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnRVc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclVzZXJSYW5nZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZShuZXdDZW50ZXIpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVSYW5nZSA9IHRoaXMudG90YWxSYW5nZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgICAgICBsZXQgeyBuZXdTdGFydCwgbmV3RW5kIH0gPSBjYWxjdWxhdGVOZXdSYW5nZShcbiAgICAgICAgICAgICAgICBzdGFydFZhbHVlQmVmb3JlRXZlbnRVc2VyUmFuZ2UsXG4gICAgICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlICsgdmFsdWVSYW5nZSxcbiAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnRVc2VyUmFuZ2UsXG4gICAgICAgICAgICAgICAgY2VudGVyVXNlclJhbmdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG5ld1N0YXJ0IDwgdGhpcy5taW4gfHwgbmV3RW5kID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChuZXdTdGFydCk7XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQobmV3RW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IG5ld1N0YXJ0O1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IG5ld0VuZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZhbHVlKFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdKTtcbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wcm9ncmVzc0JhckV2ZW50UG9zaXRpb25TdGFydCA9IC0xO1xuICAgICAgICB0aGlzLnN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgICAgIHRoaXMucmFuZ2VCZXR3ZWVuRWxlbWVudHNCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgICAgIHRoaXMudG90YWxSYW5nZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMuaGFuZGxlUHJvZ3Jlc3NCYXJNb3ZlRW5kKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmluZ1Byb2dyZXNzQmFyID0gZmFsc2U7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2V0UHJvZ3Jlc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzTGVmdCA9IHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NXaWR0aCA9IGBjYWxjKCR7dGhpcy5lbmRWYWx1ZSAtIHRoaXMuc3RhcnRWYWx1ZX0lICsgMTBweClgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0xlZnQgPSAwO1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc1dpZHRoID0gYGNhbGMoJHt0aGlzLmVuZFZhbHVlfSUgKyAxMHB4KWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHBlcmNlbnRhZ2Ugb2YgYSBtb3VzZSBldmVudCBmcm9tIHRoZSB0cmFjaydzIGxlZnQgZWRnZVxuICAgICAqIEBwYXJhbSBtb3VzZUV2ZW50IG1vdXNlIGV2ZW50XG4gICAgICogQHJldHVybnMgcGVyY2VudGFnZSBmcm9tIHRoZSBsZWZ0IGVkZ2VcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFBlcmNlbnRhZ2VCeUV2ZW50KG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQgfCBQb2ludGVyRXZlbnQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB0cmFja1JlY3QgPSB0aGlzLnRyYWNrLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBuZXdMZWZ0ID0gTWF0aC5yb3VuZCgoKG1vdXNlRXZlbnQuY2xpZW50WCAtIHRyYWNrUmVjdC5sZWZ0KSAvIHRyYWNrUmVjdC53aWR0aCkgKiB0aGlzLk1BWF9SQU5HRV9WQUxVRSk7XG4gICAgICAgIG5ld0xlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihuZXdMZWZ0LCB0aGlzLk1BWF9SQU5HRV9WQUxVRSkpO1xuICAgICAgICByZXR1cm4gbmV3TGVmdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdLCBwYXJzZSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcyAmJiBwYXJzZSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5tYXAoKHgpID0+IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZSh4KSkgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVzZXJSYW5nZU1hcFZhbHVlcygpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLm1pbjtcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5tYXg7XG4gICAgICAgIGlmIChzdGFydCA+IGVuZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXggdmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gbWluIHZhbHVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5jbGVhcigpO1xuICAgICAgICBjb25zdCByYW5nZSA9IGVuZCAtIHN0YXJ0O1xuICAgICAgICBjb25zdCBkZWNpbWFsUGxhY2VzID0gMjtcbiAgICAgICAgY29uc3Qgc3RlcENvdW50ID0gTWF0aC5mbG9vcihyYW5nZSAvIHRoaXMuc3RlcCk7XG4gICAgICAgIGNvbnN0IHZhbHVlczogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgPSBzdGFydDsgdmFsdWUgPD0gZW5kOyB2YWx1ZSArPSB0aGlzLnN0ZXApIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXSAhPT0gZW5kKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaChlbmQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hcHBlZFZhbHVlcyA9IHZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBsZXQgbWFwcGVkID0gKCh2YWx1ZSAtIHN0YXJ0KSAvIHJhbmdlKSAqIHRoaXMuTUFYX1JBTkdFX1ZBTFVFO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobWFwcGVkLnRvRml4ZWQoZGVjaW1hbFBsYWNlcykpO1xuICAgICAgICB9KTtcbiAgICAgICAgbWFwcGVkVmFsdWVzWzBdID0gMDtcbiAgICAgICAgbWFwcGVkVmFsdWVzW21hcHBlZFZhbHVlcy5sZW5ndGggLSAxXSA9IHRoaXMuTUFYX1JBTkdFX1ZBTFVFO1xuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuTUFYX1JBTkdFX1ZBTFVFIC0gbWFwcGVkVmFsdWVzW21hcHBlZFZhbHVlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgZXJyb3JQZXJTdGVwID0gZXJyb3IgLyBzdGVwQ291bnQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbWFwcGVkVmFsdWVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgbWFwcGVkVmFsdWVzW2ldICs9IGVycm9yUGVyU3RlcDtcbiAgICAgICAgICAgIG1hcHBlZFZhbHVlc1tpXSA9IHBhcnNlRmxvYXQobWFwcGVkVmFsdWVzW2ldLnRvRml4ZWQoZGVjaW1hbFBsYWNlcykpO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuc2V0KHZhbHVlLCBtYXBwZWRWYWx1ZXNbaW5kZXhdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdXNlciB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzbGlkZXIgdmFsdWUgYnkgdXNpbmcgdGhlIG1hcCBvZiByYW5nZSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBJZiB0aGUgbWFwIGlzIDA6IHsgMCB9LCAxOiB7IDEwIH0sIDI6IHsgMzAgfSwgMzogeyA0MCB9LCA0OiB7IDUwIH1cbiAgICAgKiBhbmQgdGhlIHNsaWRlclZhbHVlIGlzIDM3LCB0aGUgZnVuY3Rpb24gcmV0dXJucyAzXG4gICAgICogb3IgdGhlIHNsaWRlciB2YWx1ZSBpcyA0MCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgNFxuICAgICAqIEBwYXJhbSBzbGlkZXJWYWx1ZSB0aGUgdmFsdWUgb2YgdGhlIHNsaWRlciAodmFsdWVzIG9ubHkgYmV0d2VlbiByYW5nZSBNSU4gYW5kIE1BWClcbiAgICAgKiBAcmV0dXJucyB0aGUgdXNlciB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzbGlkZXIgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoc2xpZGVyVmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXBUb0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyKS5tYXAoKFt2YWx1ZSwgbWFwcGVkXSkgPT4gKHsgdmFsdWUsIG1hcHBlZCB9KSk7XG4gICAgICAgIGNvbnN0IGV4YWN0VmFsdWUgPSBtYXBUb0FycmF5LmZpbmQoKHgpID0+IHgubWFwcGVkID09IHNsaWRlclZhbHVlKTtcbiAgICAgICAgY29uc3QgY2xvc2VzdCA9IG1hcFRvQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLmFicyhjdXJyLm1hcHBlZCAtIHNsaWRlclZhbHVlKSA8IE1hdGguYWJzKHByZXYubWFwcGVkIC0gc2xpZGVyVmFsdWUpID8gY3VyciA6IHByZXYpO1xuICAgICAgICByZXR1cm4gZXhhY3RWYWx1ZSA/IGV4YWN0VmFsdWUudmFsdWUgOiBjbG9zZXN0LnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUga2V5IGZyb20gdGhlIG1hcCB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGdpdmVuIHNsaWRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdXNlclZhbHVlIC0gVGhlIHZhbHVlIHRvIGZpbmQgdGhlIGNsb3Nlc3Qga2V5IGZvci4gKHZhbHVlcyBvbmx5IGJldHdlZW4gMCAtIDEwMClcbiAgICAgKiBAcmV0dXJucyBUaGUga2V5IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGNsb3Nlc3QgbWFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcih1c2VyVmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1hcFRvQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIpLm1hcCgoW3ZhbHVlLCBtYXBwZWRdKSA9PiAoeyB2YWx1ZSwgbWFwcGVkIH0pKTtcbiAgICAgICAgaWYgKHVzZXJWYWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAxXS5tYXBwZWRcbiAgICAgICAgfSBlbHNlIGlmICh1c2VyVmFsdWUgPD0gdGhpcy5taW4pIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBUb0FycmF5WzBdLm1hcHBlZFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4YWN0VmFsdWUgPSBtYXBUb0FycmF5LmZpbmQoKHgpID0+IHgudmFsdWUgPT0gdXNlclZhbHVlKTtcbiAgICAgICAgY29uc3QgY2xvc2VzdFZhbHVlID0gbWFwVG9BcnJheS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IE1hdGguYWJzKGN1cnIudmFsdWUgLSB1c2VyVmFsdWUpIDwgTWF0aC5hYnMocHJldi52YWx1ZSAtIHVzZXJWYWx1ZSkgPyBjdXJyIDogcHJldik7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBleGFjdFZhbHVlIHx8IGNsb3Nlc3RWYWx1ZTtcbiAgICAgICAgY29uc3QgaXNGaXJzdEl0ZW0gPSBtYXBUb0FycmF5WzBdID09PSBpdGVtO1xuICAgICAgICBjb25zdCBpc0xhc3RJdGVtID0gbWFwVG9BcnJheVttYXBUb0FycmF5Lmxlbmd0aCAtIDFdID09PSBpdGVtO1xuICAgICAgICBpZiAoaXNGaXJzdEl0ZW0gJiYgdXNlclZhbHVlID4gdGhpcy5taW4pIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRNaWRwb2ludChpdGVtLm1hcHBlZCwgbWFwVG9BcnJheVsxXS5tYXBwZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTGFzdEl0ZW0gJiYgdXNlclZhbHVlIDwgdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRNaWRwb2ludChpdGVtLm1hcHBlZCwgbWFwVG9BcnJheVttYXBUb0FycmF5Lmxlbmd0aCAtIDJdLm1hcHBlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5tYXBwZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgaGFuZGxlQXJyb3dLZXlMZWZ0KCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50RW5kVmFsdWUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUFycm93S2V5UmlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudFN0YXJ0QW5kRW5kVmFsdWUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudEVuZFZhbHVlKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbmNyZW1lbnRPckRlY3JlbWVudFN0YXJ0QW5kRW5kVmFsdWUoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBbc3RhcnQsIGVuZF0gPSB0aGlzLnZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBnZXREaWZmZXJlbmNlKGVuZCwgc3RhcnQpO1xuICAgICAgICBpZiAoaW5jcmVtZW50KSB7XG4gICAgICAgICAgICBzdGFydCArPSB0aGlzLnN0ZXA7XG4gICAgICAgICAgICBlbmQgKz0gdGhpcy5zdGVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhcnQgLT0gdGhpcy5zdGVwO1xuICAgICAgICAgICAgZW5kIC09IHRoaXMuc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydExlc3NUaGFuTWluID0gc3RhcnQgPCB0aGlzLm1pbjtcbiAgICAgICAgY29uc3QgZW5kR3JlYXRlclRoYW5NYXggPSBlbmQgPiB0aGlzLm1heDtcbiAgICAgICAgaWYgKHN0YXJ0TGVzc1RoYW5NaW4gfHwgZW5kR3JlYXRlclRoYW5NYXgpIHtcbiAgICAgICAgICAgIGlmIChzdGFydExlc3NUaGFuTWluKSB7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLm1pbjtcbiAgICAgICAgICAgICAgICBlbmQgPSBzdGFydCArIGRpZmZlcmVuY2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZEdyZWF0ZXJUaGFuTWF4KSB7XG4gICAgICAgICAgICAgICAgZW5kID0gdGhpcy5tYXg7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydCA8IHRoaXMubWluIHx8IGVuZCA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShbc3RhcnQsIGVuZF0sIGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzKSB7XG4gICAgICAgICAgICBzdGFydCA9IHRoaXMuZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcihzdGFydCk7XG4gICAgICAgICAgICBlbmQgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBzdGFydDtcbiAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IGVuZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pbmNyZW1lbnRPckRlY3JlbWVudEVuZFZhbHVlKGluY3JlbWVudDogYm9vbGVhbikge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgaWYgKGluY3JlbWVudCkge1xuICAgICAgICAgICAgdmFsdWUgKz0gdGhpcy5zdGVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy5zdGVwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBfbmV3RW5kVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzKSB7XG4gICAgICAgICAgICBfbmV3RW5kVmFsdWUgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoX25ld0VuZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX25ld0VuZFZhbHVlIDwgdGhpcy5NSU5fUkFOR0VfVkFMVUUgfHwgX25ld0VuZFZhbHVlID4gdGhpcy5NQVhfUkFOR0VfVkFMVUUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuZFZhbHVlID0gX25ld0VuZFZhbHVlO1xuICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLmVuZFZhbHVlO1xuICAgICAgICB0aGlzLnNldFZhbHVlKF9uZXdFbmRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmVlZFBhcnNlVmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXggIT09IHRoaXMuTUFYX1JBTkdFX1ZBTFVFIHx8IHRoaXMubWluICE9PSB0aGlzLk1JTl9SQU5HRV9WQUxVRTtcbiAgICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBhIG5ldyByYW5nZSBiYXNlZCBvbiB0aGUgb2xkIHJhbmdlIGFuZCB0aGUgcG9zaXRpb25zIGNsaWNrZWQgYW5kIGZpbmFsaXplZC5cbiAqXG4gKiBAcGFyYW0gb2xkU3RhcnQgLSBUaGUgc3RhcnRpbmcgdmFsdWUgb2YgdGhlIG9sZCByYW5nZS5cbiAqIEBwYXJhbSBvbGRFbmQgLSBUaGUgZW5kaW5nIHZhbHVlIG9mIHRoZSBvbGQgcmFuZ2UuXG4gKiBAcGFyYW0gY2xpY2tlZFBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBjbGljayBvY2N1cnJlZC5cbiAqIEBwYXJhbSBmaW5hbFBvc2l0aW9uIC0gVGhlIHBvc2l0aW9uIHdoZXJlIHRoZSByYW5nZSBzaG91bGQgZW5kLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5ldyBzdGFydCBhbmQgZW5kIHZhbHVlcyBvZiB0aGUgcmFuZ2UuXG4gKi9cbmNvbnN0IGNhbGN1bGF0ZU5ld1JhbmdlID0gKG9sZFN0YXJ0OiBudW1iZXIsIG9sZEVuZDogbnVtYmVyLCBjbGlja2VkUG9zaXRpb246IG51bWJlciwgZmluYWxQb3NpdGlvbjogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSBvbGRFbmQgLSBvbGRTdGFydDtcbiAgICBjb25zdCBuZXdTdGFydCA9IGZpbmFsUG9zaXRpb24gLSAoY2xpY2tlZFBvc2l0aW9uIC0gb2xkU3RhcnQpO1xuICAgIGNvbnN0IG5ld0VuZCA9IG5ld1N0YXJ0ICsgcmFuZ2U7XG4gICAgcmV0dXJuIHsgbmV3U3RhcnQsIG5ld0VuZCB9O1xufTtcblxuY29uc3QgaXNJblJhbmdlID0gKHZhbHVlOiBudW1iZXIsIHJhbmdlU3RhcnQ6IG51bWJlciwgcmFuZ2VFbmQ6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IFttaW4sIG1heF0gPSByYW5nZVN0YXJ0IDwgcmFuZ2VFbmQgPyBbcmFuZ2VTdGFydCwgcmFuZ2VFbmRdIDogW3JhbmdlRW5kLCByYW5nZVN0YXJ0XTtcbiAgICByZXR1cm4gdmFsdWUgPj0gbWluICYmIHZhbHVlIDw9IG1heDtcbn07XG5cbmNvbnN0IGdldE1pZHBvaW50ID0gKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbWlkcG9pbnQgPSAoc3RhcnQgKyBlbmQpIC8gMjtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChtaWRwb2ludC50b0ZpeGVkKDIpKTtcbn1cbmNvbnN0IGdldERpZmZlcmVuY2UgPSAoZW5kOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gTWF0aC5hYnMoZW5kIC0gc3RhcnQpO1xufVxuIl19
|
|
648
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWN6RTtJQW9FSTtRQUFBLGlCQUFpQjtRQW5FQSxvQkFBZSxHQUFHLEdBQUcsQ0FBQztRQUN0QixvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUs5QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFVBQUssR0FBOEIsQ0FBQyxDQUFDO1FBR3JDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFHNUQsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUdULGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBR3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIsUUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFHM0IsUUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFTM0IsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUViLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLGFBQVEsR0FBK0MsY0FBUSxDQUFDLENBQUM7UUFDakUsY0FBUyxHQUErQyxjQUFRLENBQUMsQ0FBQztRQUVqRSxrQkFBYSxHQUEyQixJQUFJLENBQUM7UUFDN0Msa0NBQTZC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LElBQUksR0FBRyxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUM7QUFDeEMsQ0FBQyxDQUFDOztBQUVGLElBQU0sV0FBVyxHQUFHLFVBQUMsS0FBYSxFQUFFLEdBQVc7SUFDM0MsSUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUE7O0FBQ0QsSUFBTSxhQUFhLEdBQUcsVUFBQyxHQUFXLEVBQUUsS0FBYTtJQUM3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLXNsaWRlclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vc2xpZGVyLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3NsaWRlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9SQU5HRV9WQUxVRSA9IDEwMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1JTl9SQU5HRV9WQUxVRSA9IDA7XG4gICAgQFZpZXdDaGlsZChcInRyYWNrXCIpXG4gICAgcHVibGljIHRyYWNrITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSA9IDA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdGVwID0gMTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGRlblRodW1iID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXggPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heFZhbHVlTGFiZWw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIHB1YmxpYyBzdGFydFZhbHVlID0gMDtcbiAgICBwdWJsaWMgZW5kVmFsdWUgPSAwO1xuICAgIHB1YmxpYyBtb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgIHB1YmxpYyBwcm9ncmVzc0xlZnQgPSAwO1xuICAgIHB1YmxpYyBwcm9ncmVzc1dpZHRoID0gXCJcIjtcblxuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSkgPT4gdm9pZCA9ICgpID0+IHsgfTtcblxuICAgIHByaXZhdGUgZHJhZ2dpbmdUaHVtYjogXCJzdGFydFwiIHwgXCJlbmRcIiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICBwcml2YXRlIHN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgcHJpdmF0ZSByYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICBwcml2YXRlIHRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgLyoqXG4gICAgICogTWFwIG9mIHZhbGlkIHZhbHVlcyBmb3IgdmFsdWVzIGluIHJhbmdlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2l0aCBtaW4gPSAtMTAgYW5kIG1heCA9IDEwIHdpbGwgaGF2ZSB0aGlzIG1hcC5cbiAgICAgKiB7XG4gICAgICogICAgIC0xMDogeyAwIH0sXG4gICAgICogICAgIC05OiB7IDEwIH0sXG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgMTA6IHsgMTAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBwcml2YXRlIG1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyOiBNYXA8bnVtYmVyLCBudW1iZXI+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgYWN0aXZlTW91c2VEb3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb2N1c0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzT25NaW4gPSBjaGFuZ2VzLm1pbiAmJiAhY2hhbmdlcy5taW4uZmlyc3RDaGFuZ2U7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXNPbk1heCA9IGNoYW5nZXMubWF4ICYmICFjaGFuZ2VzLm1heC5maXJzdENoYW5nZTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlcyA9IGhhc0NoYW5nZXNPbk1pbiB8fCBoYXNDaGFuZ2VzT25NYXg7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnNldFVzZXJSYW5nZU1hcFZhbHVlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlcygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZXMoKTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6a2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNBY3RpdmUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlMZWZ0ID0gJGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIjtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlSaWdodCA9ICRldmVudC5rZXkgPT09IFwiQXJyb3dSaWdodFwiO1xuICAgICAgICAgICAgaWYgKGlzQXJyb3dLZXlMZWZ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcnJvd0tleUxlZnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJvd0tleVJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBcnJvd0tleVJpZ2h0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBTdGFydFRleHQoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZVswXT8udG9TdHJpbmcoKSA6IHRoaXMudmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdGlwRW5kVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlWzFdPy50b1N0cmluZygpIDogdGhpcy52YWx1ZT8udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG9iajtcbiAgICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRm9jdXNJbigpIHtcbiAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRyYWNrQ2xpY2soZXZ0OiBQb2ludGVyRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCB0aGlzLmFjdGl2ZU1vdXNlRG93bikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYWNrQ2xpY2tQZXJjZW50YWdlID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldnQpO1xuICAgICAgICBjb25zdCB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodHJhY2tDbGlja1BlcmNlbnRhZ2UpO1xuICAgICAgICBjb25zdCBfdHJhY2tDbGlja1ZhbGlkID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UgOiB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgY29uc3QgX3NldEVuZFZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2VuZFZhbHVlVXNlclZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgX2VuZFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldCh0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIDogdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgX2VuZFZhbHVlVXNlclZhbHVlICE9PSB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gX2VuZFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdHJhY2tDbGlja1BlcmNlbnRhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgX3NldFN0YXJ0VmFsdWUgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfc3RhcnRWYWx1ZVVzZXJWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZSh0aGlzLnN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzICYmIF9zdGFydFZhbHVlVXNlclZhbHVlICE9PSB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBfc3RhcnRWYWx1ZSA9IHRoaXMubmVlZFBhcnNlVmFsdWVzXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQodHJhY2tDbGlja1RvVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IF9zdGFydFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkU3RhcnQgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHN0YXJ0KSA6IHN0YXJ0O1xuICAgICAgICAgICAgY29uc3QgdmFsaWRFbmQgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KGVuZCkgOiBlbmQ7XG4gICAgICAgICAgICBjb25zdCBfdXBkYXRlU3RhcnQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgX3NldFN0YXJ0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0cmFja0NsaWNrUGVyY2VudGFnZSwgdmFsaWRFbmRdKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IF91cGRhdGVFbmQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgX3NldEVuZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdmFsaWRTdGFydCwgdHJhY2tDbGlja1BlcmNlbnRhZ2VdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBjbGlja1BlcmNlbnRhZ2VCZXR3ZWVuUmFuZ2UgPSBpc0luUmFuZ2UoX3RyYWNrQ2xpY2tWYWxpZCwgc3RhcnQsIGVuZCk7XG4gICAgICAgICAgICBpZiAoX3RyYWNrQ2xpY2tWYWxpZCA8IHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgX3VwZGF0ZVN0YXJ0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90cmFja0NsaWNrVmFsaWQgPiBlbmQpIHtcbiAgICAgICAgICAgICAgICBfdXBkYXRlRW5kKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNsaWNrUGVyY2VudGFnZUJldHdlZW5SYW5nZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IChzdGFydCArIGVuZCkgLyAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrQ2xpY2tQZXJjZW50YWdlSXNFeGFjdGlkZGxlID0gX3RyYWNrQ2xpY2tWYWxpZCA9PT0gbWlkZGxlO1xuICAgICAgICAgICAgICAgIGlmICh0cmFja0NsaWNrUGVyY2VudGFnZUlzRXhhY3RpZGRsZSkge1xuICAgICAgICAgICAgICAgICAgICBfdXBkYXRlU3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXRTdGFydCA9IF90cmFja0NsaWNrVmFsaWQgPCBtaWRkbGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldEVuZCA9IF90cmFja0NsaWNrVmFsaWQgPiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXRTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2V0RW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdXBkYXRlRW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRyYWNrQ2xpY2tQZXJjZW50YWdlKTtcbiAgICAgICAgICAgIF9zZXRFbmRWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblByb2dyZXNzTW91c2VEb3duKGV2dDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9ncmVzc0JhckV2ZW50UG9zaXRpb25TdGFydCA9IHRoaXMuZ2V0UGVyY2VudGFnZUJ5RXZlbnQoZXZ0KTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgdGhpcy5yYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSB0aGlzLmVuZFZhbHVlIC0gdGhpcy5zdGFydFZhbHVlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICAgICAgdGhpcy50b3RhbFJhbmdlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IGVuZCAtIHN0YXJ0O1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VEb3duKF86IE1vdXNlRXZlbnQsIHRodW1iOiBcInN0YXJ0XCIgfCBcImVuZFwiKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kcmFnZ2luZ1RodW1iID0gdGh1bWI7XG4gICAgICAgIHRoaXMuYWN0aXZlTW91c2VEb3duID0gdHJ1ZTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uVGh1bWJNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbk1vdXNlVXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UmFuZ2VWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IF9zZXRTdGFydEFuZEVuZFZhbHVlID0gKHN0YXJ0VmFsdWU6IG51bWJlciwgZW5kVmFsdWU6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKHN0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMuZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcihlbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgdXNlIFwibXVsdGlwbGVcIiB3aXRoIHZhbHVlIGFzIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy52YWx1ZVswXTtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgICBfc2V0U3RhcnRBbmRFbmRWYWx1ZSh0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgbGV0IFtfc3RhcnRWYWx1ZSwgX2VuZFZhbHVlXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBnZXREaWZmZXJlbmNlKF9lbmRWYWx1ZSwgX3N0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZW5kVmFsdWVJc0dyZWF0aGVyVGhhbk1heCA9IF9lbmRWYWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4gPSBfc3RhcnRWYWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlcyA9IGVuZFZhbHVlSXNHcmVhdGhlclRoYW5NYXggfHwgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW47XG4gICAgICAgICAgICBpZiAoZW5kVmFsdWVJc0dyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIF9zdGFydFZhbHVlID0gX2VuZFZhbHVlIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4pIHtcbiAgICAgICAgICAgICAgICBfc3RhcnRWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IF9zdGFydFZhbHVlICsgZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZWVkVXBkYXRlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgX3NldFN0YXJ0QW5kRW5kVmFsdWUoX3N0YXJ0VmFsdWUsIF9lbmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgX3ZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUdyZWF0aGVyVGhhbk1heCA9IF92YWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgY29uc3QgdmFsdWVMZXNzVGhhbk1pbiA9IF92YWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlID0gdmFsdWVHcmVhdGhlclRoYW5NYXggfHwgdmFsdWVMZXNzVGhhbk1pbjtcbiAgICAgICAgICAgIGlmICh2YWx1ZUdyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIF92YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUxlc3NUaGFuTWluKSB7XG4gICAgICAgICAgICAgICAgX3ZhbHVlID0gdGhpcy5taW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmVlZFVwZGF0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShfdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblRodW1iTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCAhdGhpcy5kcmFnZ2luZ1RodW1iKSByZXR1cm47XG5cbiAgICAgICAgbGV0IG5ld1Bvc2l0aW9uID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiICYmIG5ld1Bvc2l0aW9uID4gdGhpcy5lbmRWYWx1ZSkgfHxcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJlbmRcIiAmJiBuZXdQb3NpdGlvbiA8IHRoaXMuc3RhcnRWYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbkluVXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKG5ld1Bvc2l0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gXCJzdGFydFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwiZW5kXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ld1Bvc2l0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdKTtcblxuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCAmJiB0aGlzLmRyYWdnaW5nVGh1bWIgPT09IFwic3RhcnRcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09PSBlbmQgJiYgdGhpcy5kcmFnZ2luZ1RodW1iID09PSBcImVuZFwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMuc3RhcnRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyBwb3NpdGlvbkluVXNlclJhbmdlIDogbmV3UG9zaXRpb247XG4gICAgICAgICAgICBjb25zdCBpc0F0U2FtZVZhbHVlID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyBwb3NpdGlvbkluVXNlclJhbmdlID09PSB0aGlzLnZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBoYXNTdGVwID0gdGhpcy5zdGVwICE9PSAwO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVJc1ZhbGlkQnlTdGVwID0gaGFzU3RlcCA/IGN1cnJlbnRWYWx1ZSArIHRoaXMuc3RlcCA9PT0gX3ZhbHVlIHx8IGN1cnJlbnRWYWx1ZSAtIHRoaXMuc3RlcCA9PT0gX3ZhbHVlIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoaXNBdFNhbWVWYWx1ZSAmJiAhbmV3VmFsdWVJc1ZhbGlkQnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQocG9zaXRpb25JblVzZXJSYW5nZSkgOiBuZXdQb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmdUaHVtYiA9IG51bGw7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vblRodW1iTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZVVwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vdXNlRG93biA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhhbmRsZVByb2dyZXNzQmFyTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm1vdmluZ1Byb2dyZXNzQmFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbmV3Q2VudGVyID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCA9IHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVCZWZvcmVFdmVudCA9IHRoaXMuc3RhcnRWYWx1ZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5yYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgIGxldCB7IG5ld1N0YXJ0LCBuZXdFbmQgfSA9IGNhbGN1bGF0ZU5ld1JhbmdlKFxuICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50LFxuICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50ICsgcmFuZ2UsXG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnQsXG4gICAgICAgICAgICBuZXdDZW50ZXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG5ld1N0YXJ0IDwgdGhpcy5NSU5fUkFOR0VfVkFMVUUgfHwgbmV3RW5kID4gdGhpcy5NQVhfUkFOR0VfVkFMVUUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VmFsdWVCZWZvcmVFdmVudFVzZXJSYW5nZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZShzdGFydFZhbHVlQmVmb3JlRXZlbnQpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50VXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHN0YXJ0UG9zaXRpb25CZWZvcmVFdmVudCk7XG4gICAgICAgICAgICBjb25zdCBjZW50ZXJVc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUobmV3Q2VudGVyKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUmFuZ2UgPSB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50O1xuICAgICAgICAgICAgbGV0IHsgbmV3U3RhcnQsIG5ld0VuZCB9ID0gY2FsY3VsYXRlTmV3UmFuZ2UoXG4gICAgICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlLFxuICAgICAgICAgICAgICAgIHN0YXJ0VmFsdWVCZWZvcmVFdmVudFVzZXJSYW5nZSArIHZhbHVlUmFuZ2UsXG4gICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50VXNlclJhbmdlLFxuICAgICAgICAgICAgICAgIGNlbnRlclVzZXJSYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChuZXdTdGFydCA8IHRoaXMubWluIHx8IG5ld0VuZCA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQobmV3U3RhcnQpO1xuICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KG5ld0VuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSBuZXdTdGFydDtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSBuZXdFbmQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRWYWx1ZShbdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlXSk7XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoYW5kbGVQcm9ncmVzc0Jhck1vdmVFbmQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmUpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldFByb2dyZXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0xlZnQgPSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzV2lkdGggPSBgY2FsYygke3RoaXMuZW5kVmFsdWUgLSB0aGlzLnN0YXJ0VmFsdWV9JSArIDEwcHgpYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NMZWZ0ID0gMDtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NXaWR0aCA9IGBjYWxjKCR7dGhpcy5lbmRWYWx1ZX0lICsgMTBweClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwZXJjZW50YWdlIG9mIGEgbW91c2UgZXZlbnQgZnJvbSB0aGUgdHJhY2sncyBsZWZ0IGVkZ2VcbiAgICAgKiBAcGFyYW0gbW91c2VFdmVudCBtb3VzZSBldmVudFxuICAgICAqIEByZXR1cm5zIHBlcmNlbnRhZ2UgZnJvbSB0aGUgbGVmdCBlZGdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQZXJjZW50YWdlQnlFdmVudChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdHJhY2tSZWN0ID0gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZXQgbmV3TGVmdCA9IE1hdGgucm91bmQoKChtb3VzZUV2ZW50LmNsaWVudFggLSB0cmFja1JlY3QubGVmdCkgLyB0cmFja1JlY3Qud2lkdGgpICogdGhpcy5NQVhfUkFOR0VfVkFMVUUpO1xuICAgICAgICBuZXdMZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obmV3TGVmdCwgdGhpcy5NQVhfUkFOR0VfVkFMVUUpKTtcbiAgICAgICAgcmV0dXJuIG5ld0xlZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSwgcGFyc2UgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgcGFyc2UpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoeCkpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMubWF4O1xuICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWF4IHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbiB2YWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgY29uc3QgZGVjaW1hbFBsYWNlcyA9IDI7XG4gICAgICAgIGNvbnN0IHN0ZXBDb3VudCA9IE1hdGguZmxvb3IocmFuZ2UgLyB0aGlzLnN0ZXApO1xuICAgICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlID0gc3RhcnQ7IHZhbHVlIDw9IGVuZDsgdmFsdWUgKz0gdGhpcy5zdGVwKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gIT09IGVuZCkge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2goZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1hcHBlZCA9ICgodmFsdWUgLSBzdGFydCkgLyByYW5nZSkgKiB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcHBlZC50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcHBlZFZhbHVlc1swXSA9IDA7XG4gICAgICAgIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV0gPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLk1BWF9SQU5HRV9WQUxVRSAtIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGVycm9yUGVyU3RlcCA9IGVycm9yIC8gc3RlcENvdW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG1hcHBlZFZhbHVlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hcHBlZFZhbHVlc1tpXSArPSBlcnJvclBlclN0ZXA7XG4gICAgICAgICAgICBtYXBwZWRWYWx1ZXNbaV0gPSBwYXJzZUZsb2F0KG1hcHBlZFZhbHVlc1tpXS50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLnNldCh2YWx1ZSwgbWFwcGVkVmFsdWVzW2luZGV4XSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlIGJ5IHVzaW5nIHRoZSBtYXAgb2YgcmFuZ2UgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogSWYgdGhlIG1hcCBpcyAwOiB7IDAgfSwgMTogeyAxMCB9LCAyOiB7IDMwIH0sIDM6IHsgNDAgfSwgNDogeyA1MCB9XG4gICAgICogYW5kIHRoZSBzbGlkZXJWYWx1ZSBpcyAzNywgdGhlIGZ1bmN0aW9uIHJldHVybnMgM1xuICAgICAqIG9yIHRoZSBzbGlkZXIgdmFsdWUgaXMgNDAsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDRcbiAgICAgKiBAcGFyYW0gc2xpZGVyVmFsdWUgdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXIgKHZhbHVlcyBvbmx5IGJldHdlZW4gcmFuZ2UgTUlOIGFuZCBNQVgpXG4gICAgICogQHJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHNsaWRlclZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWFwVG9BcnJheSA9IEFycmF5LmZyb20odGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlcikubWFwKChbdmFsdWUsIG1hcHBlZF0pID0+ICh7IHZhbHVlLCBtYXBwZWQgfSkpO1xuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4Lm1hcHBlZCA9PSBzbGlkZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSBtYXBUb0FycmF5LnJlZHVjZSgocHJldiwgY3VycikgPT4gTWF0aC5hYnMoY3Vyci5tYXBwZWQgLSBzbGlkZXJWYWx1ZSkgPCBNYXRoLmFicyhwcmV2Lm1hcHBlZCAtIHNsaWRlclZhbHVlKSA/IGN1cnIgOiBwcmV2KTtcbiAgICAgICAgcmV0dXJuIGV4YWN0VmFsdWUgPyBleGFjdFZhbHVlLnZhbHVlIDogY2xvc2VzdC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIGtleSBmcm9tIHRoZSBtYXAgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBnaXZlbiBzbGlkZXIgdmFsdWUuXG4gICAgICogQHBhcmFtIHVzZXJWYWx1ZSAtIFRoZSB2YWx1ZSB0byBmaW5kIHRoZSBjbG9zZXN0IGtleSBmb3IuICh2YWx1ZXMgb25seSBiZXR3ZWVuIDAgLSAxMDApXG4gICAgICogQHJldHVybnMgVGhlIGtleSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjbG9zZXN0IG1hcHBlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIodXNlclZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtYXBUb0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyKS5tYXAoKFt2YWx1ZSwgbWFwcGVkXSkgPT4gKHsgdmFsdWUsIG1hcHBlZCB9KSk7XG4gICAgICAgIGlmICh1c2VyVmFsdWUgPj0gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBUb0FycmF5W21hcFRvQXJyYXkubGVuZ3RoIC0gMV0ubWFwcGVkXG4gICAgICAgIH0gZWxzZSBpZiAodXNlclZhbHVlIDw9IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheVswXS5tYXBwZWRcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4LnZhbHVlID09IHVzZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3RWYWx1ZSA9IG1hcFRvQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLmFicyhjdXJyLnZhbHVlIC0gdXNlclZhbHVlKSA8IE1hdGguYWJzKHByZXYudmFsdWUgLSB1c2VyVmFsdWUpID8gY3VyciA6IHByZXYpO1xuICAgICAgICBjb25zdCBpdGVtID0gZXhhY3RWYWx1ZSB8fCBjbG9zZXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gbWFwVG9BcnJheVswXSA9PT0gaXRlbTtcbiAgICAgICAgY29uc3QgaXNMYXN0SXRlbSA9IG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAxXSA9PT0gaXRlbTtcbiAgICAgICAgaWYgKGlzRmlyc3RJdGVtICYmIHVzZXJWYWx1ZSA+IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbMV0ubWFwcGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0xhc3RJdGVtICYmIHVzZXJWYWx1ZSA8IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAyXS5tYXBwZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWFwcGVkO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGhhbmRsZUFycm93S2V5TGVmdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50U3RhcnRBbmRFbmRWYWx1ZShmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudEVuZFZhbHVlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBcnJvd0tleVJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnRTdGFydEFuZEVuZFZhbHVlKGluY3JlbWVudDogYm9vbGVhbikge1xuICAgICAgICBsZXQgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gZ2V0RGlmZmVyZW5jZShlbmQsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGluY3JlbWVudCkge1xuICAgICAgICAgICAgc3RhcnQgKz0gdGhpcy5zdGVwO1xuICAgICAgICAgICAgZW5kICs9IHRoaXMuc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXJ0IC09IHRoaXMuc3RlcDtcbiAgICAgICAgICAgIGVuZCAtPSB0aGlzLnN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnRMZXNzVGhhbk1pbiA9IHN0YXJ0IDwgdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZEdyZWF0ZXJUaGFuTWF4ID0gZW5kID4gdGhpcy5tYXg7XG4gICAgICAgIGlmIChzdGFydExlc3NUaGFuTWluIHx8IGVuZEdyZWF0ZXJUaGFuTWF4KSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRMZXNzVGhhbk1pbikge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRHcmVhdGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnQgPCB0aGlzLm1pbiB8fCBlbmQgPiB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoW3N0YXJ0LCBlbmRdLCBmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgc3RhcnQgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoc3RhcnQpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gc3RhcnQ7XG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSBlbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChpbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IHRoaXMuc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlIC09IHRoaXMuc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgX25ld0VuZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgX25ld0VuZFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKF9uZXdFbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9uZXdFbmRWYWx1ZSA8IHRoaXMuTUlOX1JBTkdFX1ZBTFVFIHx8IF9uZXdFbmRWYWx1ZSA+IHRoaXMuTUFYX1JBTkdFX1ZBTFVFKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IF9uZXdFbmRWYWx1ZTtcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5lbmRWYWx1ZTtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShfbmV3RW5kVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5lZWRQYXJzZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ICE9PSB0aGlzLk1BWF9SQU5HRV9WQUxVRSB8fCB0aGlzLm1pbiAhPT0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG4gICAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgYSBuZXcgcmFuZ2UgYmFzZWQgb24gdGhlIG9sZCByYW5nZSBhbmQgdGhlIHBvc2l0aW9ucyBjbGlja2VkIGFuZCBmaW5hbGl6ZWQuXG4gKlxuICogQHBhcmFtIG9sZFN0YXJ0IC0gVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIHRoZSBvbGQgcmFuZ2UuXG4gKiBAcGFyYW0gb2xkRW5kIC0gVGhlIGVuZGluZyB2YWx1ZSBvZiB0aGUgb2xkIHJhbmdlLlxuICogQHBhcmFtIGNsaWNrZWRQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgY2xpY2sgb2NjdXJyZWQuXG4gKiBAcGFyYW0gZmluYWxQb3NpdGlvbiAtIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcmFuZ2Ugc2hvdWxkIGVuZC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBuZXcgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgb2YgdGhlIHJhbmdlLlxuICovXG5jb25zdCBjYWxjdWxhdGVOZXdSYW5nZSA9IChvbGRTdGFydDogbnVtYmVyLCBvbGRFbmQ6IG51bWJlciwgY2xpY2tlZFBvc2l0aW9uOiBudW1iZXIsIGZpbmFsUG9zaXRpb246IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHJhbmdlID0gb2xkRW5kIC0gb2xkU3RhcnQ7XG4gICAgY29uc3QgbmV3U3RhcnQgPSBmaW5hbFBvc2l0aW9uIC0gKGNsaWNrZWRQb3NpdGlvbiAtIG9sZFN0YXJ0KTtcbiAgICBjb25zdCBuZXdFbmQgPSBuZXdTdGFydCArIHJhbmdlO1xuICAgIHJldHVybiB7IG5ld1N0YXJ0LCBuZXdFbmQgfTtcbn07XG5cbmNvbnN0IGlzSW5SYW5nZSA9ICh2YWx1ZTogbnVtYmVyLCByYW5nZVN0YXJ0OiBudW1iZXIsIHJhbmdlRW5kOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBbbWluLCBtYXhdID0gcmFuZ2VTdGFydCA8IHJhbmdlRW5kID8gW3JhbmdlU3RhcnQsIHJhbmdlRW5kXSA6IFtyYW5nZUVuZCwgcmFuZ2VTdGFydF07XG4gICAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuXG5jb25zdCBnZXRNaWRwb2ludCA9IChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1pZHBvaW50ID0gKHN0YXJ0ICsgZW5kKSAvIDI7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQobWlkcG9pbnQudG9GaXhlZCgyKSk7XG59XG5jb25zdCBnZXREaWZmZXJlbmNlID0gKGVuZDogbnVtYmVyLCBzdGFydDogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIE1hdGguYWJzKGVuZCAtIHN0YXJ0KTtcbn1cbiJdfQ==
|
|
@@ -122,7 +122,7 @@ var StatsCardComponent = /** @class */ (function () {
|
|
|
122
122
|
selector: "s-stats-card",
|
|
123
123
|
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",
|
|
124
124
|
encapsulation: ViewEncapsulation.None,
|
|
125
|
-
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}}"]
|
|
125
|
+
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}}"]
|
|
126
126
|
})
|
|
127
127
|
], StatsCardComponent);
|
|
128
128
|
return StatsCardComponent;
|