igniteui-angular-extras 16.0.3 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/igniteui-angular-extras.mjs +4 -4
- package/esm2022/images/charts.mjs +17 -17
- package/esm2022/images/conditions.mjs +11 -11
- package/esm2022/lib/context-menu/chart-dialog/chart-dialog.component.mjs +67 -67
- package/esm2022/lib/context-menu/context-menu.component.mjs +176 -176
- package/esm2022/lib/context-menu/igx-context-menu.directive.mjs +154 -154
- package/esm2022/lib/directives/chart-integration/chart-integration.directive.mjs +312 -312
- package/esm2022/lib/directives/chart-integration/chart-types.mjs +27 -27
- package/esm2022/lib/directives/chart-integration/initializers.mjs +102 -102
- package/esm2022/lib/directives/conditional-formatting/conditional-formatting.directive.mjs +303 -303
- package/esm2022/lib/igniteui-angular-extras.module.mjs +107 -107
- package/esm2022/lib/pipes/svg.pipe.mjs +19 -19
- package/esm2022/public-api.mjs +20 -20
- package/fesm2022/igniteui-angular-extras.mjs +1228 -1228
- package/fesm2022/igniteui-angular-extras.mjs.map +1 -1
- package/images/charts.d.ts +16 -16
- package/images/conditions.d.ts +10 -10
- package/index.d.ts +5 -5
- package/lib/context-menu/chart-dialog/chart-dialog.component.d.ts +31 -31
- package/lib/context-menu/context-menu.component.d.ts +37 -37
- package/lib/context-menu/igx-context-menu.directive.d.ts +33 -33
- package/lib/directives/chart-integration/chart-integration.directive.d.ts +52 -52
- package/lib/directives/chart-integration/chart-types.d.ts +25 -25
- package/lib/directives/chart-integration/initializers.d.ts +39 -39
- package/lib/directives/conditional-formatting/conditional-formatting.directive.d.ts +95 -95
- package/lib/igniteui-angular-extras.module.d.ts +15 -15
- package/lib/pipes/svg.pipe.d.ts +10 -10
- package/package.json +6 -6
- package/public-api.d.ts +17 -17
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
export var CHART_TYPE;
|
|
2
|
-
(function (CHART_TYPE) {
|
|
3
|
-
CHART_TYPE["PIE"] = "Pie";
|
|
4
|
-
CHART_TYPE["COLUMN_GROUPED"] = "ColumnGrouped";
|
|
5
|
-
CHART_TYPE["AREA_GROUPED"] = "AreaGrouped";
|
|
6
|
-
CHART_TYPE["LINE_GROUPED"] = "LineGrouped";
|
|
7
|
-
CHART_TYPE["BAR_GROUPED"] = "BarGrouped";
|
|
8
|
-
CHART_TYPE["COLUMN_STACKED"] = "ColumnStacked";
|
|
9
|
-
CHART_TYPE["AREA_STACKED"] = "AreaStacked";
|
|
10
|
-
CHART_TYPE["LINE_STACKED"] = "LineStacked";
|
|
11
|
-
CHART_TYPE["BAR_STACKED"] = "BarStacked";
|
|
12
|
-
CHART_TYPE["COLUMN_100_STACKED"] = "Column100Stacked";
|
|
13
|
-
CHART_TYPE["AREA_100_STACKED"] = "Area100Stacked";
|
|
14
|
-
CHART_TYPE["LINE_100_STACKED"] = "Line100Stacked";
|
|
15
|
-
CHART_TYPE["BAR_100_STACKED"] = "Bar100Stacked";
|
|
16
|
-
CHART_TYPE["SCATTER_POINT"] = "ScatterPoint";
|
|
17
|
-
CHART_TYPE["SCATTER_BUBBLE"] = "ScatterBubble";
|
|
18
|
-
CHART_TYPE["SCATTER_LINE"] = "ScatterLine";
|
|
19
|
-
})(CHART_TYPE || (CHART_TYPE = {}));
|
|
20
|
-
export var OPTIONS_TYPE;
|
|
21
|
-
(function (OPTIONS_TYPE) {
|
|
22
|
-
OPTIONS_TYPE["CHART"] = "chartOptions";
|
|
23
|
-
OPTIONS_TYPE["SERIES"] = "seriesModel";
|
|
24
|
-
OPTIONS_TYPE["X_AXIS"] = "xAxisOptions";
|
|
25
|
-
OPTIONS_TYPE["Y_AXIS"] = "yAxisOptions";
|
|
26
|
-
OPTIONS_TYPE["STACKED_SERIES"] = "stackedFragmentOptions";
|
|
27
|
-
})(OPTIONS_TYPE || (OPTIONS_TYPE = {}));
|
|
1
|
+
export var CHART_TYPE;
|
|
2
|
+
(function (CHART_TYPE) {
|
|
3
|
+
CHART_TYPE["PIE"] = "Pie";
|
|
4
|
+
CHART_TYPE["COLUMN_GROUPED"] = "ColumnGrouped";
|
|
5
|
+
CHART_TYPE["AREA_GROUPED"] = "AreaGrouped";
|
|
6
|
+
CHART_TYPE["LINE_GROUPED"] = "LineGrouped";
|
|
7
|
+
CHART_TYPE["BAR_GROUPED"] = "BarGrouped";
|
|
8
|
+
CHART_TYPE["COLUMN_STACKED"] = "ColumnStacked";
|
|
9
|
+
CHART_TYPE["AREA_STACKED"] = "AreaStacked";
|
|
10
|
+
CHART_TYPE["LINE_STACKED"] = "LineStacked";
|
|
11
|
+
CHART_TYPE["BAR_STACKED"] = "BarStacked";
|
|
12
|
+
CHART_TYPE["COLUMN_100_STACKED"] = "Column100Stacked";
|
|
13
|
+
CHART_TYPE["AREA_100_STACKED"] = "Area100Stacked";
|
|
14
|
+
CHART_TYPE["LINE_100_STACKED"] = "Line100Stacked";
|
|
15
|
+
CHART_TYPE["BAR_100_STACKED"] = "Bar100Stacked";
|
|
16
|
+
CHART_TYPE["SCATTER_POINT"] = "ScatterPoint";
|
|
17
|
+
CHART_TYPE["SCATTER_BUBBLE"] = "ScatterBubble";
|
|
18
|
+
CHART_TYPE["SCATTER_LINE"] = "ScatterLine";
|
|
19
|
+
})(CHART_TYPE || (CHART_TYPE = {}));
|
|
20
|
+
export var OPTIONS_TYPE;
|
|
21
|
+
(function (OPTIONS_TYPE) {
|
|
22
|
+
OPTIONS_TYPE["CHART"] = "chartOptions";
|
|
23
|
+
OPTIONS_TYPE["SERIES"] = "seriesModel";
|
|
24
|
+
OPTIONS_TYPE["X_AXIS"] = "xAxisOptions";
|
|
25
|
+
OPTIONS_TYPE["Y_AXIS"] = "yAxisOptions";
|
|
26
|
+
OPTIONS_TYPE["STACKED_SERIES"] = "stackedFragmentOptions";
|
|
27
|
+
})(OPTIONS_TYPE || (OPTIONS_TYPE = {}));
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyLWV4dHJhcy9zcmMvbGliL2RpcmVjdGl2ZXMvY2hhcnQtaW50ZWdyYXRpb24vY2hhcnQtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksVUFpQlg7QUFqQkQsV0FBWSxVQUFVO0lBQ2xCLHlCQUFVLENBQUE7SUFDViw4Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBNEIsQ0FBQTtJQUM1QiwwQ0FBNEIsQ0FBQTtJQUM1Qix3Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBNEIsQ0FBQTtJQUM1QiwwQ0FBNEIsQ0FBQTtJQUM1Qix3Q0FBMEIsQ0FBQTtJQUMxQixxREFBdUMsQ0FBQTtJQUN2QyxpREFBbUMsQ0FBQTtJQUNuQyxpREFBbUMsQ0FBQTtJQUNuQywrQ0FBaUMsQ0FBQTtJQUNqQyw0Q0FBOEIsQ0FBQTtJQUM5Qiw4Q0FBZ0MsQ0FBQTtJQUNoQywwQ0FBNEIsQ0FBQTtBQUNoQyxDQUFDLEVBakJXLFVBQVUsS0FBVixVQUFVLFFBaUJyQjtBQUVELE1BQU0sQ0FBTixJQUFZLFlBTVg7QUFORCxXQUFZLFlBQVk7SUFDcEIsc0NBQXNCLENBQUE7SUFDdEIsc0NBQXNCLENBQUE7SUFDdEIsdUNBQXVCLENBQUE7SUFDdkIsdUNBQXVCLENBQUE7SUFDdkIseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQU5XLFlBQVksS0FBWixZQUFZLFFBTXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ0hBUlRfVFlQRSB7XHJcbiAgICBQSUU9ICdQaWUnLFxyXG4gICAgQ09MVU1OX0dST1VQRUQgPSAnQ29sdW1uR3JvdXBlZCcsXHJcbiAgICBBUkVBX0dST1VQRUQgPSAnQXJlYUdyb3VwZWQnLFxyXG4gICAgTElORV9HUk9VUEVEID0gJ0xpbmVHcm91cGVkJyxcclxuICAgIEJBUl9HUk9VUEVEID0gJ0Jhckdyb3VwZWQnLFxyXG4gICAgQ09MVU1OX1NUQUNLRUQgPSAnQ29sdW1uU3RhY2tlZCcsXHJcbiAgICBBUkVBX1NUQUNLRUQgPSAnQXJlYVN0YWNrZWQnLFxyXG4gICAgTElORV9TVEFDS0VEID0gJ0xpbmVTdGFja2VkJyxcclxuICAgIEJBUl9TVEFDS0VEID0gJ0JhclN0YWNrZWQnLFxyXG4gICAgQ09MVU1OXzEwMF9TVEFDS0VEID0gJ0NvbHVtbjEwMFN0YWNrZWQnLFxyXG4gICAgQVJFQV8xMDBfU1RBQ0tFRCA9ICdBcmVhMTAwU3RhY2tlZCcsXHJcbiAgICBMSU5FXzEwMF9TVEFDS0VEID0gJ0xpbmUxMDBTdGFja2VkJyxcclxuICAgIEJBUl8xMDBfU1RBQ0tFRCA9ICdCYXIxMDBTdGFja2VkJyxcclxuICAgIFNDQVRURVJfUE9JTlQgPSAnU2NhdHRlclBvaW50JyxcclxuICAgIFNDQVRURVJfQlVCQkxFID0gJ1NjYXR0ZXJCdWJibGUnLFxyXG4gICAgU0NBVFRFUl9MSU5FID0gJ1NjYXR0ZXJMaW5lJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBPUFRJT05TX1RZUEUge1xyXG4gICAgQ0hBUlQgPSAnY2hhcnRPcHRpb25zJyxcclxuICAgIFNFUklFUyA9ICdzZXJpZXNNb2RlbCcsXHJcbiAgICBYX0FYSVMgPSAneEF4aXNPcHRpb25zJyxcclxuICAgIFlfQVhJUyA9ICd5QXhpc09wdGlvbnMnLFxyXG4gICAgU1RBQ0tFRF9TRVJJRVMgPSAnc3RhY2tlZEZyYWdtZW50T3B0aW9ucydcclxufVxyXG4iXX0=
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
// tslint:disable: max-line-length
|
|
2
|
-
import { EventEmitter } from '@angular/core';
|
|
3
|
-
import { IgxBarSeriesComponent, IgxBubbleSeriesComponent, IgxCategoryXAxisComponent, IgxCategoryYAxisComponent, IgxNumericXAxisComponent, IgxNumericYAxisComponent, IgxScatterLineSeriesComponent, IgxScatterSeriesComponent, IgxStacked100BarSeriesComponent, IgxStackedBarSeriesComponent, IgxStackedFragmentSeriesComponent } from 'igniteui-angular-charts';
|
|
4
|
-
class SeriesFactory {
|
|
5
|
-
create(type) {
|
|
6
|
-
return new type();
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export class ChartInitializer {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.seriesFactory = new SeriesFactory();
|
|
12
|
-
}
|
|
13
|
-
applyOptions(target, options) {
|
|
14
|
-
if (options) {
|
|
15
|
-
Object.keys(options).forEach(key => {
|
|
16
|
-
if (target[key] instanceof EventEmitter) {
|
|
17
|
-
target[key].subscribe(options[key]);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
target[key] = options[key];
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export class IgxPieChartInitializer extends ChartInitializer {
|
|
27
|
-
constructor() {
|
|
28
|
-
super();
|
|
29
|
-
}
|
|
30
|
-
initChart(chart, options) {
|
|
31
|
-
this.applyOptions(chart, options.chartOptions);
|
|
32
|
-
return chart;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
export class IgxDataChartInitializer extends ChartInitializer {
|
|
36
|
-
constructor(seriesType) {
|
|
37
|
-
super();
|
|
38
|
-
switch (seriesType) {
|
|
39
|
-
case IgxBarSeriesComponent:
|
|
40
|
-
this.xAxis = new IgxNumericXAxisComponent();
|
|
41
|
-
this.yAxis = new IgxCategoryYAxisComponent();
|
|
42
|
-
break;
|
|
43
|
-
case IgxScatterSeriesComponent:
|
|
44
|
-
case IgxBubbleSeriesComponent:
|
|
45
|
-
case IgxScatterLineSeriesComponent:
|
|
46
|
-
this.xAxis = new IgxNumericXAxisComponent();
|
|
47
|
-
this.yAxis = new IgxNumericYAxisComponent();
|
|
48
|
-
break;
|
|
49
|
-
default:
|
|
50
|
-
this.xAxis = new IgxCategoryXAxisComponent();
|
|
51
|
-
this.yAxis = new IgxNumericYAxisComponent();
|
|
52
|
-
}
|
|
53
|
-
this.seriesType = seriesType;
|
|
54
|
-
}
|
|
55
|
-
initChart(chart, options) {
|
|
56
|
-
options.seriesOptions.forEach((option) => {
|
|
57
|
-
const series = this.seriesFactory.create(this.seriesType);
|
|
58
|
-
series.xAxis = this.xAxis;
|
|
59
|
-
series.yAxis = this.yAxis;
|
|
60
|
-
this.applyOptions(series, option);
|
|
61
|
-
chart.series.add(series);
|
|
62
|
-
});
|
|
63
|
-
this.applyOptions(chart, options.chartOptions);
|
|
64
|
-
this.applyOptions(this.xAxis, options.xAxisOptions);
|
|
65
|
-
this.applyOptions(this.yAxis, options.yAxisOptions);
|
|
66
|
-
chart.axes.add(this.xAxis);
|
|
67
|
-
chart.axes.add(this.yAxis);
|
|
68
|
-
return chart;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export class IgxStackedDataChartInitializer extends ChartInitializer {
|
|
72
|
-
constructor(seriesType) {
|
|
73
|
-
super();
|
|
74
|
-
if (seriesType === IgxStackedBarSeriesComponent || seriesType === IgxStacked100BarSeriesComponent) {
|
|
75
|
-
this.xAxis = new IgxNumericXAxisComponent();
|
|
76
|
-
this.yAxis = new IgxCategoryYAxisComponent();
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.xAxis = new IgxCategoryXAxisComponent();
|
|
80
|
-
this.yAxis = new IgxNumericYAxisComponent();
|
|
81
|
-
}
|
|
82
|
-
this.seriesType = seriesType;
|
|
83
|
-
}
|
|
84
|
-
initChart(chart, options) {
|
|
85
|
-
const series = this.seriesFactory.create(this.seriesType);
|
|
86
|
-
series.xAxis = this.xAxis;
|
|
87
|
-
series.yAxis = this.yAxis;
|
|
88
|
-
options.stackedFragmentOptions.forEach(fragOpt => {
|
|
89
|
-
const frag = new IgxStackedFragmentSeriesComponent();
|
|
90
|
-
this.applyOptions(frag, fragOpt);
|
|
91
|
-
series.series.add(frag);
|
|
92
|
-
});
|
|
93
|
-
this.applyOptions(series, options.seriesOptions);
|
|
94
|
-
this.applyOptions(chart, options.chartOptions);
|
|
95
|
-
this.applyOptions(this.xAxis, options.xAxisOptions);
|
|
96
|
-
this.applyOptions(this.yAxis, options.yAxisOptions);
|
|
97
|
-
chart.series.add(series);
|
|
98
|
-
chart.axes.add(this.xAxis);
|
|
99
|
-
chart.axes.add(this.yAxis);
|
|
100
|
-
return chart;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
1
|
+
// tslint:disable: max-line-length
|
|
2
|
+
import { EventEmitter } from '@angular/core';
|
|
3
|
+
import { IgxBarSeriesComponent, IgxBubbleSeriesComponent, IgxCategoryXAxisComponent, IgxCategoryYAxisComponent, IgxNumericXAxisComponent, IgxNumericYAxisComponent, IgxScatterLineSeriesComponent, IgxScatterSeriesComponent, IgxStacked100BarSeriesComponent, IgxStackedBarSeriesComponent, IgxStackedFragmentSeriesComponent } from 'igniteui-angular-charts';
|
|
4
|
+
class SeriesFactory {
|
|
5
|
+
create(type) {
|
|
6
|
+
return new type();
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class ChartInitializer {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.seriesFactory = new SeriesFactory();
|
|
12
|
+
}
|
|
13
|
+
applyOptions(target, options) {
|
|
14
|
+
if (options) {
|
|
15
|
+
Object.keys(options).forEach(key => {
|
|
16
|
+
if (target[key] instanceof EventEmitter) {
|
|
17
|
+
target[key].subscribe(options[key]);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
target[key] = options[key];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class IgxPieChartInitializer extends ChartInitializer {
|
|
27
|
+
constructor() {
|
|
28
|
+
super();
|
|
29
|
+
}
|
|
30
|
+
initChart(chart, options) {
|
|
31
|
+
this.applyOptions(chart, options.chartOptions);
|
|
32
|
+
return chart;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class IgxDataChartInitializer extends ChartInitializer {
|
|
36
|
+
constructor(seriesType) {
|
|
37
|
+
super();
|
|
38
|
+
switch (seriesType) {
|
|
39
|
+
case IgxBarSeriesComponent:
|
|
40
|
+
this.xAxis = new IgxNumericXAxisComponent();
|
|
41
|
+
this.yAxis = new IgxCategoryYAxisComponent();
|
|
42
|
+
break;
|
|
43
|
+
case IgxScatterSeriesComponent:
|
|
44
|
+
case IgxBubbleSeriesComponent:
|
|
45
|
+
case IgxScatterLineSeriesComponent:
|
|
46
|
+
this.xAxis = new IgxNumericXAxisComponent();
|
|
47
|
+
this.yAxis = new IgxNumericYAxisComponent();
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
this.xAxis = new IgxCategoryXAxisComponent();
|
|
51
|
+
this.yAxis = new IgxNumericYAxisComponent();
|
|
52
|
+
}
|
|
53
|
+
this.seriesType = seriesType;
|
|
54
|
+
}
|
|
55
|
+
initChart(chart, options) {
|
|
56
|
+
options.seriesOptions.forEach((option) => {
|
|
57
|
+
const series = this.seriesFactory.create(this.seriesType);
|
|
58
|
+
series.xAxis = this.xAxis;
|
|
59
|
+
series.yAxis = this.yAxis;
|
|
60
|
+
this.applyOptions(series, option);
|
|
61
|
+
chart.series.add(series);
|
|
62
|
+
});
|
|
63
|
+
this.applyOptions(chart, options.chartOptions);
|
|
64
|
+
this.applyOptions(this.xAxis, options.xAxisOptions);
|
|
65
|
+
this.applyOptions(this.yAxis, options.yAxisOptions);
|
|
66
|
+
chart.axes.add(this.xAxis);
|
|
67
|
+
chart.axes.add(this.yAxis);
|
|
68
|
+
return chart;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export class IgxStackedDataChartInitializer extends ChartInitializer {
|
|
72
|
+
constructor(seriesType) {
|
|
73
|
+
super();
|
|
74
|
+
if (seriesType === IgxStackedBarSeriesComponent || seriesType === IgxStacked100BarSeriesComponent) {
|
|
75
|
+
this.xAxis = new IgxNumericXAxisComponent();
|
|
76
|
+
this.yAxis = new IgxCategoryYAxisComponent();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.xAxis = new IgxCategoryXAxisComponent();
|
|
80
|
+
this.yAxis = new IgxNumericYAxisComponent();
|
|
81
|
+
}
|
|
82
|
+
this.seriesType = seriesType;
|
|
83
|
+
}
|
|
84
|
+
initChart(chart, options) {
|
|
85
|
+
const series = this.seriesFactory.create(this.seriesType);
|
|
86
|
+
series.xAxis = this.xAxis;
|
|
87
|
+
series.yAxis = this.yAxis;
|
|
88
|
+
options.stackedFragmentOptions.forEach(fragOpt => {
|
|
89
|
+
const frag = new IgxStackedFragmentSeriesComponent();
|
|
90
|
+
this.applyOptions(frag, fragOpt);
|
|
91
|
+
series.series.add(frag);
|
|
92
|
+
});
|
|
93
|
+
this.applyOptions(series, options.seriesOptions);
|
|
94
|
+
this.applyOptions(chart, options.chartOptions);
|
|
95
|
+
this.applyOptions(this.xAxis, options.xAxisOptions);
|
|
96
|
+
this.applyOptions(this.yAxis, options.yAxisOptions);
|
|
97
|
+
chart.series.add(series);
|
|
98
|
+
chart.axes.add(this.xAxis);
|
|
99
|
+
chart.axes.add(this.yAxis);
|
|
100
|
+
return chart;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
103
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci1leHRyYXMvc3JjL2xpYi9kaXJlY3RpdmVzL2NoYXJ0LWludGVncmF0aW9uL2luaXRpYWxpemVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQy9FLHlCQUF5QixFQUF5Qix3QkFBd0IsRUFDMUUsd0JBQXdCLEVBQXdCLDZCQUE2QixFQUM3RSx5QkFBeUIsRUFBRSwrQkFBK0IsRUFBRSw0QkFBNEIsRUFDeEYsaUNBQWlDLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RSxNQUFNLGFBQWE7SUFDUixNQUFNLENBQUksSUFBbUI7UUFDaEMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7Q0FDSjtBQWVELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBSWxDO1FBRFUsa0JBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFVixZQUFZLENBQUMsTUFBVyxFQUFFLE9BQWlCO1FBQzlDLElBQUksT0FBTyxFQUFFO1lBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLFlBQVksRUFBRTtvQkFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDdkM7cUJBQU07b0JBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDOUI7WUFDTCxDQUFD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QUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoXHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJZ3hCYXJTZXJpZXNDb21wb25lbnQsIElneEJ1YmJsZVNlcmllc0NvbXBvbmVudCwgSWd4Q2F0ZWdvcnlYQXhpc0NvbXBvbmVudCxcclxuICAgIElneENhdGVnb3J5WUF4aXNDb21wb25lbnQsIElneERhdGFDaGFydENvbXBvbmVudCwgSWd4TnVtZXJpY1hBeGlzQ29tcG9uZW50LFxyXG4gICAgSWd4TnVtZXJpY1lBeGlzQ29tcG9uZW50LCBJZ3hQaWVDaGFydENvbXBvbmVudCwgSWd4U2NhdHRlckxpbmVTZXJpZXNDb21wb25lbnQsXHJcbiAgICBJZ3hTY2F0dGVyU2VyaWVzQ29tcG9uZW50LCBJZ3hTdGFja2VkMTAwQmFyU2VyaWVzQ29tcG9uZW50LCBJZ3hTdGFja2VkQmFyU2VyaWVzQ29tcG9uZW50LFxyXG4gICAgSWd4U3RhY2tlZEZyYWdtZW50U2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnaWduaXRldWktYW5ndWxhci1jaGFydHMnO1xyXG5cclxuY2xhc3MgU2VyaWVzRmFjdG9yeSB7XHJcbiAgICBwdWJsaWMgY3JlYXRlPFQ+KHR5cGU6IChuZXcgKCkgPT4gVCkpOiBUIHtcclxuICAgICAgICByZXR1cm4gbmV3IHR5cGUoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT3B0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNoYXJ0Q29tcG9uZW50T3B0aW9ucyB7XHJcbiAgICAgY2hhcnRPcHRpb25zPzogSU9wdGlvbnM7XHJcbiAgICAgc2VyaWVzT3B0aW9ucz86IElPcHRpb25zW107XHJcbiAgICAgeEF4aXNPcHRpb25zPzogSU9wdGlvbnM7XHJcbiAgICAgc2VyaWVzTW9kZWw/OiBJT3B0aW9ucztcclxuICAgICB5QXhpc09wdGlvbnM/OiBJT3B0aW9ucztcclxuICAgICBzdGFja2VkRnJhZ21lbnRPcHRpb25zPzogSU9wdGlvbnM7XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDaGFydEluaXRpYWxpemVyIHtcclxuICAgIHByb3RlY3RlZCB5QXhpcztcclxuICAgIHByb3RlY3RlZCB4QXhpcztcclxuICAgIHByb3RlY3RlZCBzZXJpZXNGYWN0b3J5ID0gbmV3IFNlcmllc0ZhY3RvcnkoKTtcclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgcHVibGljIGFwcGx5T3B0aW9ucyh0YXJnZXQ6IGFueSwgb3B0aW9uczogSU9wdGlvbnMpIHtcclxuICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0W2tleV0gaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XS5zdWJzY3JpYmUob3B0aW9uc1trZXldKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBvcHRpb25zW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgaW5pdENoYXJ0KGNoYXJ0OiBhbnksIG9wdGlvbnM/OiBJQ2hhcnRDb21wb25lbnRPcHRpb25zKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4UGllQ2hhcnRJbml0aWFsaXplciBleHRlbmRzIENoYXJ0SW5pdGlhbGl6ZXIge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW5pdENoYXJ0KGNoYXJ0OiBJZ3hQaWVDaGFydENvbXBvbmVudCwgb3B0aW9uczogSUNoYXJ0Q29tcG9uZW50T3B0aW9ucykge1xyXG5cclxuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhjaGFydCwgb3B0aW9ucy5jaGFydE9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBjaGFydDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIElneERhdGFDaGFydEluaXRpYWxpemVyIGV4dGVuZHMgQ2hhcnRJbml0aWFsaXplciB7XHJcbiAgICBwdWJsaWMgc2VyaWVzVHlwZTogVHlwZTxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHNlcmllc1R5cGU6IFR5cGU8YW55Pikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgc3dpdGNoIChzZXJpZXNUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgSWd4QmFyU2VyaWVzQ29tcG9uZW50OlxyXG4gICAgICAgICAgICAgICAgdGhpcy54QXhpcyA9ICBuZXcgSWd4TnVtZXJpY1hBeGlzQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnlBeGlzID0gIG5ldyBJZ3hDYXRlZ29yeVlBeGlzQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBJZ3hTY2F0dGVyU2VyaWVzQ29tcG9uZW50OlxyXG4gICAgICAgICAgICBjYXNlIElneEJ1YmJsZVNlcmllc0NvbXBvbmVudDpcclxuICAgICAgICAgICAgY2FzZSBJZ3hTY2F0dGVyTGluZVNlcmllc0NvbXBvbmVudDpcclxuICAgICAgICAgICAgICAgIHRoaXMueEF4aXMgPSAgbmV3IElneE51bWVyaWNYQXhpc0NvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy55QXhpcyA9ICBuZXcgSWd4TnVtZXJpY1lBeGlzQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHRoaXMueEF4aXMgPSAgbmV3IElneENhdGVnb3J5WEF4aXNDb21wb25lbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMueUF4aXMgPSAgbmV3IElneE51bWVyaWNZQXhpc0NvbXBvbmVudCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXJpZXNUeXBlID0gc2VyaWVzVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaW5pdENoYXJ0KGNoYXJ0OiBJZ3hEYXRhQ2hhcnRDb21wb25lbnQsIG9wdGlvbnM6IElDaGFydENvbXBvbmVudE9wdGlvbnMpOiBJZ3hEYXRhQ2hhcnRDb21wb25lbnQge1xyXG4gICAgICAgIG9wdGlvbnMuc2VyaWVzT3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2VyaWVzID0gdGhpcy5zZXJpZXNGYWN0b3J5LmNyZWF0ZSh0aGlzLnNlcmllc1R5cGUpO1xyXG4gICAgICAgICAgICBzZXJpZXMueEF4aXMgPSB0aGlzLnhBeGlzO1xyXG4gICAgICAgICAgICBzZXJpZXMueUF4aXMgPSB0aGlzLnlBeGlzO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhzZXJpZXMsIG9wdGlvbik7XHJcbiAgICAgICAgICAgIGNoYXJ0LnNlcmllcy5hZGQoc2VyaWVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhjaGFydCwgb3B0aW9ucy5jaGFydE9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlPcHRpb25zKHRoaXMueEF4aXMsIG9wdGlvbnMueEF4aXNPcHRpb25zKTtcclxuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyh0aGlzLnlBeGlzLCBvcHRpb25zLnlBeGlzT3B0aW9ucyk7XHJcbiAgICAgICAgY2hhcnQuYXhlcy5hZGQodGhpcy54QXhpcyk7XHJcbiAgICAgICAgY2hhcnQuYXhlcy5hZGQodGhpcy55QXhpcyk7XHJcbiAgICAgICAgcmV0dXJuIGNoYXJ0O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSWd4U3RhY2tlZERhdGFDaGFydEluaXRpYWxpemVyIGV4dGVuZHMgQ2hhcnRJbml0aWFsaXplciB7XHJcbiAgICBwdWJsaWMgc2VyaWVzVHlwZTogVHlwZTxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHNlcmllc1R5cGU6IFR5cGU8YW55Pikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgaWYgKHNlcmllc1R5cGUgPT09IElneFN0YWNrZWRCYXJTZXJpZXNDb21wb25lbnQgfHwgc2VyaWVzVHlwZSA9PT0gSWd4U3RhY2tlZDEwMEJhclNlcmllc0NvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnhBeGlzID0gbmV3IElneE51bWVyaWNYQXhpc0NvbXBvbmVudCgpO1xyXG4gICAgICAgICAgICB0aGlzLnlBeGlzID0gbmV3IElneENhdGVnb3J5WUF4aXNDb21wb25lbnQoKTtcclxuICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy54QXhpcyA9IG5ldyBJZ3hDYXRlZ29yeVhBeGlzQ29tcG9uZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMueUF4aXMgPSBuZXcgSWd4TnVtZXJpY1lBeGlzQ29tcG9uZW50KCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlcmllc1R5cGUgPSBzZXJpZXNUeXBlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGluaXRDaGFydChjaGFydDogSWd4RGF0YUNoYXJ0Q29tcG9uZW50LCBvcHRpb25zPzogSUNoYXJ0Q29tcG9uZW50T3B0aW9ucyk6IElneERhdGFDaGFydENvbXBvbmVudCB7XHJcbiAgICAgICAgY29uc3Qgc2VyaWVzID0gdGhpcy5zZXJpZXNGYWN0b3J5LmNyZWF0ZSh0aGlzLnNlcmllc1R5cGUpO1xyXG4gICAgICAgIHNlcmllcy54QXhpcyA9IHRoaXMueEF4aXM7XHJcbiAgICAgICAgc2VyaWVzLnlBeGlzID0gdGhpcy55QXhpcztcclxuICAgICAgICBvcHRpb25zLnN0YWNrZWRGcmFnbWVudE9wdGlvbnMuZm9yRWFjaChmcmFnT3B0ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZnJhZyA9IG5ldyBJZ3hTdGFja2VkRnJhZ21lbnRTZXJpZXNDb21wb25lbnQoKTtcclxuICAgICAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoZnJhZywgZnJhZ09wdCk7XHJcbiAgICAgICAgICAgIHNlcmllcy5zZXJpZXMuYWRkKGZyYWcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwbHlPcHRpb25zKHNlcmllcywgb3B0aW9ucy5zZXJpZXNPcHRpb25zKTtcclxuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhjaGFydCwgb3B0aW9ucy5jaGFydE9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuYXBwbHlPcHRpb25zKHRoaXMueEF4aXMsIG9wdGlvbnMueEF4aXNPcHRpb25zKTtcclxuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyh0aGlzLnlBeGlzLCBvcHRpb25zLnlBeGlzT3B0aW9ucyk7XHJcbiAgICAgICAgY2hhcnQuc2VyaWVzLmFkZChzZXJpZXMpO1xyXG4gICAgICAgIGNoYXJ0LmF4ZXMuYWRkKHRoaXMueEF4aXMpO1xyXG4gICAgICAgIGNoYXJ0LmF4ZXMuYWRkKHRoaXMueUF4aXMpO1xyXG4gICAgICAgIHJldHVybiBjaGFydDtcclxuICAgIH1cclxufVxyXG4iXX0=
|