igniteui-angular-extras 16.1.0 → 17.0.1

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.
Files changed (29) hide show
  1. package/esm2022/igniteui-angular-extras.mjs +4 -4
  2. package/esm2022/images/charts.mjs +17 -17
  3. package/esm2022/images/conditions.mjs +11 -11
  4. package/esm2022/lib/context-menu/chart-dialog/chart-dialog.component.mjs +67 -67
  5. package/esm2022/lib/context-menu/context-menu.component.mjs +176 -176
  6. package/esm2022/lib/context-menu/igx-context-menu.directive.mjs +154 -154
  7. package/esm2022/lib/directives/chart-integration/chart-integration.directive.mjs +312 -312
  8. package/esm2022/lib/directives/chart-integration/chart-types.mjs +27 -27
  9. package/esm2022/lib/directives/chart-integration/initializers.mjs +102 -102
  10. package/esm2022/lib/directives/conditional-formatting/conditional-formatting.directive.mjs +303 -303
  11. package/esm2022/lib/igniteui-angular-extras.module.mjs +107 -107
  12. package/esm2022/lib/pipes/svg.pipe.mjs +19 -19
  13. package/esm2022/public-api.mjs +20 -20
  14. package/fesm2022/igniteui-angular-extras.mjs +1228 -1228
  15. package/fesm2022/igniteui-angular-extras.mjs.map +1 -1
  16. package/images/charts.d.ts +16 -16
  17. package/images/conditions.d.ts +10 -10
  18. package/index.d.ts +5 -5
  19. package/lib/context-menu/chart-dialog/chart-dialog.component.d.ts +31 -31
  20. package/lib/context-menu/context-menu.component.d.ts +37 -37
  21. package/lib/context-menu/igx-context-menu.directive.d.ts +33 -33
  22. package/lib/directives/chart-integration/chart-integration.directive.d.ts +52 -52
  23. package/lib/directives/chart-integration/chart-types.d.ts +25 -25
  24. package/lib/directives/chart-integration/initializers.d.ts +39 -39
  25. package/lib/directives/conditional-formatting/conditional-formatting.directive.d.ts +95 -95
  26. package/lib/igniteui-angular-extras.module.d.ts +15 -15
  27. package/lib/pipes/svg.pipe.d.ts +10 -10
  28. package/package.json +6 -6
  29. 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=