ngx-histaff-alpha 2.6.4 → 2.6.5
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/esm2022/lib/app/libraries/d3/core-statistic-widget/core-statistic-widget.component.mjs +4 -3
- package/fesm2022/ngx-histaff-alpha.mjs +3 -2
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/core-table/core-table.component.d.ts +1 -1
- package/lib/app/libraries/d3/core-statistic-widget/core-statistic-widget.component.d.ts +2 -1
- package/package.json +1 -1
package/esm2022/lib/app/libraries/d3/core-statistic-widget/core-statistic-widget.component.mjs
CHANGED
|
@@ -25,6 +25,7 @@ export class CoreStatisticWidgetComponent {
|
|
|
25
25
|
this.$padding = input({ top: 30, right: 30, bottom: 30, left: 30 });
|
|
26
26
|
this.$outerWidth = input.required();
|
|
27
27
|
this.$outerHeight = input.required();
|
|
28
|
+
this.$outerGroupBackgroundColor = input('transparent');
|
|
28
29
|
this.$divisorLineStrokeColor = input(d3.color("gray"));
|
|
29
30
|
this.$divisorLineStrokeWidth = input(3);
|
|
30
31
|
this.$lowPickColor = input("#FF8C00");
|
|
@@ -304,7 +305,7 @@ export class CoreStatisticWidgetComponent {
|
|
|
304
305
|
this.svg.append("rect")
|
|
305
306
|
.attr("width", this.$outerWidth())
|
|
306
307
|
.attr("height", this.$outerHeight())
|
|
307
|
-
.attr("fill",
|
|
308
|
+
.attr("fill", this.$outerGroupBackgroundColor());
|
|
308
309
|
this.innerGroup = this.svg.append("g")
|
|
309
310
|
.attr("transform", "translate(" + this.$margin().left + "," + this.$margin().top + ")");
|
|
310
311
|
this.innerGroup.append("rect")
|
|
@@ -591,7 +592,7 @@ export class CoreStatisticWidgetComponent {
|
|
|
591
592
|
});
|
|
592
593
|
}
|
|
593
594
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreStatisticWidgetComponent, deps: [{ token: i1.MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
594
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.2.3", type: CoreStatisticWidgetComponent, isStandalone: true, selector: "core-statistic-widget", inputs: { $metric: { classPropertyName: "$metric", publicName: "$metric", isSignal: true, isRequired: true, transformFunction: null }, $dataset: { classPropertyName: "$dataset", publicName: "$dataset", isSignal: true, isRequired: true, transformFunction: null }, $value: { classPropertyName: "$value", publicName: "$value", isSignal: true, isRequired: true, transformFunction: null }, $comparisonValue: { classPropertyName: "$comparisonValue", publicName: "$comparisonValue", isSignal: true, isRequired: true, transformFunction: null }, $innerGroupBackgroundColor: { classPropertyName: "$innerGroupBackgroundColor", publicName: "$innerGroupBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $margin: { classPropertyName: "$margin", publicName: "$margin", isSignal: true, isRequired: false, transformFunction: null }, $padding: { classPropertyName: "$padding", publicName: "$padding", isSignal: true, isRequired: false, transformFunction: null }, $outerWidth: { classPropertyName: "$outerWidth", publicName: "$outerWidth", isSignal: true, isRequired: true, transformFunction: null }, $outerHeight: { classPropertyName: "$outerHeight", publicName: "$outerHeight", isSignal: true, isRequired: true, transformFunction: null }, $divisorLineStrokeColor: { classPropertyName: "$divisorLineStrokeColor", publicName: "$divisorLineStrokeColor", isSignal: true, isRequired: false, transformFunction: null }, $divisorLineStrokeWidth: { classPropertyName: "$divisorLineStrokeWidth", publicName: "$divisorLineStrokeWidth", isSignal: true, isRequired: false, transformFunction: null }, $lowPickColor: { classPropertyName: "$lowPickColor", publicName: "$lowPickColor", isSignal: true, isRequired: false, transformFunction: null }, $highPickColor: { classPropertyName: "$highPickColor", publicName: "$highPickColor", isSignal: true, isRequired: false, transformFunction: null }, $comparisonTextFillColor: { classPropertyName: "$comparisonTextFillColor", publicName: "$comparisonTextFillColor", isSignal: true, isRequired: false, transformFunction: null }, valueFontSize: { classPropertyName: "valueFontSize", publicName: "valueFontSize", isSignal: false, isRequired: false, transformFunction: null }, divisorLineMargin: { classPropertyName: "divisorLineMargin", publicName: "divisorLineMargin", isSignal: false, isRequired: false, transformFunction: null }, titleFillColor: { classPropertyName: "titleFillColor", publicName: "titleFillColor", isSignal: false, isRequired: false, transformFunction: null }, valueFillColor: { classPropertyName: "valueFillColor", publicName: "valueFillColor", isSignal: false, isRequired: false, transformFunction: null }, comparisonValueFillColor: { classPropertyName: "comparisonValueFillColor", publicName: "comparisonValueFillColor", isSignal: false, isRequired: false, transformFunction: null }, showAxes: { classPropertyName: "showAxes", publicName: "showAxes", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-statistic-widget-container\">\r\n \r\n</div>", styles: [""] }); }
|
|
595
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.2.3", type: CoreStatisticWidgetComponent, isStandalone: true, selector: "core-statistic-widget", inputs: { $metric: { classPropertyName: "$metric", publicName: "$metric", isSignal: true, isRequired: true, transformFunction: null }, $dataset: { classPropertyName: "$dataset", publicName: "$dataset", isSignal: true, isRequired: true, transformFunction: null }, $value: { classPropertyName: "$value", publicName: "$value", isSignal: true, isRequired: true, transformFunction: null }, $comparisonValue: { classPropertyName: "$comparisonValue", publicName: "$comparisonValue", isSignal: true, isRequired: true, transformFunction: null }, $innerGroupBackgroundColor: { classPropertyName: "$innerGroupBackgroundColor", publicName: "$innerGroupBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $margin: { classPropertyName: "$margin", publicName: "$margin", isSignal: true, isRequired: false, transformFunction: null }, $padding: { classPropertyName: "$padding", publicName: "$padding", isSignal: true, isRequired: false, transformFunction: null }, $outerWidth: { classPropertyName: "$outerWidth", publicName: "$outerWidth", isSignal: true, isRequired: true, transformFunction: null }, $outerHeight: { classPropertyName: "$outerHeight", publicName: "$outerHeight", isSignal: true, isRequired: true, transformFunction: null }, $outerGroupBackgroundColor: { classPropertyName: "$outerGroupBackgroundColor", publicName: "$outerGroupBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $divisorLineStrokeColor: { classPropertyName: "$divisorLineStrokeColor", publicName: "$divisorLineStrokeColor", isSignal: true, isRequired: false, transformFunction: null }, $divisorLineStrokeWidth: { classPropertyName: "$divisorLineStrokeWidth", publicName: "$divisorLineStrokeWidth", isSignal: true, isRequired: false, transformFunction: null }, $lowPickColor: { classPropertyName: "$lowPickColor", publicName: "$lowPickColor", isSignal: true, isRequired: false, transformFunction: null }, $highPickColor: { classPropertyName: "$highPickColor", publicName: "$highPickColor", isSignal: true, isRequired: false, transformFunction: null }, $comparisonTextFillColor: { classPropertyName: "$comparisonTextFillColor", publicName: "$comparisonTextFillColor", isSignal: true, isRequired: false, transformFunction: null }, valueFontSize: { classPropertyName: "valueFontSize", publicName: "valueFontSize", isSignal: false, isRequired: false, transformFunction: null }, divisorLineMargin: { classPropertyName: "divisorLineMargin", publicName: "divisorLineMargin", isSignal: false, isRequired: false, transformFunction: null }, titleFillColor: { classPropertyName: "titleFillColor", publicName: "titleFillColor", isSignal: false, isRequired: false, transformFunction: null }, valueFillColor: { classPropertyName: "valueFillColor", publicName: "valueFillColor", isSignal: false, isRequired: false, transformFunction: null }, comparisonValueFillColor: { classPropertyName: "comparisonValueFillColor", publicName: "comparisonValueFillColor", isSignal: false, isRequired: false, transformFunction: null }, showAxes: { classPropertyName: "showAxes", publicName: "showAxes", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-statistic-widget-container\">\r\n \r\n</div>", styles: [""] }); }
|
|
595
596
|
}
|
|
596
597
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreStatisticWidgetComponent, decorators: [{
|
|
597
598
|
type: Component,
|
|
@@ -609,4 +610,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
609
610
|
}], showAxes: [{
|
|
610
611
|
type: Input
|
|
611
612
|
}] } });
|
|
612
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBa0IsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7O0FBR3pCLE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIsbUVBQTJDLENBQUE7SUFDM0MsaUVBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFTRCxNQUFNLENBQU4sSUFBWSxnQ0FJWDtBQUpELFdBQVksZ0NBQWdDO0lBQzFDLHVEQUFtQixDQUFBO0lBQ25CLHVEQUFtQixDQUFBO0lBQ25CLDZEQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBSTNDO0FBK0JELE1BQU0sT0FBTyw0QkFBNEI7SUFtQnZDLFlBQW9CLEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBakI3QyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxL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Qzs4R0E3b0JVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLCtuR0NuRHpDLDhFQUVNOzsyRkRpRE8sNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsRUFFUjt5RkFzQ1EsYUFBYTtzQkFBckIsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgV3JpdGFibGVTaWduYWwsIGNvbXB1dGVkLCBpbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gRW51bUhyQ29tcGFyaXNvbkNvZGUge1xyXG4gIFdJVEhfUFJFVklPVVNfTU9OVEggPSAnV0lUSF9QUkVWSU9VU19NT05USCcsXHJcbiAgV0lUSF9QUkVWSU9VU19ZRUFSID0gJ1dJVEhfUFJFVklPVVNfWUVBUicsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUhyTWV0cmljIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb21wYXJpc29uQ29kZTogRW51bUhyQ29tcGFyaXNvbkNvZGU7XHJcbiAgZGF0YVR5cGU6IEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZSB7XHJcbiAgSU5URUdFUiA9ICdJTlRFR0VSJyxcclxuICBERUNJTUFMID0gJ0RFQ0lNQUwnLFxyXG4gIFBFUkNFTlRBR0UgPSAnUEVSQ0VOVEFHRScsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBoTWFyZ2luUGFkZGluZyB7XHJcbiAgdG9wOiBudW1iZXI7XHJcbiAgcmlnaHQ6IG51bWJlcjtcclxuICBib3R0b206IG51bWJlcjtcclxuICBsZWZ0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhc2V0IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlU3RhdGlzdGljV2lkZ2V0SW5wdXRzIHtcclxuICBtZXRyaWM6IElIck1ldHJpYztcclxuICBkYXRhc2V0OiBJQ29yZVN0YXRpc3RpY1dpZGdldERhdGFzZXRbXTtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIGNvbXBhcmlzb25WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtc3RhdGlzdGljLXdpZGdldCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcblxyXG4gIF0sXHJcbiAgLy9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVN0YXRpc3RpY1dpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAkbWV0cmljID0gaW5wdXQucmVxdWlyZWQ8SUhyTWV0cmljPigpO1xyXG4gICRkYXRhc2V0ID0gaW5wdXQucmVxdWlyZWQ8SUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhc2V0W10+KCk7XHJcbiAgJHZhbHVlID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xyXG4gICRjb21wYXJpc29uVmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XHJcbiAgJGlubmVyR3JvdXBCYWNrZ3JvdW5kQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCd0cmFuc3BhcmVudCcpO1xyXG4gICRtYXJnaW4gPSBpbnB1dDxJR3JhcGhNYXJnaW5QYWRkaW5nPih7IHRvcDogMzAsIHJpZ2h0OiAzMCwgYm90dG9tOiAzMCwgbGVmdDogMzAgfSlcclxuICAkcGFkZGluZyA9IGlucHV0PElHcmFwaE1hcmdpblBhZGRpbmc+KHsgdG9wOiAzMCwgcmlnaHQ6IDMwLCBib3R0b206IDMwLCBsZWZ0OiAzMCB9KVxyXG4gICRvdXRlcldpZHRoID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xyXG4gICRvdXRlckhlaWdodCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICAkZGl2aXNvckxpbmVTdHJva2VDb2xvciA9IGlucHV0PGFueT4oZDMuY29sb3IoXCJncmF5XCIpKTtcclxuICAkZGl2aXNvckxpbmVTdHJva2VXaWR0aCA9IGlucHV0PG51bWJlcj4oMyk7XHJcbiAgJGxvd1BpY2tDb2xvciA9IGlucHV0PGFueT4oXCIjRkY4QzAwXCIpO1xyXG4gICRoaWdoUGlja0NvbG9yID0gaW5wdXQ8YW55PihcIiMzMTU4OTdcIik7XHJcbiAgJGNvbXBhcmlzb25UZXh0RmlsbENvbG9yID0gaW5wdXQ8YW55PihkMy5jb2xvcihcImJsYWNrXCIpKTtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMubGFuZyA9IHg7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljTmFtZSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25UZXh0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvL0BJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIG1ldHJpYyE6IElIck1ldHJpYztcclxuICAvL0BJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGFzZXQhOiBJQ29yZVN0YXRpc3RpY1dpZGdldERhdGFzZXRbXTtcclxuICAvL0BJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgLy9ASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb21wYXJpc29uVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDAuNTQ7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlRm9udFNpemUhOiBudW1iZXI7XHJcbiAgLy9ASW5wdXQoKSBtYXJnaW46IElHcmFwaE1hcmdpblBhZGRpbmcgPSB7IHRvcDogMzAsIHJpZ2h0OiAzMCwgYm90dG9tOiAzMCwgbGVmdDogMzAgfTtcclxuICAvL0BJbnB1dCgpIHBhZGRpbmc6IElHcmFwaE1hcmdpblBhZGRpbmcgPSB7IHRvcDogMzAsIHJpZ2h0OiAzMCwgYm90dG9tOiAzMCwgbGVmdDogMzAgfTtcclxuICAvL0BJbnB1dCgpIG91dGVyV2lkdGg6IG51bWJlciA9IDMyMDtcclxuICAvL0BJbnB1dCgpIG91dGVySGVpZ2h0OiBudW1iZXIgPSAzMjA7XHJcbiAgQElucHV0KCkgZGl2aXNvckxpbmVNYXJnaW46IElHcmFwaE1hcmdpblBhZGRpbmcgPSB7IHRvcDogNCwgcmlnaHQ6IDgsIGJvdHRvbTogOCwgbGVmdDogOCB9O1xyXG4gIEBJbnB1dCgpIHRpdGxlRmlsbENvbG9yOiBhbnkgPSBkMy5jb2xvcihcImJsYWNrXCIpO1xyXG4gIEBJbnB1dCgpIHZhbHVlRmlsbENvbG9yOiBhbnkgPSBkMy5jb2xvcihcImJsYWNrXCIpO1xyXG5cclxuICBASW5wdXQoKSBjb21wYXJpc29uVmFsdWVGaWxsQ29sb3I6IGFueSA9IGQzLmNvbG9yKFwiYmxhY2tcIik7XHJcbiAgQElucHV0KCkgc2hvd0F4ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9AVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gICRjb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NvbnRhaW5lcicpO1xyXG5cclxuICAkaW5uZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJG91dGVyV2lkdGgoKSAtIHRoaXMuJG1hcmdpbigpLmxlZnQgLSB0aGlzLiRtYXJnaW4oKS5yaWdodCk7XHJcbiAgJGlubmVySGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kb3V0ZXJIZWlnaHQoKSAtIHRoaXMuJG1hcmdpbigpLnRvcCAtIHRoaXMuJG1hcmdpbigpLmJvdHRvbSk7XHJcbiAgJHdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kaW5uZXJXaWR0aCgpIC0gdGhpcy4kcGFkZGluZygpLmxlZnQgLSB0aGlzLiRwYWRkaW5nKCkucmlnaHQpO1xyXG4gICRoZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRpbm5lckhlaWdodCgpIC0gdGhpcy4kcGFkZGluZygpLnRvcCAtIHRoaXMuJHBhZGRpbmcoKS5ib3R0b20pO1xyXG5cclxuICAkZ3JhcGhXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJHdpZHRoKCkgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLnJpZ2h0KTtcclxuICAkZ3JhcGhIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRoZWlnaHQoKSAvIDQgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbSk7XHJcbiAgJHRpdGxlUmVjdFdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kd2lkdGgoKSAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ucmlnaHQpO1xyXG4gICR0aXRsZVJlY3RIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRncmFwaEhlaWdodCgpICogMiAvIDMgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLnRvcCAqIDIpO1xyXG4gICR2YWx1ZVJlY3RXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJHRpdGxlUmVjdFdpZHRoKCkpO1xyXG4gICR2YWx1ZVJlY3RIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRoZWlnaHQoKSAvIDMgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbSk7XHJcbiAgJGNvbXBhcmlzb25WYWx1ZVJlY3RXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJHRpdGxlUmVjdFdpZHRoKCkpO1xyXG4gICRjb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuJGhlaWdodCgpIC8gNCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tKSAvIDIpO1xyXG4gICRjb21wYXJpc29uVGV4dFJlY3RXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJHRpdGxlUmVjdFdpZHRoKCkpO1xyXG4gICRjb21wYXJpc29uVGV4dFJlY3RIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiAodGhpcy4kaGVpZ2h0KCkgLyA0IC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b20pIC8gMik7XHJcblxyXG4gIHggPSBjb21wdXRlZCgoKSA9PiBkMy5zY2FsZUxpbmVhcigpLnJhbmdlKFswLCB0aGlzLiRncmFwaFdpZHRoKCldKSk7XHJcbiAgeSA9IGNvbXB1dGVkKCgpID0+IGQzLnNjYWxlTGluZWFyKCkucmFuZ2UoW3RoaXMuJGdyYXBoSGVpZ2h0KCksIDBdKSk7XHJcblxyXG4gIHByZXZpb3VzVmFsdWU6IFdyaXRhYmxlU2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4gPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByZXZpb3VzQ29tcGFyaXNvblZhbHVlOiBXcml0YWJsZVNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgLy9UbyByZW1vdmUgb25seSB0aGUgbnVtYmVycyB3aGlsZSBrZWVwaW5nIHRoZSB0aWNrcyBvbiB0aGUgYXhlcywgXHJcbiAgLy95b3UgY2FuIHNlbGVjdCB0aGUgdGV4dCBlbGVtZW50cyBvZiB0aGUgdGlja3MgYW5kIGhpZGUgdGhlbSB1c2luZyBDU1MuIFxyXG4gIC8vSGVyZSdzIGhvdyB5b3UgY2FuIG1vZGlmeSB0aGUgY29kZSB0byBhY2hpZXZlIHRoYXQ6XHJcblxyXG4gIHhBeGlzQ2FsbCA9IGNvbXB1dGVkKCgpID0+IGQzLmF4aXNCb3R0b20odGhpcy54KCkpXHJcbiAgICAudGlja1NpemVJbm5lcigxMCkgLy8gQWRqdXN0IHRoZSBsZW5ndGggb2YgdGhlIHRpY2tzIGFzIG5lZWRlZFxyXG4gICAgLnRpY2tTaXplT3V0ZXIoMCkgLy8gSGlkZSBvdXRlciB0aWNrc1xyXG4gIClcclxuXHJcblxyXG4gIHlBeGlzQ2FsbCA9IGNvbXB1dGVkKCgpID0+IGQzLmF4aXNMZWZ0KHRoaXMueSgpKVxyXG4gICAgLnRpY2tTaXplSW5uZXIoMTApIC8vIEFkanVzdCB0aGUgbGVuZ3RoIG9mIHRoZSB0aWNrcyBhcyBuZWVkZWRcclxuICAgIC50aWNrU2l6ZU91dGVyKDEwKSAvLyBIaWRlIG91dGVyIHRpY2tzXHJcbiAgKVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoISFjaGFuZ2VzWyckbWV0cmljJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNOYW1lKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljVmFsdWUoKTtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNDb21wYXJpc29uVmFsdWUoKTtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNDb21wYXJpc29uVGV4dCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhY2hhbmdlc1snJGRhdGFzZXQnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGFzZXQoKTtcclxuICAgIH1cclxuICAgIGlmICghIWNoYW5nZXNbJyR2YWx1ZSddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljVmFsdWUoKTtcclxuICAgIH1cclxuICAgIGlmICghIWNoYW5nZXNbJyRjb21wYXJpc29uVmFsdWUnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0cmljTmFtZSgpOiB2b2lkIHtcclxuICAgIHZhciBuYW1lRWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX25hbWVcIilcclxuICAgIG5hbWVFbGVtZW50LnRyYW5zaXRpb24oKS50ZXh0KHRoaXMubWxzLnRyYW5zKHRoaXMuJG1ldHJpYygpLm5hbWUpKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY1ZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJ1cGRhdGVNZXRyaWNWYWx1ZVwiKVxyXG4gICAgdmFyIHZhbHVlRWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX3ZhbHVlXCIpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnByZXZpb3VzVmFsdWUoKSB8fCB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBlbmQgPSB0aGlzLiR2YWx1ZSgpIHx8IHVuZGVmaW5lZDtcclxuICAgIHN3aXRjaCAodGhpcy4kbWV0cmljKCkuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIHZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAoISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISFlbmQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGVuZCkpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gdmFsdWVFbGVtZW50LnRleHQoJ04vQScpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5ERUNJTUFMOlxyXG4gICAgICAgIHZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAoISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISFlbmQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGVuZCAqIDEwMCkgLyAxMDApXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gdmFsdWVFbGVtZW50LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIHZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISFlbmQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGVuZCAqIDEwMDAwKSAvIDEwMCArIFwiJVwiKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IHZhbHVlRWxlbWVudC50ZXh0KFwiTi9BXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB2YWx1ZUVsZW1lbnQudHJhbnNpdGlvbigpLnRleHQoKHRoaXMuJHZhbHVlKCkgfHwgJ04vQScpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91c1ZhbHVlLnNldCh0aGlzLiR2YWx1ZSgpKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0YXJ0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB0aGlzLnByZXZpb3VzQ29tcGFyaXNvblZhbHVlKCk7XHJcbiAgICBjb25zdCBlbmQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHRoaXMuJGNvbXBhcmlzb25WYWx1ZSgpO1xyXG4gICAgdmFyIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQgPSBkMy5zZWxlY3QoXCIjbWV0cmljX1wiICsgdGhpcy4kbWV0cmljKCkuaWQgKyBcIl9jb21wYXJpc29uVmFsdWVcIik7XHJcbiAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LmF0dHIoXCJmaWxsXCIsICh0aGlzLiRjb21wYXJpc29uVmFsdWUoKSB8fCAwKSA+PSAwID8gdGhpcy4kY29tcGFyaXNvblRleHRGaWxsQ29sb3IoKSA6IGQzLmNvbG9yKFwicmVkXCIpKTtcclxuICAgIHN3aXRjaCAodGhpcy4kbWV0cmljKCkuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLiR2YWx1ZSgpICYmICEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLkRFQ0lNQUw6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuJHZhbHVlKCkgJiYgISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMCkgLyAxMDApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChcIk4vQVwiKVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuUEVSQ0VOVEFHRTpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy4kdmFsdWUoKSAmJiAhIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwMDApIC8gMTAwICsgXCIlXCIpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChcIk4vQVwiKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRyYW5zaXRpb24oKS50ZXh0KCh0aGlzLiRjb21wYXJpc29uVmFsdWUoKSB8fCAnTi9BJykudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNZXRyaWNDb21wYXJpc29uVGV4dCgpOiB2b2lkIHtcclxuICAgIHZhciBjb21wYXJpc29uVGV4dEVsZW1lbnQgPSBkMy5zZWxlY3QoXCIjbWV0cmljX1wiICsgdGhpcy4kbWV0cmljKCkuaWQgKyBcIl9jb21wYXJpc29uVGV4dFwiKTtcclxuICAgIHN3aXRjaCAodGhpcy4kbWV0cmljKCkuY29tcGFyaXNvbkNvZGUpIHtcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX01PTlRIOlxyXG4gICAgICAgIGNvbXBhcmlzb25UZXh0RWxlbWVudC50ZXh0KHRoaXMubWxzLnRyYW5zKHRoaXMuJG1ldHJpYygpLmNvbXBhcmlzb25Db2RlKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUhyQ29tcGFyaXNvbkNvZGUuV0lUSF9QUkVWSU9VU19ZRUFSOlxyXG4gICAgICAgIGNvbXBhcmlzb25UZXh0RWxlbWVudC50ZXh0KHRoaXMubWxzLnRyYW5zKHRoaXMuJG1ldHJpYygpLmNvbXBhcmlzb25Db2RlKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29tcGFyaXNvblRleHRFbGVtZW50LnRleHQoXCItXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF0YXNldCgpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBtaW5Qb2ludCA9IHRoaXMuJGRhdGFzZXQoKS5yZWR1Y2UoKG1pbiwgY3VycmVudCkgPT4gY3VycmVudC55IDwgbWluLnkgPyBjdXJyZW50IDogbWluKTtcclxuICAgIGNvbnN0IG1heFBvaW50ID0gdGhpcy4kZGF0YXNldCgpLnJlZHVjZSgobWF4LCBjdXJyZW50KSA9PiBjdXJyZW50LnkgPiBtYXgueSA/IGN1cnJlbnQgOiBtYXgpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBzY2FsZXNcclxuICAgIGNvbnN0IHhTY2FsZSA9IGQzLnNjYWxlTGluZWFyKClcclxuICAgICAgLmRvbWFpbihbMCwgZDMubWF4KHRoaXMuJGRhdGFzZXQoKSwgKGQ6IGFueSkgPT4gZC54KV0pXHJcbiAgICAgIC5yYW5nZShbMCwgdGhpcy4kZ3JhcGhXaWR0aCgpXSk7XHJcblxyXG4gICAgY29uc3QgeVNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKVxyXG4gICAgICAuZG9tYWluKFttaW5Qb2ludC55LCBtYXhQb2ludC55XSlcclxuICAgICAgLnJhbmdlKFt0aGlzLiRncmFwaEhlaWdodCgpLCAwXSk7XHJcblxyXG4gICAgY29uc3QgeEF4aXNDYWxsID0gZDMuYXhpc0JvdHRvbSh4U2NhbGUpXHJcbiAgICAgIC50aWNrU2l6ZUlubmVyKDEwKSAvLyBBZGp1c3QgdGhlIGxlbmd0aCBvZiB0aGUgdGlja3MgYXMgbmVlZGVkXHJcbiAgICAgIC50aWNrU2l6ZU91dGVyKDApOyAvLyBIaWRlIG91dGVyIHRpY2tzXHJcblxyXG4gICAgY29uc3QgeUF4aXNDYWxsID0gZDMuYXhpc0xlZnQoeVNjYWxlKVxyXG4gICAgICAudGlja1NpemVJbm5lcigxMCkgLy8gQWRqdXN0IHRoZSBsZW5ndGggb2YgdGhlIHRpY2tzIGFzIG5lZWRlZFxyXG4gICAgICAudGlja1NpemVPdXRlcigxMCk7IC8vIERvIG5vdCBoaWRlIG91dGVyIHRpY2tzXHJcblxyXG4gICAgLy8gVXBkYXRlIGF4ZXNcclxuICAgIC8veEF4aXMuY2FsbCh4QXhpc0NhbGwpO1xyXG4gICAgLy95QXhpcy5jYWxsKHlBeGlzQ2FsbCk7XHJcblxyXG4gICAgLy8gVXBkYXRlIGNvbm5lY3RpbmcgbGluZVxyXG4gICAgdGhpcy5jb25uZWN0aW5nTGluZSA9IGQzLmxpbmUoKVxyXG4gICAgICAueCgoZDogYW55KSA9PiB4U2NhbGUoZC54KSlcclxuICAgICAgLnkoKGQ6IGFueSkgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5kZWZpbmVkKChkLCBpKSA9PiBpID49IDAgJiYgaSA8IHRoaXMuJGRhdGFzZXQoKS5sZW5ndGgpO1xyXG5cclxuICAgIGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX3NjYXR0ZXItcGxvdFwiKS5zZWxlY3QoXCJwYXRoXCIpXHJcbiAgICAgIC5kYXR1bSh0aGlzLiRkYXRhc2V0KCkpXHJcbiAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgLmF0dHIoXCJkXCIsIHRoaXMuY29ubmVjdGluZ0xpbmUpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSBjaXJjbGVzXHJcbiAgICBjb25zdCBjaXJjbGVzOiBhbnkgPSBkMy5zZWxlY3QoXCIjbWV0cmljX1wiICsgdGhpcy4kbWV0cmljKCkuaWQgKyBcIl9zY2F0dGVyLXBsb3RcIikuc2VsZWN0QWxsKFwiY2lyY2xlXCIpXHJcbiAgICAgIC5kYXRhKHRoaXMuJGRhdGFzZXQoKSk7XHJcblxyXG4gICAgY2lyY2xlcy5leGl0KCkucmVtb3ZlKCk7XHJcblxyXG4gICAgY2lyY2xlcy5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoXCJjaXJjbGVcIilcclxuICAgICAgLm1lcmdlKGNpcmNsZXMpXHJcbiAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgLmF0dHIoXCJjeFwiLCBkID0+IHhTY2FsZShkLngpKVxyXG4gICAgICAuYXR0cihcImN5XCIsIGQgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5hdHRyKFwiclwiLCA1KVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgZCA9PiB7XHJcbiAgICAgICAgaWYgKGQgPT09IG1pblBvaW50KSByZXR1cm4gdGhpcy4kbG93UGlja0NvbG9yKCk7IC8vIFNldCBsb3dlc3QgcG9pbnQgdG8gI0ZGOEMwMFxyXG4gICAgICAgIGlmIChkID09PSBtYXhQb2ludCkgcmV0dXJuIHRoaXMuJGhpZ2hQaWNrQ29sb3IoKTsgLy8gU2V0IGhpZ2hlc3QgcG9pbnQgdG8gIzMxNTg5N1xyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gTWFrZSB0aGUgb3RoZXIgcG9pbnRzIHRyYW5zcGFyZW50XHJcbiAgICAgIH0pXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIGQgPT4ge1xyXG4gICAgICAgIGlmIChkID09PSBtaW5Qb2ludCkgcmV0dXJuIGQzLmNvbG9yKHRoaXMuJGxvd1BpY2tDb2xvcigpKSEuZGFya2VyKDAuMik7IC8vIERhcmtlbiAjRkY4QzAwIGNvbG9yXHJcbiAgICAgICAgaWYgKGQgPT09IG1heFBvaW50KSByZXR1cm4gZDMuY29sb3IodGhpcy4kaGlnaFBpY2tDb2xvcigpKSEuZGFya2VyKDAuMik7IC8vIERhcmtlbiAjMzE1ODk3IGNvbG9yXHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiOyAvLyBObyBzdHJva2UgZm9yIG90aGVyIHBvaW50c1xyXG4gICAgICB9KVxyXG4gICAgICAuYXR0cihcInN0cm9rZS13aWR0aFwiLCAzKTsgLy8gU2V0IHN0cm9rZSB3aWR0aFxyXG4gIH1cclxuXHJcbiAgc3ZnOiBhbnk7XHJcbiAgaW5uZXJHcm91cDogYW55O1xyXG4gIGdyZWVuR3JvdXA6IGFueTtcclxuICB0aXRsZUdyb3VwOiBhbnk7XHJcbiAgdmFsdWVHcm91cDogYW55O1xyXG4gIHZhbHVlVGV4dDogYW55O1xyXG4gIGdyYXlHcm91cDogYW55O1xyXG4gIGNvbXBhcmlzb25WYWx1ZUdyb3VwOiBhbnk7XHJcbiAgY29tcGFyaXNvblRleHRHcm91cDogYW55O1xyXG4gIGNvbXBhcmlzb25WYWx1ZVRleHQ6IGFueTtcclxuICBjb21wYXJpc29uVGV4dFRleHQ6IGFueTtcclxuICBjb25uZWN0aW5nTGluZTogYW55O1xyXG5cclxuICBpbnRlcnZhbElkOiBhbnk7XHJcblxyXG4gIGFzeW5jIGRyYXdHcmFwaCgpIHtcclxuICAgIHRoaXMuc3ZnID0gZDMuc2VsZWN0KHRoaXMuJGNvbnRhaW5lcigpPy5uYXRpdmVFbGVtZW50KVxyXG4gICAgICAuYXBwZW5kKFwic3ZnXCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy4kb3V0ZXJXaWR0aCgpKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLiRvdXRlckhlaWdodCgpKTtcclxuXHJcbiAgICB0aGlzLnN2Zy5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy4kb3V0ZXJXaWR0aCgpKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLiRvdXRlckhlaWdodCgpKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKTtcclxuXHJcbiAgICB0aGlzLmlubmVyR3JvdXAgPSB0aGlzLnN2Zy5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy4kbWFyZ2luKCkubGVmdCArIFwiLFwiICsgdGhpcy4kbWFyZ2luKCkudG9wICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMuaW5uZXJHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJibHVlLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIHRoaXMuJGlubmVyR3JvdXBCYWNrZ3JvdW5kQ29sb3IoKSlcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiRpbm5lcldpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJGlubmVySGVpZ2h0KCkpO1xyXG5cclxuICAgIHRoaXMuZ3JlZW5Hcm91cCA9IHRoaXMuaW5uZXJHcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy4kcGFkZGluZygpLmxlZnQgKyBcIixcIiArIHRoaXMuJHBhZGRpbmcoKS50b3AgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5ncmVlbkdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyZWVuLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiR3aWR0aCgpKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLiRoZWlnaHQoKSk7XHJcblxyXG4gICAgdGhpcy50aXRsZUdyb3VwID0gdGhpcy5ncmVlbkdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInRpdGxlLWdyb3VwXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0ICsgXCIsXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLnRvcCArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLnRpdGxlR3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ0aXRsZS1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy4kdGl0bGVSZWN0V2lkdGgoKSlcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy4kdGl0bGVSZWN0SGVpZ2h0KCkpO1xyXG5cclxuICAgIHRoaXMudGl0bGVHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX25hbWVcIilcclxuICAgICAgLmF0dHIoXCJ4XCIsIHRoaXMuJHRpdGxlUmVjdFdpZHRoKCkgLyAyKVxyXG4gICAgICAuYXR0cihcInlcIiwgdGhpcy4kdGl0bGVSZWN0SGVpZ2h0KCkgLyAyKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JhcGgtdGl0bGVcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIHRoaXMudGl0bGVGaWxsQ29sb3IpXHJcbiAgICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIHRoaXMuJHRpdGxlUmVjdEhlaWdodCgpKVxyXG4gICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC50ZXh0KHRoaXMubWxzLnRyYW5zKHRoaXMuJG1ldHJpYygpLm5hbWUpKTtcclxuXHJcbiAgICB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwibGluZVwiKVxyXG4gICAgICAuYXR0cihcIngxXCIsIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdClcclxuICAgICAgLmF0dHIoXCJ5MVwiLCB0aGlzLiRncmFwaEhlaWdodCgpICogMiAvIDMpXHJcbiAgICAgIC5hdHRyKFwieDJcIiwgdGhpcy4kd2lkdGgoKSAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ucmlnaHQpXHJcbiAgICAgIC5hdHRyKFwieTJcIiwgdGhpcy4kZ3JhcGhIZWlnaHQoKSAqIDIgLyAzKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCB0aGlzLiRkaXZpc29yTGluZVN0cm9rZUNvbG9yKCkpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIHRoaXMuJGRpdmlzb3JMaW5lU3Ryb2tlV2lkdGgoKSk7XHJcblxyXG4gICAgY29uc3QgdmFsdWVHcm91cFRyYW5zbGF0ZVkgPSB0aGlzLiRoZWlnaHQoKSAvIDIgLyAzICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b207XHJcbiAgICB0aGlzLnZhbHVlR3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidmFsdWUtZ3JvdXBcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIixcIiArIHZhbHVlR3JvdXBUcmFuc2xhdGVZICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMudmFsdWVHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInZhbHVlLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiR2YWx1ZVJlY3RXaWR0aCgpKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLiR2YWx1ZVJlY3RIZWlnaHQoKSk7XHJcblxyXG4gICAgdGhpcy52YWx1ZVRleHQgPSB0aGlzLnZhbHVlR3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy4kbWV0cmljKCkuaWQgKyBcIl92YWx1ZVwiKVxyXG4gICAgICAuYXR0cihcInhcIiwgdGhpcy4kdmFsdWVSZWN0V2lkdGgoKSAvIDIpXHJcbiAgICAgIC5hdHRyKFwieVwiLCB0aGlzLiR2YWx1ZVJlY3RIZWlnaHQoKSAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC12YWx1ZVwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgdGhpcy52YWx1ZUZpbGxDb2xvcilcclxuICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgKHRoaXMudmFsdWVGb250U2l6ZSB8fCB0aGlzLiR2YWx1ZVJlY3RIZWlnaHQoKSkgKyBcInB4XCIpXHJcbiAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIik7XHJcblxyXG4gICAgY29uc3Qgc3RhcnQgPSAwO1xyXG4gICAgY29uc3QgZW5kID0gdGhpcy4kdmFsdWUoKTtcclxuICAgIHN3aXRjaCAodGhpcy4kbWV0cmljKCkuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gdGhpcy52YWx1ZVRleHQudGV4dChcIk4vQVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuREVDSU1BTDpcclxuICAgICAgICB0aGlzLnZhbHVlVGV4dFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVRleHQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMCkgLyAxMDApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IHRoaXMudmFsdWVUZXh0LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwMDApIC8gMTAwICsgXCIlXCIpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IHRoaXMudmFsdWVUZXh0LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLnZhbHVlVGV4dC50ZXh0KCh0aGlzLiR2YWx1ZSgpIHx8ICdOL0EnKS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNWYWx1ZS5zZXQodGhpcy4kdmFsdWUoKSk7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy4kbWV0cmljKCkuaWQgKyBcIl9zY2F0dGVyLXBsb3RcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIiwgXCIgKyB0aGlzLiRoZWlnaHQoKSAvIDIgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JhcGgtY29udGFpbmVyXCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBkMy5jb2xvcihcInRyYW5zcGFyZW50XCIpIS5icmlnaHRlcigxKSlcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiRncmFwaFdpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJGdyYXBoSGVpZ2h0KCkpO1xyXG5cclxuXHJcbiAgICBjb25zdCB4QXhpcyA9IHRoaXMuZ3JheUdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInggYXhpc1wiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZSgwLFwiICsgdGhpcy4kZ3JhcGhIZWlnaHQoKSArIFwiKVwiKTtcclxuXHJcbiAgICBjb25zdCB5QXhpcyA9IHRoaXMuZ3JheUdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInkgYXhpc1wiKTtcclxuXHJcbiAgICAvL3hBeGlzLmNhbGwoeEF4aXNDYWxsKTtcclxuICAgIC8veUF4aXMuY2FsbCh5QXhpc0NhbGwpO1xyXG5cclxuICAgIC8vIFNlbGVjdCB0ZXh0IGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aWNrcyBhbmQgaGlkZSB0aGVtXHJcbiAgICB0aGlzLmdyYXlHcm91cC5zZWxlY3RBbGwoXCIudGljayB0ZXh0XCIpLmF0dHIoXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcclxuXHJcbiAgICBjb25zdCBjb21wYXJpc29uVmFsdWVHcm91cFRyYW5zbGF0ZVkgPSB0aGlzLiRoZWlnaHQoKSAqIDMgLyA0ICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b207XHJcbiAgICB0aGlzLmNvbXBhcmlzb25WYWx1ZUdyb3VwID0gdGhpcy5ncmVlbkdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImNvbXBhcmlzb24tdmFsdWUtZ3JvdXBcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIixcIiArIGNvbXBhcmlzb25WYWx1ZUdyb3VwVHJhbnNsYXRlWSArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhcmlzb25WYWx1ZUdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidmFsdWUtcmVjdFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuJGNvbXBhcmlzb25WYWx1ZVJlY3RXaWR0aCgpKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLiRjb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0KCkpO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmlzb25WYWx1ZVRleHQgPSB0aGlzLmNvbXBhcmlzb25WYWx1ZUdyb3VwLmFwcGVuZChcInRleHRcIilcclxuICAgICAgLmF0dHIoXCJpZFwiLCBcIm1ldHJpY19cIiArIHRoaXMuJG1ldHJpYygpLmlkICsgXCJfY29tcGFyaXNvblZhbHVlXCIpXHJcbiAgICAgIC5hdHRyKFwieFwiLCB0aGlzLiRjb21wYXJpc29uVmFsdWVSZWN0V2lkdGgoKSAvIDIpXHJcbiAgICAgIC5hdHRyKFwieVwiLCB0aGlzLiRjb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0KCkgLyAyKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JhcGgtdmFsdWVcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsICh0aGlzLiRjb21wYXJpc29uVmFsdWUoKSB8fCAwKSA+PSAwID8gdGhpcy5jb21wYXJpc29uVmFsdWVGaWxsQ29sb3IgOiBkMy5jb2xvcihcInJlZFwiKSlcclxuICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgdGhpcy4kY29tcGFyaXNvblZhbHVlUmVjdEhlaWdodCgpICsgXCJweFwiKVxyXG4gICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy4kbWV0cmljKCkuZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5JTlRFR0VSOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IGNvbXBhcmlzb25WYWx1ZVRleHQudGV4dChcIk4vQVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLkRFQ0lNQUw6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KFwiTi9BXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuUEVSQ0VOVEFHRTpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KFwiTi9BXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KCh0aGlzLiRjb21wYXJpc29uVmFsdWUoKSB8fCAnTi9BJykudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpb3VzQ29tcGFyaXNvblZhbHVlLnNldCh0aGlzLiRjb21wYXJpc29uVmFsdWUoKSk7XHJcblxyXG4gICAgY29uc3QgY29tcGFyaXNvblRleHRHcm91cFRyYW5zbGF0ZVkgPSB0aGlzLiRoZWlnaHQoKSAqIDMgLyA0ICsgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b20gKyB0aGlzLiRjb21wYXJpc29uVGV4dFJlY3RIZWlnaHQoKTtcclxuICAgIHRoaXMuY29tcGFyaXNvblRleHRHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJjb21wYXJpc29uLXRleHQtZ3JvdXBcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIixcIiArIGNvbXBhcmlzb25UZXh0R3JvdXBUcmFuc2xhdGVZICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMuY29tcGFyaXNvblRleHRHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInRleHQtcmVjdFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuJGNvbXBhcmlzb25UZXh0UmVjdFdpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJGNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCgpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhcmlzb25UZXh0VGV4dCA9IHRoaXMuY29tcGFyaXNvblRleHRHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX2NvbXBhcmlzb25UZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwieFwiLCB0aGlzLiRjb21wYXJpc29uVGV4dFJlY3RXaWR0aCgpIC8gMilcclxuICAgICAgLmF0dHIoXCJ5XCIsIHRoaXMuJGNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCgpIC8gMilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyYXBoLXRleHRcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIHRoaXMuJGNvbXBhcmlzb25UZXh0RmlsbENvbG9yKCkpXHJcbiAgICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIHRoaXMuJGNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCgpIC8gMiArIFwicHhcIilcclxuICAgICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKVxyXG4gICAgICAuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuJG1ldHJpYygpLmNvbXBhcmlzb25Db2RlKSB7XHJcbiAgICAgIGNhc2UgRW51bUhyQ29tcGFyaXNvbkNvZGUuV0lUSF9QUkVWSU9VU19NT05USDpcclxuICAgICAgICB0aGlzLmNvbXBhcmlzb25UZXh0VGV4dC50ZXh0KHRoaXMubWxzLnRyYW5zKHRoaXMuJG1ldHJpYygpLmNvbXBhcmlzb25Db2RlKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUhyQ29tcGFyaXNvbkNvZGUuV0lUSF9QUkVWSU9VU19ZRUFSOlxyXG4gICAgICAgIHRoaXMuY29tcGFyaXNvblRleHRUZXh0LnRleHQodGhpcy5tbHMudHJhbnModGhpcy4kbWV0cmljKCkuY29tcGFyaXNvbkNvZGUpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmNvbXBhcmlzb25UZXh0VGV4dC50ZXh0KFwiLVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xyXG5cclxuICAgIGNvbnN0IGluaXRpYWxEYXRhc2V0OiBhbnlbXSA9IHRoaXMuJGRhdGFzZXQoKTtcclxuICAgIGNvbnN0IG1pblBvaW50OiBhbnkgPSBpbml0aWFsRGF0YXNldC5yZWR1Y2UoKG1pbiwgY3VycmVudCkgPT4gY3VycmVudC55IDwgbWluLnkgPyBjdXJyZW50IDogbWluKTtcclxuICAgIGNvbnN0IG1heFBvaW50OiBhbnkgPSBpbml0aWFsRGF0YXNldC5yZWR1Y2UoKG1heCwgY3VycmVudCkgPT4gY3VycmVudC55ID4gbWF4LnkgPyBjdXJyZW50IDogbWF4KTtcclxuXHJcbiAgICBjb25zdCB4U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oWzAsIGQzLm1heChpbml0aWFsRGF0YXNldCwgZCA9PiBkLngpXSlcclxuICAgICAgLnJhbmdlKFswLCB0aGlzLiRncmFwaFdpZHRoKCldKTtcclxuXHJcbiAgICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oW21pblBvaW50LnksIG1heFBvaW50LnldKVxyXG4gICAgICAucmFuZ2UoW3RoaXMuJGdyYXBoSGVpZ2h0KCksIDBdKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3RpbmdMaW5lID0gZDMubGluZSgpXHJcbiAgICAgIC54KChkOiBhbnkpID0+IHhTY2FsZShkLngpKVxyXG4gICAgICAueSgoZDogYW55KSA9PiB5U2NhbGUoZC55KSlcclxuICAgICAgLmRlZmluZWQoKGQsIGkpID0+IGkgPj0gMCAmJiBpIDwgaW5pdGlhbERhdGFzZXQubGVuZ3RoKTtcclxuXHJcbiAgICB0aGlzLmdyYXlHcm91cC5hcHBlbmQoXCJwYXRoXCIpXHJcbiAgICAgIC5kYXR1bShpbml0aWFsRGF0YXNldClcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcImRhcmtncmF5XCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDMpXHJcbiAgICAgIC5hdHRyKFwiZFwiLCB0aGlzLmNvbm5lY3RpbmdMaW5lKTtcclxuXHJcbiAgICB0aGlzLmdyYXlHcm91cC5zZWxlY3RBbGwoXCJjaXJjbGVcIilcclxuICAgICAgLmRhdGEoaW5pdGlhbERhdGFzZXQpXHJcbiAgICAgIC5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoXCJjaXJjbGVcIilcclxuICAgICAgLmF0dHIoXCJjeFwiLCBkID0+IHhTY2FsZShkLngpKVxyXG4gICAgICAuYXR0cihcImN5XCIsIGQgPT4geVNjYWxlKGQueSkpXHJcbiAgICAgIC5hdHRyKFwiclwiLCA1KVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgZCA9PiB7XHJcbiAgICAgICAgaWYgKGQgPT09IG1pblBvaW50KSByZXR1cm4gdGhpcy4kbG93UGlja0NvbG9yKCk7IC8vIFNldCBsb3dlc3QgcG9pbnQgdG8gI0ZGOEMwMFxyXG4gICAgICAgIGlmIChkID09PSBtYXhQb2ludCkgcmV0dXJuIHRoaXMuJGhpZ2hQaWNrQ29sb3IoKTsgLy8gU2V0IGhpZ2hlc3QgcG9pbnQgdG8gIzMxNTg5N1xyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gU2V0IHRoZSBvdGhlciBwb2ludHMgdHJhbnNwYXJlbnRcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgZCA9PiB7XHJcbiAgICAgICAgaWYgKGQgPT09IG1pblBvaW50KSByZXR1cm4gZDMuY29sb3IodGhpcy4kbG93UGlja0NvbG9yKCkpIS5kYXJrZXIoMC4yKTsgLy8gRGFya2VuICNGRjhDMDAgY29sb3JcclxuICAgICAgICBpZiAoZCA9PT0gbWF4UG9pbnQpIHJldHVybiBkMy5jb2xvcih0aGlzLiRoaWdoUGlja0NvbG9yKCkpIS5kYXJrZXIoMC4yKTsgLy8gRGFya2VuICMzMTU4OTcgY29sb3JcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7IC8vIE5vIHN0cm9rZSBmb3Igb3RoZXIgcG9pbnRzXHJcbiAgICAgIH0pXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDMpOyAvLyBTZXQgc3Ryb2tlIHdpZHRoXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kcmF3R3JhcGgoKTtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNWYWx1ZSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG59IiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LWNvbnRhaW5lclwiPlxyXG4gICAgXHJcbjwvZGl2PiJdfQ==
|
|
613
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9kMy9jb3JlLXN0YXRpc3RpYy13aWRnZXQvY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBa0IsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQzs7O0FBR3pCLE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIsbUVBQTJDLENBQUE7SUFDM0MsaUVBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFTRCxNQUFNLENBQU4sSUFBWSxnQ0FJWDtBQUpELFdBQVksZ0NBQWdDO0lBQzFDLHVEQUFtQixDQUFBO0lBQ25CLHVEQUFtQixDQUFBO0lBQ25CLDZEQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxnQ0FBZ0MsS0FBaEMsZ0NBQWdDLFFBSTNDO0FBK0JELE1BQU0sT0FBTyw0QkFBNEI7SUFxQnZDLFlBQW9CLEdBQXlCO1FBQXpCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBbkI3QyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxL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Q3pCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0Evb0JVLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHN6R0NuRHpDLDhFQUVNOzsyRkRpRE8sNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsRUFFUjt5RkF3Q1EsYUFBYTtzQkFBckIsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgV3JpdGFibGVTaWduYWwsIGNvbXB1dGVkLCBpbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gRW51bUhyQ29tcGFyaXNvbkNvZGUge1xyXG4gIFdJVEhfUFJFVklPVVNfTU9OVEggPSAnV0lUSF9QUkVWSU9VU19NT05USCcsXHJcbiAgV0lUSF9QUkVWSU9VU19ZRUFSID0gJ1dJVEhfUFJFVklPVVNfWUVBUicsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUhyTWV0cmljIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb21wYXJpc29uQ29kZTogRW51bUhyQ29tcGFyaXNvbkNvZGU7XHJcbiAgZGF0YVR5cGU6IEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZSB7XHJcbiAgSU5URUdFUiA9ICdJTlRFR0VSJyxcclxuICBERUNJTUFMID0gJ0RFQ0lNQUwnLFxyXG4gIFBFUkNFTlRBR0UgPSAnUEVSQ0VOVEFHRScsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBoTWFyZ2luUGFkZGluZyB7XHJcbiAgdG9wOiBudW1iZXI7XHJcbiAgcmlnaHQ6IG51bWJlcjtcclxuICBib3R0b206IG51bWJlcjtcclxuICBsZWZ0OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhc2V0IHtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlU3RhdGlzdGljV2lkZ2V0SW5wdXRzIHtcclxuICBtZXRyaWM6IElIck1ldHJpYztcclxuICBkYXRhc2V0OiBJQ29yZVN0YXRpc3RpY1dpZGdldERhdGFzZXRbXTtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIGNvbXBhcmlzb25WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtc3RhdGlzdGljLXdpZGdldCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcblxyXG4gIF0sXHJcbiAgLy9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29yZS1zdGF0aXN0aWMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVN0YXRpc3RpY1dpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAkbWV0cmljID0gaW5wdXQucmVxdWlyZWQ8SUhyTWV0cmljPigpO1xyXG4gICRkYXRhc2V0ID0gaW5wdXQucmVxdWlyZWQ8SUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhc2V0W10+KCk7XHJcbiAgJHZhbHVlID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xyXG4gICRjb21wYXJpc29uVmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXIgfCB1bmRlZmluZWQ+KCk7XHJcbiAgJGlubmVyR3JvdXBCYWNrZ3JvdW5kQ29sb3IgPSBpbnB1dDxzdHJpbmc+KCd0cmFuc3BhcmVudCcpO1xyXG4gICRtYXJnaW4gPSBpbnB1dDxJR3JhcGhNYXJnaW5QYWRkaW5nPih7IHRvcDogMzAsIHJpZ2h0OiAzMCwgYm90dG9tOiAzMCwgbGVmdDogMzAgfSlcclxuICAkcGFkZGluZyA9IGlucHV0PElHcmFwaE1hcmdpblBhZGRpbmc+KHsgdG9wOiAzMCwgcmlnaHQ6IDMwLCBib3R0b206IDMwLCBsZWZ0OiAzMCB9KVxyXG4gICRvdXRlcldpZHRoID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xyXG4gICRvdXRlckhlaWdodCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcclxuICAkb3V0ZXJHcm91cEJhY2tncm91bmRDb2xvciA9IGlucHV0PHN0cmluZz4oJ3RyYW5zcGFyZW50Jyk7XHJcblxyXG4gICRkaXZpc29yTGluZVN0cm9rZUNvbG9yID0gaW5wdXQ8YW55PihkMy5jb2xvcihcImdyYXlcIikpO1xyXG4gICRkaXZpc29yTGluZVN0cm9rZVdpZHRoID0gaW5wdXQ8bnVtYmVyPigzKTtcclxuICAkbG93UGlja0NvbG9yID0gaW5wdXQ8YW55PihcIiNGRjhDMDBcIik7XHJcbiAgJGhpZ2hQaWNrQ29sb3IgPSBpbnB1dDxhbnk+KFwiIzMxNTg5N1wiKTtcclxuICAkY29tcGFyaXNvblRleHRGaWxsQ29sb3IgPSBpbnB1dDxhbnk+KGQzLmNvbG9yKFwiYmxhY2tcIikpO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UpIHtcclxuICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgdGhpcy5sYW5nID0geDtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNOYW1lKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljQ29tcGFyaXNvblRleHQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWV0cmljITogSUhyTWV0cmljO1xyXG4gIC8vQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGF0YXNldCE6IElDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YXNldFtdO1xyXG4gIC8vQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAvL0BJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbXBhcmlzb25WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gMC41NDtcclxuXHJcbiAgQElucHV0KCkgdmFsdWVGb250U2l6ZSE6IG51bWJlcjtcclxuICAvL0BJbnB1dCgpIG1hcmdpbjogSUdyYXBoTWFyZ2luUGFkZGluZyA9IHsgdG9wOiAzMCwgcmlnaHQ6IDMwLCBib3R0b206IDMwLCBsZWZ0OiAzMCB9O1xyXG4gIC8vQElucHV0KCkgcGFkZGluZzogSUdyYXBoTWFyZ2luUGFkZGluZyA9IHsgdG9wOiAzMCwgcmlnaHQ6IDMwLCBib3R0b206IDMwLCBsZWZ0OiAzMCB9O1xyXG4gIC8vQElucHV0KCkgb3V0ZXJXaWR0aDogbnVtYmVyID0gMzIwO1xyXG4gIC8vQElucHV0KCkgb3V0ZXJIZWlnaHQ6IG51bWJlciA9IDMyMDtcclxuICBASW5wdXQoKSBkaXZpc29yTGluZU1hcmdpbjogSUdyYXBoTWFyZ2luUGFkZGluZyA9IHsgdG9wOiA0LCByaWdodDogOCwgYm90dG9tOiA4LCBsZWZ0OiA4IH07XHJcbiAgQElucHV0KCkgdGl0bGVGaWxsQ29sb3I6IGFueSA9IGQzLmNvbG9yKFwiYmxhY2tcIik7XHJcbiAgQElucHV0KCkgdmFsdWVGaWxsQ29sb3I6IGFueSA9IGQzLmNvbG9yKFwiYmxhY2tcIik7XHJcblxyXG4gIEBJbnB1dCgpIGNvbXBhcmlzb25WYWx1ZUZpbGxDb2xvcjogYW55ID0gZDMuY29sb3IoXCJibGFja1wiKTtcclxuICBASW5wdXQoKSBzaG93QXhlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0BWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgJGNvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XHJcblxyXG4gICRpbm5lcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kb3V0ZXJXaWR0aCgpIC0gdGhpcy4kbWFyZ2luKCkubGVmdCAtIHRoaXMuJG1hcmdpbigpLnJpZ2h0KTtcclxuICAkaW5uZXJIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRvdXRlckhlaWdodCgpIC0gdGhpcy4kbWFyZ2luKCkudG9wIC0gdGhpcy4kbWFyZ2luKCkuYm90dG9tKTtcclxuICAkd2lkdGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRpbm5lcldpZHRoKCkgLSB0aGlzLiRwYWRkaW5nKCkubGVmdCAtIHRoaXMuJHBhZGRpbmcoKS5yaWdodCk7XHJcbiAgJGhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJGlubmVySGVpZ2h0KCkgLSB0aGlzLiRwYWRkaW5nKCkudG9wIC0gdGhpcy4kcGFkZGluZygpLmJvdHRvbSk7XHJcblxyXG4gICRncmFwaFdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kd2lkdGgoKSAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ucmlnaHQpO1xyXG4gICRncmFwaEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJGhlaWdodCgpIC8gNCAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tKTtcclxuICAkdGl0bGVSZWN0V2lkdGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLiR3aWR0aCgpIC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0IC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5yaWdodCk7XHJcbiAgJHRpdGxlUmVjdEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJGdyYXBoSGVpZ2h0KCkgKiAyIC8gMyAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4udG9wICogMik7XHJcbiAgJHZhbHVlUmVjdFdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kdGl0bGVSZWN0V2lkdGgoKSk7XHJcbiAgJHZhbHVlUmVjdEhlaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJGhlaWdodCgpIC8gMyAtIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4uYm90dG9tKTtcclxuICAkY29tcGFyaXNvblZhbHVlUmVjdFdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kdGl0bGVSZWN0V2lkdGgoKSk7XHJcbiAgJGNvbXBhcmlzb25WYWx1ZVJlY3RIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiAodGhpcy4kaGVpZ2h0KCkgLyA0IC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5ib3R0b20pIC8gMik7XHJcbiAgJGNvbXBhcmlzb25UZXh0UmVjdFdpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy4kdGl0bGVSZWN0V2lkdGgoKSk7XHJcbiAgJGNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLiRoZWlnaHQoKSAvIDQgLSB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbSkgLyAyKTtcclxuXHJcbiAgeCA9IGNvbXB1dGVkKCgpID0+IGQzLnNjYWxlTGluZWFyKCkucmFuZ2UoWzAsIHRoaXMuJGdyYXBoV2lkdGgoKV0pKTtcclxuICB5ID0gY29tcHV0ZWQoKCkgPT4gZDMuc2NhbGVMaW5lYXIoKS5yYW5nZShbdGhpcy4kZ3JhcGhIZWlnaHQoKSwgMF0pKTtcclxuXHJcbiAgcHJldmlvdXNWYWx1ZTogV3JpdGFibGVTaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPiA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgcHJldmlvdXNDb21wYXJpc29uVmFsdWU6IFdyaXRhYmxlU2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4gPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICAvL1RvIHJlbW92ZSBvbmx5IHRoZSBudW1iZXJzIHdoaWxlIGtlZXBpbmcgdGhlIHRpY2tzIG9uIHRoZSBheGVzLCBcclxuICAvL3lvdSBjYW4gc2VsZWN0IHRoZSB0ZXh0IGVsZW1lbnRzIG9mIHRoZSB0aWNrcyBhbmQgaGlkZSB0aGVtIHVzaW5nIENTUy4gXHJcbiAgLy9IZXJlJ3MgaG93IHlvdSBjYW4gbW9kaWZ5IHRoZSBjb2RlIHRvIGFjaGlldmUgdGhhdDpcclxuXHJcbiAgeEF4aXNDYWxsID0gY29tcHV0ZWQoKCkgPT4gZDMuYXhpc0JvdHRvbSh0aGlzLngoKSlcclxuICAgIC50aWNrU2l6ZUlubmVyKDEwKSAvLyBBZGp1c3QgdGhlIGxlbmd0aCBvZiB0aGUgdGlja3MgYXMgbmVlZGVkXHJcbiAgICAudGlja1NpemVPdXRlcigwKSAvLyBIaWRlIG91dGVyIHRpY2tzXHJcbiAgKVxyXG5cclxuXHJcbiAgeUF4aXNDYWxsID0gY29tcHV0ZWQoKCkgPT4gZDMuYXhpc0xlZnQodGhpcy55KCkpXHJcbiAgICAudGlja1NpemVJbm5lcigxMCkgLy8gQWRqdXN0IHRoZSBsZW5ndGggb2YgdGhlIHRpY2tzIGFzIG5lZWRlZFxyXG4gICAgLnRpY2tTaXplT3V0ZXIoMTApIC8vIEhpZGUgb3V0ZXIgdGlja3NcclxuICApXHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICghIWNoYW5nZXNbJyRtZXRyaWMnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY05hbWUoKTtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNWYWx1ZSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25WYWx1ZSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY0NvbXBhcmlzb25UZXh0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoISFjaGFuZ2VzWyckZGF0YXNldCddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0YXNldCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhY2hhbmdlc1snJHZhbHVlJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVNZXRyaWNWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCEhY2hhbmdlc1snJGNvbXBhcmlzb25WYWx1ZSddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljQ29tcGFyaXNvblZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVNZXRyaWNOYW1lKCk6IHZvaWQge1xyXG4gICAgdmFyIG5hbWVFbGVtZW50ID0gZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMuJG1ldHJpYygpLmlkICsgXCJfbmFtZVwiKVxyXG4gICAgbmFtZUVsZW1lbnQudHJhbnNpdGlvbigpLnRleHQodGhpcy5tbHMudHJhbnModGhpcy4kbWV0cmljKCkubmFtZSkpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0cmljVmFsdWUoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcInVwZGF0ZU1ldHJpY1ZhbHVlXCIpXHJcbiAgICB2YXIgdmFsdWVFbGVtZW50ID0gZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMuJG1ldHJpYygpLmlkICsgXCJfdmFsdWVcIik7XHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJldmlvdXNWYWx1ZSgpIHx8IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGVuZCA9IHRoaXMuJHZhbHVlKCkgfHwgdW5kZWZpbmVkO1xyXG4gICAgc3dpdGNoICh0aGlzLiRtZXRyaWMoKS5kYXRhVHlwZSkge1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLklOVEVHRVI6XHJcbiAgICAgICAgdmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmICghIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghIWVuZCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoZW5kKSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiB2YWx1ZUVsZW1lbnQudGV4dCgnTi9BJylcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLkRFQ0lNQUw6XHJcbiAgICAgICAgdmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmICghIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDApIC8gMTAwKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghIWVuZCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoZW5kICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiB2YWx1ZUVsZW1lbnQudGV4dChcIk4vQVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLlBFUkNFTlRBR0U6XHJcbiAgICAgICAgdmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMDAwKSAvIDEwMCArIFwiJVwiKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghIWVuZCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IHZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoZW5kICogMTAwMDApIC8gMTAwICsgXCIlXCIpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gdmFsdWVFbGVtZW50LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHZhbHVlRWxlbWVudC50cmFuc2l0aW9uKCkudGV4dCgodGhpcy4kdmFsdWUoKSB8fCAnTi9BJykudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpb3VzVmFsdWUuc2V0KHRoaXMuJHZhbHVlKCkpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0cmljQ29tcGFyaXNvblZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RhcnQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHRoaXMucHJldmlvdXNDb21wYXJpc29uVmFsdWUoKTtcclxuICAgIGNvbnN0IGVuZDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdGhpcy4kY29tcGFyaXNvblZhbHVlKCk7XHJcbiAgICB2YXIgY29tcGFyaXNvblZhbHVlRWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX2NvbXBhcmlzb25WYWx1ZVwiKTtcclxuICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQuYXR0cihcImZpbGxcIiwgKHRoaXMuJGNvbXBhcmlzb25WYWx1ZSgpIHx8IDApID49IDAgPyB0aGlzLiRjb21wYXJpc29uVGV4dEZpbGxDb2xvcigpIDogZDMuY29sb3IoXCJyZWRcIikpO1xyXG4gICAgc3dpdGNoICh0aGlzLiRtZXRyaWMoKS5kYXRhVHlwZSkge1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLklOVEVHRVI6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuJHZhbHVlKCkgJiYgISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSkpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfID0+IGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudGV4dChcIk4vQVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuREVDSU1BTDpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy4kdmFsdWUoKSAmJiAhIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlRWxlbWVudC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gY29tcGFyaXNvblZhbHVlRWxlbWVudC50ZXh0KFwiTi9BXCIpXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoISF0aGlzLiR2YWx1ZSgpICYmICEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVFbGVtZW50LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gY29tcGFyaXNvblZhbHVlRWxlbWVudC50ZXh0KFwiTi9BXCIpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZUVsZW1lbnQudHJhbnNpdGlvbigpLnRleHQoKHRoaXMuJGNvbXBhcmlzb25WYWx1ZSgpIHx8ICdOL0EnKS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZU1ldHJpY0NvbXBhcmlzb25UZXh0KCk6IHZvaWQge1xyXG4gICAgdmFyIGNvbXBhcmlzb25UZXh0RWxlbWVudCA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX2NvbXBhcmlzb25UZXh0XCIpO1xyXG4gICAgc3dpdGNoICh0aGlzLiRtZXRyaWMoKS5jb21wYXJpc29uQ29kZSkge1xyXG4gICAgICBjYXNlIEVudW1IckNvbXBhcmlzb25Db2RlLldJVEhfUFJFVklPVVNfTU9OVEg6XHJcbiAgICAgICAgY29tcGFyaXNvblRleHRFbGVtZW50LnRleHQodGhpcy5tbHMudHJhbnModGhpcy4kbWV0cmljKCkuY29tcGFyaXNvbkNvZGUpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX1lFQVI6XHJcbiAgICAgICAgY29tcGFyaXNvblRleHRFbGVtZW50LnRleHQodGhpcy5tbHMudHJhbnModGhpcy4kbWV0cmljKCkuY29tcGFyaXNvbkNvZGUpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb21wYXJpc29uVGV4dEVsZW1lbnQudGV4dChcIi1cIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXRhc2V0KCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IG1pblBvaW50ID0gdGhpcy4kZGF0YXNldCgpLnJlZHVjZSgobWluLCBjdXJyZW50KSA9PiBjdXJyZW50LnkgPCBtaW4ueSA/IGN1cnJlbnQgOiBtaW4pO1xyXG4gICAgY29uc3QgbWF4UG9pbnQgPSB0aGlzLiRkYXRhc2V0KCkucmVkdWNlKChtYXgsIGN1cnJlbnQpID0+IGN1cnJlbnQueSA+IG1heC55ID8gY3VycmVudCA6IG1heCk7XHJcblxyXG4gICAgLy8gVXBkYXRlIHNjYWxlc1xyXG4gICAgY29uc3QgeFNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKVxyXG4gICAgICAuZG9tYWluKFswLCBkMy5tYXgodGhpcy4kZGF0YXNldCgpLCAoZDogYW55KSA9PiBkLngpXSlcclxuICAgICAgLnJhbmdlKFswLCB0aGlzLiRncmFwaFdpZHRoKCldKTtcclxuXHJcbiAgICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXHJcbiAgICAgIC5kb21haW4oW21pblBvaW50LnksIG1heFBvaW50LnldKVxyXG4gICAgICAucmFuZ2UoW3RoaXMuJGdyYXBoSGVpZ2h0KCksIDBdKTtcclxuXHJcbiAgICBjb25zdCB4QXhpc0NhbGwgPSBkMy5heGlzQm90dG9tKHhTY2FsZSlcclxuICAgICAgLnRpY2tTaXplSW5uZXIoMTApIC8vIEFkanVzdCB0aGUgbGVuZ3RoIG9mIHRoZSB0aWNrcyBhcyBuZWVkZWRcclxuICAgICAgLnRpY2tTaXplT3V0ZXIoMCk7IC8vIEhpZGUgb3V0ZXIgdGlja3NcclxuXHJcbiAgICBjb25zdCB5QXhpc0NhbGwgPSBkMy5heGlzTGVmdCh5U2NhbGUpXHJcbiAgICAgIC50aWNrU2l6ZUlubmVyKDEwKSAvLyBBZGp1c3QgdGhlIGxlbmd0aCBvZiB0aGUgdGlja3MgYXMgbmVlZGVkXHJcbiAgICAgIC50aWNrU2l6ZU91dGVyKDEwKTsgLy8gRG8gbm90IGhpZGUgb3V0ZXIgdGlja3NcclxuXHJcbiAgICAvLyBVcGRhdGUgYXhlc1xyXG4gICAgLy94QXhpcy5jYWxsKHhBeGlzQ2FsbCk7XHJcbiAgICAvL3lBeGlzLmNhbGwoeUF4aXNDYWxsKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgY29ubmVjdGluZyBsaW5lXHJcbiAgICB0aGlzLmNvbm5lY3RpbmdMaW5lID0gZDMubGluZSgpXHJcbiAgICAgIC54KChkOiBhbnkpID0+IHhTY2FsZShkLngpKVxyXG4gICAgICAueSgoZDogYW55KSA9PiB5U2NhbGUoZC55KSlcclxuICAgICAgLmRlZmluZWQoKGQsIGkpID0+IGkgPj0gMCAmJiBpIDwgdGhpcy4kZGF0YXNldCgpLmxlbmd0aCk7XHJcblxyXG4gICAgZDMuc2VsZWN0KFwiI21ldHJpY19cIiArIHRoaXMuJG1ldHJpYygpLmlkICsgXCJfc2NhdHRlci1wbG90XCIpLnNlbGVjdChcInBhdGhcIilcclxuICAgICAgLmRhdHVtKHRoaXMuJGRhdGFzZXQoKSlcclxuICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAuYXR0cihcImRcIiwgdGhpcy5jb25uZWN0aW5nTGluZSk7XHJcblxyXG4gICAgLy8gVXBkYXRlIGNpcmNsZXNcclxuICAgIGNvbnN0IGNpcmNsZXM6IGFueSA9IGQzLnNlbGVjdChcIiNtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX3NjYXR0ZXItcGxvdFwiKS5zZWxlY3RBbGwoXCJjaXJjbGVcIilcclxuICAgICAgLmRhdGEodGhpcy4kZGF0YXNldCgpKTtcclxuXHJcbiAgICBjaXJjbGVzLmV4aXQoKS5yZW1vdmUoKTtcclxuXHJcbiAgICBjaXJjbGVzLmVudGVyKClcclxuICAgICAgLmFwcGVuZChcImNpcmNsZVwiKVxyXG4gICAgICAubWVyZ2UoY2lyY2xlcylcclxuICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAuYXR0cihcImN4XCIsIGQgPT4geFNjYWxlKGQueCkpXHJcbiAgICAgIC5hdHRyKFwiY3lcIiwgZCA9PiB5U2NhbGUoZC55KSlcclxuICAgICAgLmF0dHIoXCJyXCIsIDUpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBkID0+IHtcclxuICAgICAgICBpZiAoZCA9PT0gbWluUG9pbnQpIHJldHVybiB0aGlzLiRsb3dQaWNrQ29sb3IoKTsgLy8gU2V0IGxvd2VzdCBwb2ludCB0byAjRkY4QzAwXHJcbiAgICAgICAgaWYgKGQgPT09IG1heFBvaW50KSByZXR1cm4gdGhpcy4kaGlnaFBpY2tDb2xvcigpOyAvLyBTZXQgaGlnaGVzdCBwb2ludCB0byAjMzE1ODk3XHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiOyAvLyBNYWtlIHRoZSBvdGhlciBwb2ludHMgdHJhbnNwYXJlbnRcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgZCA9PiB7XHJcbiAgICAgICAgaWYgKGQgPT09IG1pblBvaW50KSByZXR1cm4gZDMuY29sb3IodGhpcy4kbG93UGlja0NvbG9yKCkpIS5kYXJrZXIoMC4yKTsgLy8gRGFya2VuICNGRjhDMDAgY29sb3JcclxuICAgICAgICBpZiAoZCA9PT0gbWF4UG9pbnQpIHJldHVybiBkMy5jb2xvcih0aGlzLiRoaWdoUGlja0NvbG9yKCkpIS5kYXJrZXIoMC4yKTsgLy8gRGFya2VuICMzMTU4OTcgY29sb3JcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7IC8vIE5vIHN0cm9rZSBmb3Igb3RoZXIgcG9pbnRzXHJcbiAgICAgIH0pXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDMpOyAvLyBTZXQgc3Ryb2tlIHdpZHRoXHJcbiAgfVxyXG5cclxuICBzdmc6IGFueTtcclxuICBpbm5lckdyb3VwOiBhbnk7XHJcbiAgZ3JlZW5Hcm91cDogYW55O1xyXG4gIHRpdGxlR3JvdXA6IGFueTtcclxuICB2YWx1ZUdyb3VwOiBhbnk7XHJcbiAgdmFsdWVUZXh0OiBhbnk7XHJcbiAgZ3JheUdyb3VwOiBhbnk7XHJcbiAgY29tcGFyaXNvblZhbHVlR3JvdXA6IGFueTtcclxuICBjb21wYXJpc29uVGV4dEdyb3VwOiBhbnk7XHJcbiAgY29tcGFyaXNvblZhbHVlVGV4dDogYW55O1xyXG4gIGNvbXBhcmlzb25UZXh0VGV4dDogYW55O1xyXG4gIGNvbm5lY3RpbmdMaW5lOiBhbnk7XHJcblxyXG4gIGludGVydmFsSWQ6IGFueTtcclxuXHJcbiAgYXN5bmMgZHJhd0dyYXBoKCkge1xyXG4gICAgdGhpcy5zdmcgPSBkMy5zZWxlY3QodGhpcy4kY29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQpXHJcbiAgICAgIC5hcHBlbmQoXCJzdmdcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiRvdXRlcldpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJG91dGVySGVpZ2h0KCkpO1xyXG5cclxuICAgIHRoaXMuc3ZnLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiRvdXRlcldpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJG91dGVySGVpZ2h0KCkpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLiRvdXRlckdyb3VwQmFja2dyb3VuZENvbG9yKCkpO1xyXG5cclxuICAgIHRoaXMuaW5uZXJHcm91cCA9IHRoaXMuc3ZnLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLiRtYXJnaW4oKS5sZWZ0ICsgXCIsXCIgKyB0aGlzLiRtYXJnaW4oKS50b3AgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5pbm5lckdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImJsdWUtcmVjdFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgdGhpcy4kaW5uZXJHcm91cEJhY2tncm91bmRDb2xvcigpKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuJGlubmVyV2lkdGgoKSlcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy4kaW5uZXJIZWlnaHQoKSk7XHJcblxyXG4gICAgdGhpcy5ncmVlbkdyb3VwID0gdGhpcy5pbm5lckdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLiRwYWRkaW5nKCkubGVmdCArIFwiLFwiICsgdGhpcy4kcGFkZGluZygpLnRvcCArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JlZW4tcmVjdFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuJHdpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJGhlaWdodCgpKTtcclxuXHJcbiAgICB0aGlzLnRpdGxlR3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidGl0bGUtZ3JvdXBcIilcclxuICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmxlZnQgKyBcIixcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4udG9wICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMudGl0bGVHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcInRpdGxlLXJlY3RcIilcclxuICAgICAgLmF0dHIoXCJ3aWR0aFwiLCB0aGlzLiR0aXRsZVJlY3RXaWR0aCgpKVxyXG4gICAgICAuYXR0cihcImhlaWdodFwiLCB0aGlzLiR0aXRsZVJlY3RIZWlnaHQoKSk7XHJcblxyXG4gICAgdGhpcy50aXRsZUdyb3VwLmFwcGVuZChcInRleHRcIilcclxuICAgICAgLmF0dHIoXCJpZFwiLCBcIm1ldHJpY19cIiArIHRoaXMuJG1ldHJpYygpLmlkICsgXCJfbmFtZVwiKVxyXG4gICAgICAuYXR0cihcInhcIiwgdGhpcy4kdGl0bGVSZWN0V2lkdGgoKSAvIDIpXHJcbiAgICAgIC5hdHRyKFwieVwiLCB0aGlzLiR0aXRsZVJlY3RIZWlnaHQoKSAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC10aXRsZVwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgdGhpcy50aXRsZUZpbGxDb2xvcilcclxuICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgdGhpcy4kdGl0bGVSZWN0SGVpZ2h0KCkpXHJcbiAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLnRleHQodGhpcy5tbHMudHJhbnModGhpcy4kbWV0cmljKCkubmFtZSkpO1xyXG5cclxuICAgIHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJsaW5lXCIpXHJcbiAgICAgIC5hdHRyKFwieDFcIiwgdGhpcy5kaXZpc29yTGluZU1hcmdpbi5sZWZ0KVxyXG4gICAgICAuYXR0cihcInkxXCIsIHRoaXMuJGdyYXBoSGVpZ2h0KCkgKiAyIC8gMylcclxuICAgICAgLmF0dHIoXCJ4MlwiLCB0aGlzLiR3aWR0aCgpIC0gdGhpcy5kaXZpc29yTGluZU1hcmdpbi5yaWdodClcclxuICAgICAgLmF0dHIoXCJ5MlwiLCB0aGlzLiRncmFwaEhlaWdodCgpICogMiAvIDMpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIHRoaXMuJGRpdmlzb3JMaW5lU3Ryb2tlQ29sb3IoKSlcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgdGhpcy4kZGl2aXNvckxpbmVTdHJva2VXaWR0aCgpKTtcclxuXHJcbiAgICBjb25zdCB2YWx1ZUdyb3VwVHJhbnNsYXRlWSA9IHRoaXMuJGhlaWdodCgpIC8gMiAvIDMgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbTtcclxuICAgIHRoaXMudmFsdWVHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ2YWx1ZS1ncm91cFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLFwiICsgdmFsdWVHcm91cFRyYW5zbGF0ZVkgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy52YWx1ZUdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidmFsdWUtcmVjdFwiKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuJHZhbHVlUmVjdFdpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJHZhbHVlUmVjdEhlaWdodCgpKTtcclxuXHJcbiAgICB0aGlzLnZhbHVlVGV4dCA9IHRoaXMudmFsdWVHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX3ZhbHVlXCIpXHJcbiAgICAgIC5hdHRyKFwieFwiLCB0aGlzLiR2YWx1ZVJlY3RXaWR0aCgpIC8gMilcclxuICAgICAgLmF0dHIoXCJ5XCIsIHRoaXMuJHZhbHVlUmVjdEhlaWdodCgpIC8gMilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImdyYXBoLXZhbHVlXCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCB0aGlzLnZhbHVlRmlsbENvbG9yKVxyXG4gICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCAodGhpcy52YWx1ZUZvbnRTaXplIHx8IHRoaXMuJHZhbHVlUmVjdEhlaWdodCgpKSArIFwicHhcIilcclxuICAgICAgLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKVxyXG4gICAgICAuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKTtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IDA7XHJcbiAgICBjb25zdCBlbmQgPSB0aGlzLiR2YWx1ZSgpO1xyXG4gICAgc3dpdGNoICh0aGlzLiRtZXRyaWMoKS5kYXRhVHlwZSkge1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLklOVEVHRVI6XHJcbiAgICAgICAgdGhpcy52YWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiB0aGlzLnZhbHVlVGV4dC50ZXh0KFwiTi9BXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5ERUNJTUFMOlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpICogMTAwKSAvIDEwMClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gdGhpcy52YWx1ZVRleHQudGV4dChcIk4vQVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLlBFUkNFTlRBR0U6XHJcbiAgICAgICAgdGhpcy52YWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDAwMCkgLyAxMDAgKyBcIiVcIilcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gdGhpcy52YWx1ZVRleHQudGV4dChcIk4vQVwiKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZHVyYXRpb24oNTAwKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMudmFsdWVUZXh0LnRleHQoKHRoaXMuJHZhbHVlKCkgfHwgJ04vQScpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aW91c1ZhbHVlLnNldCh0aGlzLiR2YWx1ZSgpKTtcclxuXHJcbiAgICB0aGlzLmdyYXlHcm91cCA9IHRoaXMuZ3JlZW5Hcm91cC5hcHBlbmQoXCJnXCIpXHJcbiAgICAgIC5hdHRyKFwiaWRcIiwgXCJtZXRyaWNfXCIgKyB0aGlzLiRtZXRyaWMoKS5pZCArIFwiX3NjYXR0ZXItcGxvdFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLCBcIiArIHRoaXMuJGhlaWdodCgpIC8gMiArIFwiKVwiKTtcclxuXHJcbiAgICB0aGlzLmdyYXlHcm91cC5hcHBlbmQoXCJyZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC1jb250YWluZXJcIilcclxuICAgICAgLmF0dHIoXCJmaWxsXCIsIGQzLmNvbG9yKFwidHJhbnNwYXJlbnRcIikhLmJyaWdodGVyKDEpKVxyXG4gICAgICAuYXR0cihcIndpZHRoXCIsIHRoaXMuJGdyYXBoV2lkdGgoKSlcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy4kZ3JhcGhIZWlnaHQoKSk7XHJcblxyXG5cclxuICAgIGNvbnN0IHhBeGlzID0gdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwieCBheGlzXCIpXHJcbiAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKDAsXCIgKyB0aGlzLiRncmFwaEhlaWdodCgpICsgXCIpXCIpO1xyXG5cclxuICAgIGNvbnN0IHlBeGlzID0gdGhpcy5ncmF5R3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwieSBheGlzXCIpO1xyXG5cclxuICAgIC8veEF4aXMuY2FsbCh4QXhpc0NhbGwpO1xyXG4gICAgLy95QXhpcy5jYWxsKHlBeGlzQ2FsbCk7XHJcblxyXG4gICAgLy8gU2VsZWN0IHRleHQgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRpY2tzIGFuZCBoaWRlIHRoZW1cclxuICAgIHRoaXMuZ3JheUdyb3VwLnNlbGVjdEFsbChcIi50aWNrIHRleHRcIikuYXR0cihcImRpc3BsYXlcIiwgXCJub25lXCIpO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmlzb25WYWx1ZUdyb3VwVHJhbnNsYXRlWSA9IHRoaXMuJGhlaWdodCgpICogMyAvIDQgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbTtcclxuICAgIHRoaXMuY29tcGFyaXNvblZhbHVlR3JvdXAgPSB0aGlzLmdyZWVuR3JvdXAuYXBwZW5kKFwiZ1wiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiY29tcGFyaXNvbi12YWx1ZS1ncm91cFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLFwiICsgY29tcGFyaXNvblZhbHVlR3JvdXBUcmFuc2xhdGVZICsgXCIpXCIpO1xyXG5cclxuICAgIHRoaXMuY29tcGFyaXNvblZhbHVlR3JvdXAuYXBwZW5kKFwicmVjdFwiKVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJ2YWx1ZS1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy4kY29tcGFyaXNvblZhbHVlUmVjdFdpZHRoKCkpXHJcbiAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIHRoaXMuJGNvbXBhcmlzb25WYWx1ZVJlY3RIZWlnaHQoKSk7XHJcblxyXG4gICAgY29uc3QgY29tcGFyaXNvblZhbHVlVGV4dCA9IHRoaXMuY29tcGFyaXNvblZhbHVlR3JvdXAuYXBwZW5kKFwidGV4dFwiKVxyXG4gICAgICAuYXR0cihcImlkXCIsIFwibWV0cmljX1wiICsgdGhpcy4kbWV0cmljKCkuaWQgKyBcIl9jb21wYXJpc29uVmFsdWVcIilcclxuICAgICAgLmF0dHIoXCJ4XCIsIHRoaXMuJGNvbXBhcmlzb25WYWx1ZVJlY3RXaWR0aCgpIC8gMilcclxuICAgICAgLmF0dHIoXCJ5XCIsIHRoaXMuJGNvbXBhcmlzb25WYWx1ZVJlY3RIZWlnaHQoKSAvIDIpXHJcbiAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJncmFwaC12YWx1ZVwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgKHRoaXMuJGNvbXBhcmlzb25WYWx1ZSgpIHx8IDApID49IDAgPyB0aGlzLmNvbXBhcmlzb25WYWx1ZUZpbGxDb2xvciA6IGQzLmNvbG9yKFwicmVkXCIpKVxyXG4gICAgICAuYXR0cihcImZvbnQtc2l6ZVwiLCB0aGlzLiRjb21wYXJpc29uVmFsdWVSZWN0SGVpZ2h0KCkgKyBcInB4XCIpXHJcbiAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIilcclxuICAgICAgLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIik7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLiRtZXRyaWMoKS5kYXRhVHlwZSkge1xyXG4gICAgICBjYXNlIEVudW1JQ29yZVN0YXRpc3RpY1dpZGdldERhdGFUeXBlLklOVEVHRVI6XHJcbiAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dFxyXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgICAgLnR3ZWVuKFwidGV4dFwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIXN0YXJ0ICYmICEhZW5kKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdG9yID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIoc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KE1hdGgucm91bmQoaW50ZXJwb2xhdG9yKHQpKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIF8gPT4gY29tcGFyaXNvblZhbHVlVGV4dC50ZXh0KFwiTi9BXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5kdXJhdGlvbig1MDApXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUlDb3JlU3RhdGlzdGljV2lkZ2V0RGF0YVR5cGUuREVDSU1BTDpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0XHJcbiAgICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgICAudHdlZW4oXCJ0ZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhc3RhcnQgJiYgISFlbmQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbnRlcnBvbGF0b3IgPSBkMy5pbnRlcnBvbGF0ZU51bWJlcihzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoTWF0aC5yb3VuZChpbnRlcnBvbGF0b3IodCkgKiAxMDApIC8gMTAwKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSUNvcmVTdGF0aXN0aWNXaWRnZXREYXRhVHlwZS5QRVJDRU5UQUdFOlxyXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHRcclxuICAgICAgICAgIC50cmFuc2l0aW9uKClcclxuICAgICAgICAgIC50d2VlbihcInRleHRcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoISFzdGFydCAmJiAhIWVuZCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludGVycG9sYXRvciA9IGQzLmludGVycG9sYXRlTnVtYmVyKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZVRleHQudGV4dChNYXRoLnJvdW5kKGludGVycG9sYXRvcih0KSAqIDEwMDAwKSAvIDEwMCArIFwiJVwiKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gXyA9PiBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoXCJOL0FcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmR1cmF0aW9uKDUwMClcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb21wYXJpc29uVmFsdWVUZXh0LnRleHQoKHRoaXMuJGNvbXBhcmlzb25WYWx1ZSgpIHx8ICdOL0EnKS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlvdXNDb21wYXJpc29uVmFsdWUuc2V0KHRoaXMuJGNvbXBhcmlzb25WYWx1ZSgpKTtcclxuXHJcbiAgICBjb25zdCBjb21wYXJpc29uVGV4dEdyb3VwVHJhbnNsYXRlWSA9IHRoaXMuJGhlaWdodCgpICogMyAvIDQgKyB0aGlzLmRpdmlzb3JMaW5lTWFyZ2luLmJvdHRvbSArIHRoaXMuJGNvbXBhcmlzb25UZXh0UmVjdEhlaWdodCgpO1xyXG4gICAgdGhpcy5jb21wYXJpc29uVGV4dEdyb3VwID0gdGhpcy5ncmVlbkdyb3VwLmFwcGVuZChcImdcIilcclxuICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcImNvbXBhcmlzb24tdGV4dC1ncm91cFwiKVxyXG4gICAgICAuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoaXMuZGl2aXNvckxpbmVNYXJnaW4ubGVmdCArIFwiLFwiICsgY29tcGFyaXNvblRleHRHcm91cFRyYW5zbGF0ZVkgKyBcIilcIik7XHJcblxyXG4gICAgdGhpcy5jb21wYXJpc29uVGV4dEdyb3VwLmFwcGVuZChcInJlY3RcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJ0cmFuc3BhcmVudFwiKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwidGV4dC1yZWN0XCIpXHJcbiAgICAgIC5hdHRyKFwid2lkdGhcIiwgdGhpcy4kY29tcGFyaXNvblRleHRSZWN0V2lkdGgoKSlcclxuICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgdGhpcy4kY29tcGFyaXNvblRleHRSZWN0SGVpZ2h0KCkpO1xyXG5cclxuICAgIHRoaXMuY29tcGFyaXNvblRleHRUZXh0ID0gdGhpcy5jb21wYXJpc29uVGV4dEdyb3VwLmFwcGVuZChcInRleHRcIilcclxuICAgICAgLmF0dHIoXCJpZFwiLCBcIm1ldHJpY19cIiArIHRoaXMuJG1ldHJpYygpLmlkICsgXCJfY29tcGFyaXNvblRleHRcIilcclxuICAgICAgLmF0dHIoXCJ4XCIsIHRoaXMuJGNvbXBhcmlzb25UZXh0UmVjdFdpZHRoKCkgLyAyKVxyXG4gICAgICAuYXR0cihcInlcIiwgdGhpcy4kY29tcGFyaXNvblRleHRSZWN0SGVpZ2h0KCkgLyAyKVxyXG4gICAgICAuYXR0cihcImNsYXNzXCIsIFwiZ3JhcGgtdGV4dFwiKVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgdGhpcy4kY29tcGFyaXNvblRleHRGaWxsQ29sb3IoKSlcclxuICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgdGhpcy4kY29tcGFyaXNvblRleHRSZWN0SGVpZ2h0KCkgLyAyICsgXCJweFwiKVxyXG4gICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpXHJcbiAgICAgIC5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy4kbWV0cmljKCkuY29tcGFyaXNvbkNvZGUpIHtcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX01PTlRIOlxyXG4gICAgICAgIHRoaXMuY29tcGFyaXNvblRleHRUZXh0LnRleHQodGhpcy5tbHMudHJhbnModGhpcy4kbWV0cmljKCkuY29tcGFyaXNvbkNvZGUpKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtSHJDb21wYXJpc29uQ29kZS5XSVRIX1BSRVZJT1VTX1lFQVI6XHJcbiAgICAgICAgdGhpcy5jb21wYXJpc29uVGV4dFRleHQudGV4dCh0aGlzLm1scy50cmFucyh0aGlzLiRtZXRyaWMoKS5jb21wYXJpc29uQ29kZSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY29tcGFyaXNvblRleHRUZXh0LnRleHQoXCItXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXHJcblxyXG4gICAgY29uc3QgaW5pdGlhbERhdGFzZXQ6IGFueVtdID0gdGhpcy4kZGF0YXNldCgpO1xyXG4gICAgY29uc3QgbWluUG9pbnQ6IGFueSA9IGluaXRpYWxEYXRhc2V0LnJlZHVjZSgobWluLCBjdXJyZW50KSA9PiBjdXJyZW50LnkgPCBtaW4ueSA/IGN1cnJlbnQgOiBtaW4pO1xyXG4gICAgY29uc3QgbWF4UG9pbnQ6IGFueSA9IGluaXRpYWxEYXRhc2V0LnJlZHVjZSgobWF4LCBjdXJyZW50KSA9PiBjdXJyZW50LnkgPiBtYXgueSA/IGN1cnJlbnQgOiBtYXgpO1xyXG5cclxuICAgIGNvbnN0IHhTY2FsZSA9IGQzLnNjYWxlTGluZWFyKClcclxuICAgICAgLmRvbWFpbihbMCwgZDMubWF4KGluaXRpYWxEYXRhc2V0LCBkID0+IGQueCldKVxyXG4gICAgICAucmFuZ2UoWzAsIHRoaXMuJGdyYXBoV2lkdGgoKV0pO1xyXG5cclxuICAgIGNvbnN0IHlTY2FsZSA9IGQzLnNjYWxlTGluZWFyKClcclxuICAgICAgLmRvbWFpbihbbWluUG9pbnQueSwgbWF4UG9pbnQueV0pXHJcbiAgICAgIC5yYW5nZShbdGhpcy4kZ3JhcGhIZWlnaHQoKSwgMF0pO1xyXG5cclxuICAgIHRoaXMuY29ubmVjdGluZ0xpbmUgPSBkMy5saW5lKClcclxuICAgICAgLngoKGQ6IGFueSkgPT4geFNjYWxlKGQueCkpXHJcbiAgICAgIC55KChkOiBhbnkpID0+IHlTY2FsZShkLnkpKVxyXG4gICAgICAuZGVmaW5lZCgoZCwgaSkgPT4gaSA+PSAwICYmIGkgPCBpbml0aWFsRGF0YXNldC5sZW5ndGgpO1xyXG5cclxuICAgIHRoaXMuZ3JheUdyb3VwLmFwcGVuZChcInBhdGhcIilcclxuICAgICAgLmRhdHVtKGluaXRpYWxEYXRhc2V0KVxyXG4gICAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXHJcbiAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiZGFya2dyYXlcIilcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMylcclxuICAgICAgLmF0dHIoXCJkXCIsIHRoaXMuY29ubmVjdGluZ0xpbmUpO1xyXG5cclxuICAgIHRoaXMuZ3JheUdyb3VwLnNlbGVjdEFsbChcImNpcmNsZVwiKVxyXG4gICAgICAuZGF0YShpbml0aWFsRGF0YXNldClcclxuICAgICAgLmVudGVyKClcclxuICAgICAgLmFwcGVuZChcImNpcmNsZVwiKVxyXG4gICAgICAuYXR0cihcImN4XCIsIGQgPT4geFNjYWxlKGQueCkpXHJcbiAgICAgIC5hdHRyKFwiY3lcIiwgZCA9PiB5U2NhbGUoZC55KSlcclxuICAgICAgLmF0dHIoXCJyXCIsIDUpXHJcbiAgICAgIC5hdHRyKFwiZmlsbFwiLCBkID0+IHtcclxuICAgICAgICBpZiAoZCA9PT0gbWluUG9pbnQpIHJldHVybiB0aGlzLiRsb3dQaWNrQ29sb3IoKTsgLy8gU2V0IGxvd2VzdCBwb2ludCB0byAjRkY4QzAwXHJcbiAgICAgICAgaWYgKGQgPT09IG1heFBvaW50KSByZXR1cm4gdGhpcy4kaGlnaFBpY2tDb2xvcigpOyAvLyBTZXQgaGlnaGVzdCBwb2ludCB0byAjMzE1ODk3XHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiOyAvLyBTZXQgdGhlIG90aGVyIHBvaW50cyB0cmFuc3BhcmVudFxyXG4gICAgICB9KVxyXG4gICAgICAuYXR0cihcInN0cm9rZVwiLCBkID0+IHtcclxuICAgICAgICBpZiAoZCA9PT0gbWluUG9pbnQpIHJldHVybiBkMy5jb2xvcih0aGlzLiRsb3dQaWNrQ29sb3IoKSkhLmRhcmtlcigwLjIpOyAvLyBEYXJrZW4gI0ZGOEMwMCBjb2xvclxyXG4gICAgICAgIGlmIChkID09PSBtYXhQb2ludCkgcmV0dXJuIGQzLmNvbG9yKHRoaXMuJGhpZ2hQaWNrQ29sb3IoKSkhLmRhcmtlcigwLjIpOyAvLyBEYXJrZW4gIzMxNTg5NyBjb2xvclxyXG4gICAgICAgIHJldHVybiBcIm5vbmVcIjsgLy8gTm8gc3Ryb2tlIGZvciBvdGhlciBwb2ludHNcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMyk7IC8vIFNldCBzdHJva2Ugd2lkdGhcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRyYXdHcmFwaCgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZU1ldHJpY1ZhbHVlKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWV0cmljQ29tcGFyaXNvblZhbHVlKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn0iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLXN0YXRpc3RpYy13aWRnZXQtY29udGFpbmVyXCI+XHJcbiAgICBcclxuPC9kaXY+Il19
|
|
@@ -23245,6 +23245,7 @@ class CoreStatisticWidgetComponent {
|
|
|
23245
23245
|
this.$padding = input({ top: 30, right: 30, bottom: 30, left: 30 });
|
|
23246
23246
|
this.$outerWidth = input.required();
|
|
23247
23247
|
this.$outerHeight = input.required();
|
|
23248
|
+
this.$outerGroupBackgroundColor = input('transparent');
|
|
23248
23249
|
this.$divisorLineStrokeColor = input(d3.color("gray"));
|
|
23249
23250
|
this.$divisorLineStrokeWidth = input(3);
|
|
23250
23251
|
this.$lowPickColor = input("#FF8C00");
|
|
@@ -23524,7 +23525,7 @@ class CoreStatisticWidgetComponent {
|
|
|
23524
23525
|
this.svg.append("rect")
|
|
23525
23526
|
.attr("width", this.$outerWidth())
|
|
23526
23527
|
.attr("height", this.$outerHeight())
|
|
23527
|
-
.attr("fill",
|
|
23528
|
+
.attr("fill", this.$outerGroupBackgroundColor());
|
|
23528
23529
|
this.innerGroup = this.svg.append("g")
|
|
23529
23530
|
.attr("transform", "translate(" + this.$margin().left + "," + this.$margin().top + ")");
|
|
23530
23531
|
this.innerGroup.append("rect")
|
|
@@ -23811,7 +23812,7 @@ class CoreStatisticWidgetComponent {
|
|
|
23811
23812
|
});
|
|
23812
23813
|
}
|
|
23813
23814
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreStatisticWidgetComponent, deps: [{ token: MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23814
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.2.3", type: CoreStatisticWidgetComponent, isStandalone: true, selector: "core-statistic-widget", inputs: { $metric: { classPropertyName: "$metric", publicName: "$metric", isSignal: true, isRequired: true, transformFunction: null }, $dataset: { classPropertyName: "$dataset", publicName: "$dataset", isSignal: true, isRequired: true, transformFunction: null }, $value: { classPropertyName: "$value", publicName: "$value", isSignal: true, isRequired: true, transformFunction: null }, $comparisonValue: { classPropertyName: "$comparisonValue", publicName: "$comparisonValue", isSignal: true, isRequired: true, transformFunction: null }, $innerGroupBackgroundColor: { classPropertyName: "$innerGroupBackgroundColor", publicName: "$innerGroupBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $margin: { classPropertyName: "$margin", publicName: "$margin", isSignal: true, isRequired: false, transformFunction: null }, $padding: { classPropertyName: "$padding", publicName: "$padding", isSignal: true, isRequired: false, transformFunction: null }, $outerWidth: { classPropertyName: "$outerWidth", publicName: "$outerWidth", isSignal: true, isRequired: true, transformFunction: null }, $outerHeight: { classPropertyName: "$outerHeight", publicName: "$outerHeight", isSignal: true, isRequired: true, transformFunction: null }, $divisorLineStrokeColor: { classPropertyName: "$divisorLineStrokeColor", publicName: "$divisorLineStrokeColor", isSignal: true, isRequired: false, transformFunction: null }, $divisorLineStrokeWidth: { classPropertyName: "$divisorLineStrokeWidth", publicName: "$divisorLineStrokeWidth", isSignal: true, isRequired: false, transformFunction: null }, $lowPickColor: { classPropertyName: "$lowPickColor", publicName: "$lowPickColor", isSignal: true, isRequired: false, transformFunction: null }, $highPickColor: { classPropertyName: "$highPickColor", publicName: "$highPickColor", isSignal: true, isRequired: false, transformFunction: null }, $comparisonTextFillColor: { classPropertyName: "$comparisonTextFillColor", publicName: "$comparisonTextFillColor", isSignal: true, isRequired: false, transformFunction: null }, valueFontSize: { classPropertyName: "valueFontSize", publicName: "valueFontSize", isSignal: false, isRequired: false, transformFunction: null }, divisorLineMargin: { classPropertyName: "divisorLineMargin", publicName: "divisorLineMargin", isSignal: false, isRequired: false, transformFunction: null }, titleFillColor: { classPropertyName: "titleFillColor", publicName: "titleFillColor", isSignal: false, isRequired: false, transformFunction: null }, valueFillColor: { classPropertyName: "valueFillColor", publicName: "valueFillColor", isSignal: false, isRequired: false, transformFunction: null }, comparisonValueFillColor: { classPropertyName: "comparisonValueFillColor", publicName: "comparisonValueFillColor", isSignal: false, isRequired: false, transformFunction: null }, showAxes: { classPropertyName: "showAxes", publicName: "showAxes", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-statistic-widget-container\">\r\n \r\n</div>", styles: [""] }); }
|
|
23815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.2.3", type: CoreStatisticWidgetComponent, isStandalone: true, selector: "core-statistic-widget", inputs: { $metric: { classPropertyName: "$metric", publicName: "$metric", isSignal: true, isRequired: true, transformFunction: null }, $dataset: { classPropertyName: "$dataset", publicName: "$dataset", isSignal: true, isRequired: true, transformFunction: null }, $value: { classPropertyName: "$value", publicName: "$value", isSignal: true, isRequired: true, transformFunction: null }, $comparisonValue: { classPropertyName: "$comparisonValue", publicName: "$comparisonValue", isSignal: true, isRequired: true, transformFunction: null }, $innerGroupBackgroundColor: { classPropertyName: "$innerGroupBackgroundColor", publicName: "$innerGroupBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $margin: { classPropertyName: "$margin", publicName: "$margin", isSignal: true, isRequired: false, transformFunction: null }, $padding: { classPropertyName: "$padding", publicName: "$padding", isSignal: true, isRequired: false, transformFunction: null }, $outerWidth: { classPropertyName: "$outerWidth", publicName: "$outerWidth", isSignal: true, isRequired: true, transformFunction: null }, $outerHeight: { classPropertyName: "$outerHeight", publicName: "$outerHeight", isSignal: true, isRequired: true, transformFunction: null }, $outerGroupBackgroundColor: { classPropertyName: "$outerGroupBackgroundColor", publicName: "$outerGroupBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, $divisorLineStrokeColor: { classPropertyName: "$divisorLineStrokeColor", publicName: "$divisorLineStrokeColor", isSignal: true, isRequired: false, transformFunction: null }, $divisorLineStrokeWidth: { classPropertyName: "$divisorLineStrokeWidth", publicName: "$divisorLineStrokeWidth", isSignal: true, isRequired: false, transformFunction: null }, $lowPickColor: { classPropertyName: "$lowPickColor", publicName: "$lowPickColor", isSignal: true, isRequired: false, transformFunction: null }, $highPickColor: { classPropertyName: "$highPickColor", publicName: "$highPickColor", isSignal: true, isRequired: false, transformFunction: null }, $comparisonTextFillColor: { classPropertyName: "$comparisonTextFillColor", publicName: "$comparisonTextFillColor", isSignal: true, isRequired: false, transformFunction: null }, valueFontSize: { classPropertyName: "valueFontSize", publicName: "valueFontSize", isSignal: false, isRequired: false, transformFunction: null }, divisorLineMargin: { classPropertyName: "divisorLineMargin", publicName: "divisorLineMargin", isSignal: false, isRequired: false, transformFunction: null }, titleFillColor: { classPropertyName: "titleFillColor", publicName: "titleFillColor", isSignal: false, isRequired: false, transformFunction: null }, valueFillColor: { classPropertyName: "valueFillColor", publicName: "valueFillColor", isSignal: false, isRequired: false, transformFunction: null }, comparisonValueFillColor: { classPropertyName: "comparisonValueFillColor", publicName: "comparisonValueFillColor", isSignal: false, isRequired: false, transformFunction: null }, showAxes: { classPropertyName: "showAxes", publicName: "showAxes", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-statistic-widget-container\">\r\n \r\n</div>", styles: [""] }); }
|
|
23815
23816
|
}
|
|
23816
23817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreStatisticWidgetComponent, decorators: [{
|
|
23817
23818
|
type: Component,
|