ca-components 1.0.43 → 1.0.45
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/components/ca-burger-menu/ca-burger-menu.component.mjs +3 -3
- package/esm2022/lib/components/ca-chart/ca-chart.component.mjs +33 -7
- package/esm2022/lib/components/ca-chart/models/chart-base-dataset.model.mjs +1 -1
- package/esm2022/lib/components/ca-chart/models/chart-config.model.mjs +1 -1
- package/esm2022/lib/components/ca-chart/utils/helpers/chart.helper.mjs +41 -14
- package/esm2022/lib/components/ca-dropdown/ca-dropdown.component.mjs +3 -3
- package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +3 -3
- package/esm2022/lib/components/ca-right-side-panel/ca-right-side-panel.component.mjs +38 -9
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-company/ca-right-side-panel-company.component.mjs +18 -15
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +29 -4
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.mjs +43 -24
- package/esm2022/lib/components/ca-right-side-panel/models/navigation-item.model.mjs +1 -1
- package/fesm2022/ca-components.mjs +202 -73
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/components/ca-chart/models/chart-base-dataset.model.d.ts +7 -1
- package/lib/components/ca-chart/models/chart-config.model.d.ts +2 -0
- package/lib/components/ca-chart/utils/helpers/chart.helper.d.ts +2 -0
- package/lib/components/ca-right-side-panel/ca-right-side-panel.component.d.ts +9 -4
- package/lib/components/ca-right-side-panel/components/ca-right-side-panel-company/ca-right-side-panel-company.component.d.ts +5 -5
- package/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.d.ts +5 -2
- package/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.d.ts +10 -8
- package/lib/components/ca-right-side-panel/models/navigation-item.model.d.ts +1 -0
- package/package.json +1 -1
- package/src/assets/ca-components/svg/right-side-panel/ic_delete.svg +4 -0
|
@@ -71,9 +71,27 @@ export class CaChartComponent {
|
|
|
71
71
|
this.setChartOptionsProperties();
|
|
72
72
|
this.setChartDataProperties();
|
|
73
73
|
this.setChartPluginsProperties();
|
|
74
|
+
const yAxis = this._chartConfig.chartOptions.scales?.['y-axis-0'];
|
|
75
|
+
const max = Number(yAxis?.max) || 0;
|
|
76
|
+
const min = Number(yAxis?.min) || 0.01;
|
|
74
77
|
this.chart = new Chart(this.chartContext, {
|
|
75
78
|
type: this._chartConfig.chartType,
|
|
76
|
-
data:
|
|
79
|
+
data: {
|
|
80
|
+
...this._chartConfig.chartData,
|
|
81
|
+
datasets: this._chartConfig.chartData.datasets.map((item) => {
|
|
82
|
+
item.shiftValue;
|
|
83
|
+
return {
|
|
84
|
+
...item,
|
|
85
|
+
backgroundColor: item?.color1 && item?.color2 ?
|
|
86
|
+
ChartHelper.createCustomGradient(this.chartContext, this.chartCanvas, item?.color1, item?.color2,
|
|
87
|
+
// TODO adjust, have this param something like this:
|
|
88
|
+
item.shiftValue ?
|
|
89
|
+
ChartHelper.normalize(item.shiftValue, min, max) :
|
|
90
|
+
0) : item?.color1,
|
|
91
|
+
fill: item?.fill || false
|
|
92
|
+
};
|
|
93
|
+
})
|
|
94
|
+
},
|
|
77
95
|
options: this._chartConfig.chartOptions,
|
|
78
96
|
plugins: this.plugins,
|
|
79
97
|
});
|
|
@@ -169,26 +187,34 @@ export class CaChartComponent {
|
|
|
169
187
|
];
|
|
170
188
|
}
|
|
171
189
|
setMultipleYAxis(chartData) {
|
|
190
|
+
let absoluteMax;
|
|
172
191
|
chartData.datasets.forEach((dataset, index) => {
|
|
173
192
|
if (dataset.type == "line" /* ChartTypesStringEnum.LINE */ ||
|
|
174
193
|
dataset.type == "bar" /* ChartTypesStringEnum.BAR */) {
|
|
175
|
-
const yAxisID =
|
|
194
|
+
const yAxisID = this._chartConfig.isMultiYAxis ?
|
|
195
|
+
`y-axis-${index}` :
|
|
196
|
+
dataset.yAxisId ||
|
|
197
|
+
'y-axis-0';
|
|
176
198
|
chartData.datasets[index] = {
|
|
177
199
|
...dataset,
|
|
178
200
|
yAxisID,
|
|
179
201
|
};
|
|
180
202
|
const minValue = ChartHelper.calculateMinValue(dataset.data);
|
|
181
203
|
const maxValue = ChartHelper.calculateMaxValue(dataset.data);
|
|
204
|
+
if (!absoluteMax || maxValue > absoluteMax)
|
|
205
|
+
absoluteMax = maxValue;
|
|
182
206
|
const padding = maxValue * 0.03;
|
|
183
|
-
const
|
|
184
|
-
const
|
|
207
|
+
const minValueAdjusted = padding == 0 ? minValue + 0.1 : 0;
|
|
208
|
+
const maxValueAdjusted = absoluteMax + padding;
|
|
185
209
|
this._chartConfig.chartOptions.scales = {
|
|
186
210
|
...this._chartConfig.chartOptions.scales,
|
|
187
211
|
[yAxisID]: {
|
|
188
212
|
display: false,
|
|
189
213
|
beginAtZero: true,
|
|
190
|
-
min:
|
|
191
|
-
max:
|
|
214
|
+
min: minValueAdjusted,
|
|
215
|
+
max: maxValueAdjusted,
|
|
216
|
+
// Ovo je jako bitno, moramo ovu osu sa stacked parametrom namjestiti
|
|
217
|
+
stacked: this._chartConfig.isStacked,
|
|
192
218
|
},
|
|
193
219
|
};
|
|
194
220
|
}
|
|
@@ -208,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
208
234
|
}], isDatasetHovered: [{
|
|
209
235
|
type: Input
|
|
210
236
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvY2EtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvY2EtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU87QUFDUCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUV4Qiw0QkFBNEIsRUFDNUIseUJBQXlCLEdBQzFCLE1BQU0sU0FBUyxDQUFDO0FBRWpCLFNBQVM7QUFDVCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsUUFBUTtBQUNSLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtoRCxRQUFRO0FBQ1IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBU3BELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsSUFBYSxXQUFXLENBQUMsS0FBMkI7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFD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O3dCQUNkLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixHQUFHLEVBQUUsZUFBZTt3QkFDcEIsR0FBRyxFQUFFLGVBQWU7cUJBQ3JCO2lCQUNGLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0EzUFUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsdVJDaEQ3Qixnb0JBeUJBLDhHRHFCWSxZQUFZLHVOQUFFLG9CQUFvQjs7NEZBRWpDLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxjQUFjLGNBR1osSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDOzBFQUduQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBRVgsV0FBVztzQkFBdkIsS0FBSztnQkFNTyxnQkFBZ0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENhdGVnb3J5U2NhbGUsXG4gIENoYXJ0LFxuICBDaGFydFR5cGUsXG4gIExpbmVhclNjYWxlLFxuICBQbHVnaW4sXG59IGZyb20gJ2NoYXJ0LmpzL2F1dG8nO1xuaW1wb3J0IHsgQW55T2JqZWN0IH0gZnJvbSAnY2hhcnQuanMvZGlzdC90eXBlcy9iYXNpYyc7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG4vL0VudW1zXG5pbXBvcnQge1xuICBDaGFydENvbG9yc1N0cmluZ0VudW0sXG4gIENoYXJ0RXZlbnRQcm9wZXJ0aWVzLFxuICBDaGFydFBsdWdpbklkc1N0cmluZ0VudW0sXG4gIENoYXJ0VHlwZXNTdHJpbmdFbnVtLFxuICBDdWJpY0ludGVycG9sYXRpb25TdHJpbmdFbnVtLFxuICBDaGFydEV2ZW50VHlwZXNTdHJpbmdFbnVtLFxufSBmcm9tICcuL2VudW1zJztcblxuLy9IZWxwZXJzXG5pbXBvcnQgeyBDaGFydEhlbHBlciB9IGZyb20gJy4vdXRpbHMvaGVscGVycyc7XG5cbi8vR3VhcmRzXG5pbXBvcnQgeyBDaGFydFR5cGVHdWFyZCB9IGZyb20gJy4vdXRpbHMvZ3VhcmRzJztcblxuLy9Nb2RlbHNcbmltcG9ydCB7IElDaGFydERhdGEsIElMaW5lRGF0YXNldCwgSUNoYXJ0Q29uZmlndWFyYXRpb24gfSBmcm9tICcuL21vZGVscyc7XG5cbi8vQ29uZmlnXG5pbXBvcnQgeyBDYUJhc2VDaGFydERhdGFzZXRDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jYS1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFuZ3VsYXJTdmdJY29uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdjaGFydENhbnZhcycpIGNoYXJ0Q2FudmFzITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBzZXQgY2hhcnRDb25maWcodmFsdWU6IElDaGFydENvbmZpZ3VhcmF0aW9uKSB7XG4gICAgdGhpcy5fY2hhcnRDb25maWcgPSB2YWx1ZTtcbiAgICB0aGlzLmlzQ2hhcnREYXRhQXZhaWxhYmxlID0gdGhpcy5fY2hhcnRDb25maWcuY2hhcnREYXRhLmRhdGFzZXRzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvL2ZvciB0ZXN0aW5nIGhvdmVyIHN0YXRlIG9uIGRhdGFzZXRcbiAgQElucHV0KCkgc2V0IGlzRGF0YXNldEhvdmVyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0RhdGFzZXRIb3ZlcmVkID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgIHRoaXMudXBkYXRlRGF0YXNldEJhY2tncm91bmRPbkhvdmVyKFxuICAgICAgICAnU2FsZXMnLFxuICAgICAgICAnIzY2OTJGMScsXG4gICAgICAgIHRoaXMuX2lzRGF0YXNldEhvdmVyZWRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGFydCE6IENoYXJ0O1xuICBwcml2YXRlIGNoYXJ0Q29udGV4dCE6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgcHJpdmF0ZSBwbHVnaW5zPzogUGx1Z2luPENoYXJ0VHlwZSwgQW55T2JqZWN0PltdO1xuICBwcml2YXRlIF9pc0RhdGFzZXRIb3ZlcmVkITogYm9vbGVhbjtcbiAgcHJpdmF0ZSBvcmlnaW5hbENoYXJ0RGF0YXNldCA9XG4gICAgQ2FCYXNlQ2hhcnREYXRhc2V0Q29uZmlnLmdldEJhc2VDaGFydERhdGFzZXRDb25maWcoKTtcblxuICBwdWJsaWMgX2NoYXJ0Q29uZmlnITogSUNoYXJ0Q29uZmlndWFyYXRpb247XG4gIHB1YmxpYyBpc0NoYXJ0RGF0YUF2YWlsYWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pc0NoYXJ0RGF0YUF2YWlsYWJsZSAmJlxuICAgICAgIWNoYW5nZXNbJ2NoYXJ0Q29uZmlnJ10uZmlyc3RDaGFuZ2VcbiAgICApXG4gICAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDaGFydERhdGFBdmFpbGFibGUpXG4gICAgICB0aGlzLmNyZWF0ZUNoYXJ0KCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YXNldEJhY2tncm91bmRPbkhvdmVyKFxuICAgIGRhdGFTZXRMYWJlbDogc3RyaW5nLFxuICAgIGNvbG9yOiBzdHJpbmcsXG4gICAgaXNEYXRhc2V0SG92ZXJlZDogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNEYXRhc2V0SG92ZXJlZCkge1xuICAgICAgdGhpcy5vcmlnaW5hbENoYXJ0RGF0YXNldCA9IEpTT04ucGFyc2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cylcbiAgICAgICk7XG4gICAgICBjb25zdCBncmFkaWVudCA9IENoYXJ0SGVscGVyLmNyZWF0ZUdyYWRpZW50KFxuICAgICAgICB0aGlzLmNoYXJ0Q29udGV4dCxcbiAgICAgICAgdGhpcy5jaGFydENhbnZhcyxcbiAgICAgICAgY29sb3IsXG4gICAgICAgIGNvbG9yXG4gICAgICApO1xuICAgICAgdGhpcy5fY2hhcnRDb25maWcuY2hhcnREYXRhLmRhdGFzZXRzID1cbiAgICAgICAgdGhpcy5fY2hhcnRDb25maWcuY2hhcnREYXRhLmRhdGFzZXRzLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgICAgIGlmIChkYXRhc2V0LmxhYmVsID09PSBkYXRhU2V0TGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmRhdGFzZXQsXG4gICAgICAgICAgICAgIGZpbGw6IHRydWUsXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JhZGllbnQsXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBjb2xvcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGJvcmRlckNvbG9yV2l0aE9wYWNpdHkgPSBDaGFydEhlbHBlci5yZ2JUb1JnYmEoXG4gICAgICAgICAgICAgIGRhdGFzZXQuYm9yZGVyQ29sb3IsXG4gICAgICAgICAgICAgIDAuMlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmRhdGFzZXQsXG4gICAgICAgICAgICAgIGZpbGw6IGZhbHNlLFxuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3JXaXRoT3BhY2l0eSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2VcbiAgICAgIHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cyA9IEpTT04ucGFyc2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxDaGFydERhdGFzZXQpXG4gICAgICApO1xuXG4gICAgdGhpcy5jaGFydC51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2hhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFydENvbnRleHQgPSB0aGlzLmNoYXJ0Q2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICB0aGlzLnNldENoYXJ0T3B0aW9uc1Byb3BlcnRpZXMoKTtcbiAgICB0aGlzLnNldENoYXJ0RGF0YVByb3BlcnRpZXMoKTtcbiAgICB0aGlzLnNldENoYXJ0UGx1Z2luc1Byb3BlcnRpZXMoKTtcblxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jaGFydENvbnRleHQsIHtcbiAgICAgIHR5cGU6IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0VHlwZSxcbiAgICAgIGRhdGE6IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0T3B0aW9ucyxcbiAgICAgIHBsdWdpbnM6IHRoaXMucGx1Z2lucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY3JlYXRlQ2hhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnRPcHRpb25zUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFydENvbmZpZy5jaGFydE9wdGlvbnMgPSB7XG4gICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICBjbGlwOiBmYWxzZSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHg6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICBvZmZzZXQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHk6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDaGFydERhdGFQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5fY2hhcnRDb25maWcuY2hhcnRUeXBlID0gQ2hhcnRUeXBlc1N0cmluZ0VudW0uTElORSkpIHtcbiAgICAgIHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0KSA9PiB7XG4gICAgICAgIGlmIChDaGFydFR5cGVHdWFyZC5pc0xpbmVEYXRhc2V0KGRhdGFzZXQpKSB7XG4gICAgICAgICAgZGF0YXNldC50ZW5zaW9uID0gZGF0YXNldC50ZW5zaW9uID8/IDAuNTtcbiAgICAgICAgICBkYXRhc2V0LmN1YmljSW50ZXJwb2xhdGlvbk1vZGUgPVxuICAgICAgICAgICAgZGF0YXNldC5jdWJpY0ludGVycG9sYXRpb25Nb2RlID8/XG4gICAgICAgICAgICBDdWJpY0ludGVycG9sYXRpb25TdHJpbmdFbnVtLk1PTk9UT05FO1xuXG4gICAgICAgICAgZGF0YXNldC5wb2ludEJvcmRlckNvbG9yID1cbiAgICAgICAgICAgIGRhdGFzZXQucG9pbnRCb3JkZXJDb2xvciA/PyBDaGFydENvbG9yc1N0cmluZ0VudW0uVFJBTlNQQVJFTlQ7XG4gICAgICAgICAgZGF0YXNldC5wb2ludEJhY2tncm91bmRDb2xvciA9XG4gICAgICAgICAgICBkYXRhc2V0LnBvaW50QmFja2dyb3VuZENvbG9yID8/IENoYXJ0Q29sb3JzU3RyaW5nRW51bS5UUkFOU1BBUkVOVDtcbiAgICAgICAgICBkYXRhc2V0LnBvaW50Qm9yZGVyV2lkdGggPSBkYXRhc2V0LnBvaW50Qm9yZGVyV2lkdGggPz8gMjtcbiAgICAgICAgICBkYXRhc2V0LnNwYW5HYXBzID0gZGF0YXNldC5zcGFuR2FwcyA/PyBmYWxzZTtcbiAgICAgICAgICBkYXRhc2V0LnNob3dMaW5lID0gZGF0YXNldC5zaG93TGluZSA/PyB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TXVsdGlwbGVZQXhpcyh0aGlzLl9jaGFydENvbmZpZy5jaGFydERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnRQbHVnaW5zUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICBsZXQgaG92ZXJlZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHRoaXMucGx1Z2lucyA9IFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IENoYXJ0UGx1Z2luSWRzU3RyaW5nRW51bS5ISUdITElHSFRfU0VHTUVOVF9PTl9IT1ZFUixcbiAgICAgICAgYWZ0ZXJFdmVudDogKGNoYXJ0LCBldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQuZXZlbnQubmF0aXZlIGFzIE1vdXNlRXZlbnQ7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5ldmVudC50eXBlID09PSBDaGFydEV2ZW50VHlwZXNTdHJpbmdFbnVtLk1PVVNFX09VVCAmJlxuICAgICAgICAgICAgaG92ZXJlZEluZGV4ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBob3ZlcmVkSW5kZXggPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jaGFydC5kcmF3KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbW91c2VIb3Jpem9udGFsQ29vcmRpbmF0ZSA9IG5hdGl2ZUV2ZW50W0NoYXJ0RXZlbnRQcm9wZXJ0aWVzLlhdO1xuICAgICAgICAgIGNvbnN0IHhTY2FsZSA9IHRoaXMuY2hhcnQuc2NhbGVzW0NoYXJ0RXZlbnRQcm9wZXJ0aWVzLlhdIGFzXG4gICAgICAgICAgICB8IENhdGVnb3J5U2NhbGVcbiAgICAgICAgICAgIHwgTGluZWFyU2NhbGU7XG4gICAgICAgICAgY29uc3QgdGlja1Bvc2l0aW9ucyA9IENoYXJ0SGVscGVyLmNhbGN1bGF0ZVRpY2tQb3NpdGlvbnMoeFNjYWxlKTtcbiAgICAgICAgICBjb25zdCBuZXdIb3ZlcmVkSW5kZXggPSB0aWNrUG9zaXRpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICh0aWNrUG9zKSA9PlxuICAgICAgICAgICAgICBtb3VzZUhvcml6b250YWxDb29yZGluYXRlID5cbiAgICAgICAgICAgICAgdGlja1BvcyAtICh0aWNrUG9zaXRpb25zWzFdIC0gdGlja1Bvc2l0aW9uc1swXSkgLyAyICYmXG4gICAgICAgICAgICAgIG1vdXNlSG9yaXpvbnRhbENvb3JkaW5hdGUgPD1cbiAgICAgICAgICAgICAgdGlja1BvcyArICh0aWNrUG9zaXRpb25zWzFdIC0gdGlja1Bvc2l0aW9uc1swXSkgLyAyXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChuZXdIb3ZlcmVkSW5kZXggIT09IGhvdmVyZWRJbmRleCkge1xuICAgICAgICAgICAgaG92ZXJlZEluZGV4ID0gbmV3SG92ZXJlZEluZGV4ID09PSAtMSA/IG51bGwgOiBuZXdIb3ZlcmVkSW5kZXg7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LmRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZURyYXc6ICgpID0+IHtcbiAgICAgICAgICBpZiAoaG92ZXJlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGNoYXJ0QXJlYSxcbiAgICAgICAgICAgICAgc2NhbGVzOiB7IHg6IHhTY2FsZSB9LFxuICAgICAgICAgICAgfSA9IHRoaXMuY2hhcnQ7XG4gICAgICAgICAgICBDaGFydEhlbHBlci5oaWdobGlnaHRTZWdtZW50KFxuICAgICAgICAgICAgICB0aGlzLmNoYXJ0Q29udGV4dCxcbiAgICAgICAgICAgICAgeFNjYWxlIGFzIENhdGVnb3J5U2NhbGUgfCBMaW5lYXJTY2FsZSxcbiAgICAgICAgICAgICAgY2hhcnRBcmVhLFxuICAgICAgICAgICAgICB0aGlzLl9jaGFydENvbmZpZy5oZWlnaHQsXG4gICAgICAgICAgICAgIGhvdmVyZWRJbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogQ2hhcnRQbHVnaW5JZHNTdHJpbmdFbnVtLkhJR0hMSUdIVF9QT0lOVF9PTl9IT1ZFUixcbiAgICAgICAgYWZ0ZXJEcmF3OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGhvdmVyZWRJbmRleCAhPT0gbnVsbClcbiAgICAgICAgICAgIENoYXJ0SGVscGVyLmhpZ2hsaWdodFBvaW50KFxuICAgICAgICAgICAgICB0aGlzLmNoYXJ0Q29udGV4dCxcbiAgICAgICAgICAgICAgdGhpcy5jaGFydCxcbiAgICAgICAgICAgICAgaG92ZXJlZEluZGV4LFxuICAgICAgICAgICAgICB0aGlzLl9jaGFydENvbmZpZy5jaGFydERhdGFcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHNldE11bHRpcGxlWUF4aXMoY2hhcnREYXRhOiBJQ2hhcnREYXRhPElMaW5lRGF0YXNldD4pOiB2b2lkIHtcbiAgICBjaGFydERhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZGF0YXNldC50eXBlID09IENoYXJ0VHlwZXNTdHJpbmdFbnVtLkxJTkUgfHxcbiAgICAgICAgZGF0YXNldC50eXBlID09IENoYXJ0VHlwZXNTdHJpbmdFbnVtLkJBUlxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHlBeGlzSUQgPSBgeS1heGlzLSR7aW5kZXh9YDtcbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2luZGV4XSA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LFxuICAgICAgICAgIHlBeGlzSUQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1pblZhbHVlID0gQ2hhcnRIZWxwZXIuY2FsY3VsYXRlTWluVmFsdWUoZGF0YXNldC5kYXRhKTtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBDaGFydEhlbHBlci5jYWxjdWxhdGVNYXhWYWx1ZShkYXRhc2V0LmRhdGEpO1xuICAgICAgICBjb25zdCBwYWRkaW5nID0gbWF4VmFsdWUgKiAwLjAzO1xuICAgICAgICBjb25zdCBtaW5WYWx1ZUFqdXN0ZWQgPSBwYWRkaW5nID09IDAgPyBtaW5WYWx1ZSArIDAuMSA6IDA7XG4gICAgICAgIGNvbnN0IG1heFZhbHVlQWp1c3RlZCA9IG1heFZhbHVlICsgcGFkZGluZztcblxuICAgICAgICB0aGlzLl9jaGFydENvbmZpZy5jaGFydE9wdGlvbnMuc2NhbGVzID0ge1xuICAgICAgICAgIC4uLnRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0T3B0aW9ucy5zY2FsZXMsXG4gICAgICAgICAgW3lBeGlzSURdOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLFxuICAgICAgICAgICAgbWluOiBtaW5WYWx1ZUFqdXN0ZWQsXG4gICAgICAgICAgICBtYXg6IG1heFZhbHVlQWp1c3RlZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDaGFydERhdGFBdmFpbGFibGU7IGVsc2Ugbm9EYXRhVGVtcGxhdGVcIj5cbiAgPGRpdlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGhlaWdodDogX2NoYXJ0Q29uZmlnLmhlaWdodCArICdweCcsXG4gICAgICB3aWR0aDogX2NoYXJ0Q29uZmlnLndpZHRoICsgJyUnLFxuICAgIH1cIlxuICA+XG4gICAgPGNhbnZhcyAjY2hhcnRDYW52YXM+IDwvY2FudmFzPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICBoZWlnaHQ6IF9jaGFydENvbmZpZy5oZWlnaHQgKyAncHgnLFxuICAgICAgd2lkdGg6IF9jaGFydENvbmZpZy53aWR0aCArICclJyxcbiAgICB9XCJcbiAgPlxuICAgIDxzdmctaWNvblxuICAgICAgW3NyY109XCJfY2hhcnRDb25maWcubm9EYXRhSW1hZ2VcIlxuICAgICAgYWx0PVwiTm8gZGF0YSBhdmFpbGFibGVcIlxuICAgICAgY2xhc3M9XCJuby1kYXRhLXN2Z1wiXG4gICAgPjwvc3ZnLWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvY2EtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvY2EtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU87QUFDUCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUV4Qiw0QkFBNEIsRUFDNUIseUJBQXlCLEdBQzFCLE1BQU0sU0FBUyxDQUFDO0FBRWpCLFNBQVM7QUFDVCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsUUFBUTtBQUNSLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVVoRCxRQUFRO0FBQ1IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBVXBELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsSUFBYSxXQUFXLENBQUMsS0FBMkI7UUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFD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QUFDLE1BQU07b0JBQ3hDLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ1QsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLEdBQUcsRUFBRSxnQkFBZ0I7d0JBQ3JCLEdBQUcsRUFBRSxnQkFBZ0I7d0JBQ3JCLHFFQUFxRTt3QkFDckUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUztxQkFDckM7aUJBQ0YsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdSVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQix1UkN0RDdCLGdvQkF5QkEsOEdEMkJZLFlBQVksdU5BQUUsb0JBQW9COzs0RkFFakMsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGNBQWMsY0FHWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUM7MEVBR25CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFFWCxXQUFXO3NCQUF2QixLQUFLO2dCQU1PLGdCQUFnQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnlTY2FsZSxcbiAgQ2hhcnQsXG4gIENoYXJ0VHlwZSxcbiAgTGluZWFyU2NhbGUsXG4gIFBsdWdpbixcbn0gZnJvbSAnY2hhcnQuanMvYXV0byc7XG5pbXBvcnQgeyBBbnlPYmplY3QgfSBmcm9tICdjaGFydC5qcy9kaXN0L3R5cGVzL2Jhc2ljJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vRW51bXNcbmltcG9ydCB7XG4gIENoYXJ0Q29sb3JzU3RyaW5nRW51bSxcbiAgQ2hhcnRFdmVudFByb3BlcnRpZXMsXG4gIENoYXJ0UGx1Z2luSWRzU3RyaW5nRW51bSxcbiAgQ2hhcnRUeXBlc1N0cmluZ0VudW0sXG4gIEN1YmljSW50ZXJwb2xhdGlvblN0cmluZ0VudW0sXG4gIENoYXJ0RXZlbnRUeXBlc1N0cmluZ0VudW0sXG59IGZyb20gJy4vZW51bXMnO1xuXG4vL0hlbHBlcnNcbmltcG9ydCB7IENoYXJ0SGVscGVyIH0gZnJvbSAnLi91dGlscy9oZWxwZXJzJztcblxuLy9HdWFyZHNcbmltcG9ydCB7IENoYXJ0VHlwZUd1YXJkIH0gZnJvbSAnLi91dGlscy9ndWFyZHMnO1xuXG4vL01vZGVsc1xuaW1wb3J0IHtcbiAgSUNoYXJ0RGF0YSxcbiAgSUxpbmVEYXRhc2V0LFxuICBJQ2hhcnRDb25maWd1YXJhdGlvbixcbiAgSUJhc2VEYXRhc2V0XG59IGZyb20gJy4vbW9kZWxzJztcblxuLy9Db25maWdcbmltcG9ydCB7IENhQmFzZUNoYXJ0RGF0YXNldENvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2EtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2EtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS1jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBbmd1bGFyU3ZnSWNvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENhQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnY2hhcnRDYW52YXMnKSBjaGFydENhbnZhcyE6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgc2V0IGNoYXJ0Q29uZmlnKHZhbHVlOiBJQ2hhcnRDb25maWd1YXJhdGlvbikge1xuICAgIHRoaXMuX2NoYXJ0Q29uZmlnID0gdmFsdWU7XG4gICAgdGhpcy5pc0NoYXJ0RGF0YUF2YWlsYWJsZSA9IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cy5sZW5ndGggPiAwO1xuICB9XG5cbiAgLy9mb3IgdGVzdGluZyBob3ZlciBzdGF0ZSBvbiBkYXRhc2V0XG4gIEBJbnB1dCgpIHNldCBpc0RhdGFzZXRIb3ZlcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNEYXRhc2V0SG92ZXJlZCA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGFzZXRCYWNrZ3JvdW5kT25Ib3ZlcihcbiAgICAgICAgJ1NhbGVzJyxcbiAgICAgICAgJyM2NjkyRjEnLFxuICAgICAgICB0aGlzLl9pc0RhdGFzZXRIb3ZlcmVkXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhcnQhOiBDaGFydDtcbiAgcHJpdmF0ZSBjaGFydENvbnRleHQhOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIHByaXZhdGUgcGx1Z2lucz86IFBsdWdpbjxDaGFydFR5cGUsIEFueU9iamVjdD5bXTtcbiAgcHJpdmF0ZSBfaXNEYXRhc2V0SG92ZXJlZCE6IGJvb2xlYW47XG4gIHByaXZhdGUgb3JpZ2luYWxDaGFydERhdGFzZXQgPVxuICAgIENhQmFzZUNoYXJ0RGF0YXNldENvbmZpZy5nZXRCYXNlQ2hhcnREYXRhc2V0Q29uZmlnKCk7XG5cbiAgcHVibGljIF9jaGFydENvbmZpZyE6IElDaGFydENvbmZpZ3VhcmF0aW9uO1xuICBwdWJsaWMgaXNDaGFydERhdGFBdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaXNDaGFydERhdGFBdmFpbGFibGUgJiZcbiAgICAgICFjaGFuZ2VzWydjaGFydENvbmZpZyddLmZpcnN0Q2hhbmdlXG4gICAgKVxuICAgICAgdGhpcy51cGRhdGVDaGFydCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ2hhcnREYXRhQXZhaWxhYmxlKVxuICAgICAgdGhpcy5jcmVhdGVDaGFydCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGFzZXRCYWNrZ3JvdW5kT25Ib3ZlcihcbiAgICBkYXRhU2V0TGFiZWw6IHN0cmluZyxcbiAgICBjb2xvcjogc3RyaW5nLFxuICAgIGlzRGF0YXNldEhvdmVyZWQ6IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgaWYgKGlzRGF0YXNldEhvdmVyZWQpIHtcbiAgICAgIHRoaXMub3JpZ2luYWxDaGFydERhdGFzZXQgPSBKU09OLnBhcnNlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLl9jaGFydENvbmZpZy5jaGFydERhdGEuZGF0YXNldHMpXG4gICAgICApO1xuICAgICAgY29uc3QgZ3JhZGllbnQgPSBDaGFydEhlbHBlci5jcmVhdGVHcmFkaWVudChcbiAgICAgICAgdGhpcy5jaGFydENvbnRleHQsXG4gICAgICAgIHRoaXMuY2hhcnRDYW52YXMsXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBjb2xvclxuICAgICAgKTtcbiAgICAgIHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cyA9XG4gICAgICAgIHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cy5tYXAoKGRhdGFzZXQpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YXNldC5sYWJlbCA9PT0gZGF0YVNldExhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5kYXRhc2V0LFxuICAgICAgICAgICAgICBmaWxsOiB0cnVlLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGdyYWRpZW50LFxuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogY29sb3IsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBib3JkZXJDb2xvcldpdGhPcGFjaXR5ID0gQ2hhcnRIZWxwZXIucmdiVG9SZ2JhKFxuICAgICAgICAgICAgICBkYXRhc2V0LmJvcmRlckNvbG9yLFxuICAgICAgICAgICAgICAwLjJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5kYXRhc2V0LFxuICAgICAgICAgICAgICBmaWxsOiBmYWxzZSxcbiAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IGJvcmRlckNvbG9yV2l0aE9wYWNpdHksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlXG4gICAgICB0aGlzLl9jaGFydENvbmZpZy5jaGFydERhdGEuZGF0YXNldHMgPSBKU09OLnBhcnNlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLm9yaWdpbmFsQ2hhcnREYXRhc2V0KVxuICAgICAgKTtcblxuICAgIHRoaXMuY2hhcnQudXBkYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYXJ0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnRDb250ZXh0ID0gdGhpcy5jaGFydENhbnZhcy5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XG4gICAgdGhpcy5zZXRDaGFydE9wdGlvbnNQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5zZXRDaGFydERhdGFQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5zZXRDaGFydFBsdWdpbnNQcm9wZXJ0aWVzKCk7XG5cbiAgICBjb25zdCB5QXhpcyA9IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0T3B0aW9ucy5zY2FsZXM/LlsneS1heGlzLTAnXTtcbiAgICBjb25zdCBtYXggPSBOdW1iZXIoeUF4aXM/Lm1heCkgfHwgMDtcbiAgICBjb25zdCBtaW4gPSBOdW1iZXIoeUF4aXM/Lm1pbikgfHwgMC4wMTtcblxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jaGFydENvbnRleHQsIHtcbiAgICAgIHR5cGU6IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0VHlwZSxcbiAgICAgIGRhdGE6XG4gICAgICB7XG4gICAgICAgIC4uLnRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YSxcbiAgICAgICAgZGF0YXNldHM6IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cy5tYXAoKGl0ZW06IElCYXNlRGF0YXNldCkgPT4ge1xuICAgICAgICAgIGl0ZW0uc2hpZnRWYWx1ZVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtPy5jb2xvcjEgJiYgaXRlbT8uY29sb3IyID9cbiAgICAgICAgICAgICAgQ2hhcnRIZWxwZXIuY3JlYXRlQ3VzdG9tR3JhZGllbnQoXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFydENvbnRleHQsXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFydENhbnZhcyxcbiAgICAgICAgICAgICAgICBpdGVtPy5jb2xvcjEsXG4gICAgICAgICAgICAgICAgaXRlbT8uY29sb3IyLFxuICAgICAgICAgICAgICAgIC8vIFRPRE8gYWRqdXN0LCBoYXZlIHRoaXMgcGFyYW0gc29tZXRoaW5nIGxpa2UgdGhpczpcbiAgICAgICAgICAgICAgICBpdGVtLnNoaWZ0VmFsdWUgP1xuICAgICAgICAgICAgICAgICAgQ2hhcnRIZWxwZXIubm9ybWFsaXplKGl0ZW0uc2hpZnRWYWx1ZSwgbWluLCBtYXgpIDpcbiAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICkgOiBpdGVtPy5jb2xvcjEsXG4gICAgICAgICAgICBmaWxsOiBpdGVtPy5maWxsIHx8IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0T3B0aW9ucyxcbiAgICAgIHBsdWdpbnM6IHRoaXMucGx1Z2lucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY3JlYXRlQ2hhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnRPcHRpb25zUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFydENvbmZpZy5jaGFydE9wdGlvbnMgPSB7XG4gICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICBjbGlwOiBmYWxzZSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHg6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICBvZmZzZXQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHk6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSxcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiAxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDaGFydERhdGFQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5fY2hhcnRDb25maWcuY2hhcnRUeXBlID0gQ2hhcnRUeXBlc1N0cmluZ0VudW0uTElORSkpIHtcbiAgICAgIHRoaXMuX2NoYXJ0Q29uZmlnLmNoYXJ0RGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0KSA9PiB7XG4gICAgICAgIGlmIChDaGFydFR5cGVHdWFyZC5pc0xpbmVEYXRhc2V0KGRhdGFzZXQpKSB7XG4gICAgICAgICAgZGF0YXNldC50ZW5zaW9uID0gZGF0YXNldC50ZW5zaW9uID8/IDAuNTtcbiAgICAgICAgICBkYXRhc2V0LmN1YmljSW50ZXJwb2xhdGlvbk1vZGUgPVxuICAgICAgICAgICAgZGF0YXNldC5jdWJpY0ludGVycG9sYXRpb25Nb2RlID8/XG4gICAgICAgICAgICBDdWJpY0ludGVycG9sYXRpb25TdHJpbmdFbnVtLk1PTk9UT05FO1xuICAgICAgICAgIGRhdGFzZXQucG9pbnRCb3JkZXJDb2xvciA9XG4gICAgICAgICAgICBkYXRhc2V0LnBvaW50Qm9yZGVyQ29sb3IgPz8gQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLlRSQU5TUEFSRU5UO1xuICAgICAgICAgIGRhdGFzZXQucG9pbnRCYWNrZ3JvdW5kQ29sb3IgPVxuICAgICAgICAgICAgZGF0YXNldC5wb2ludEJhY2tncm91bmRDb2xvciA/PyBDaGFydENvbG9yc1N0cmluZ0VudW0uVFJBTlNQQVJFTlQ7XG4gICAgICAgICAgZGF0YXNldC5wb2ludEJvcmRlcldpZHRoID0gZGF0YXNldC5wb2ludEJvcmRlcldpZHRoID8/IDI7XG4gICAgICAgICAgZGF0YXNldC5zcGFuR2FwcyA9IGRhdGFzZXQuc3BhbkdhcHMgPz8gZmFsc2U7XG4gICAgICAgICAgZGF0YXNldC5zaG93TGluZSA9IGRhdGFzZXQuc2hvd0xpbmUgPz8gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNldE11bHRpcGxlWUF4aXModGhpcy5fY2hhcnRDb25maWcuY2hhcnREYXRhKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENoYXJ0UGx1Z2luc1Byb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgbGV0IGhvdmVyZWRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICB0aGlzLnBsdWdpbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGlkOiBDaGFydFBsdWdpbklkc1N0cmluZ0VudW0uSElHSExJR0hUX1NFR01FTlRfT05fSE9WRVIsXG4gICAgICAgIGFmdGVyRXZlbnQ6IChjaGFydCwgZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50LmV2ZW50Lm5hdGl2ZSBhcyBNb3VzZUV2ZW50O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQuZXZlbnQudHlwZSA9PT0gQ2hhcnRFdmVudFR5cGVzU3RyaW5nRW51bS5NT1VTRV9PVVQgJiZcbiAgICAgICAgICAgIGhvdmVyZWRJbmRleCAhPT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaG92ZXJlZEluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQuZHJhdygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG1vdXNlSG9yaXpvbnRhbENvb3JkaW5hdGUgPSBuYXRpdmVFdmVudFtDaGFydEV2ZW50UHJvcGVydGllcy5YXTtcbiAgICAgICAgICBjb25zdCB4U2NhbGUgPSB0aGlzLmNoYXJ0LnNjYWxlc1tDaGFydEV2ZW50UHJvcGVydGllcy5YXSBhc1xuICAgICAgICAgICAgfCBDYXRlZ29yeVNjYWxlXG4gICAgICAgICAgICB8IExpbmVhclNjYWxlO1xuXG4gICAgICAgICAgY29uc3QgdGlja1Bvc2l0aW9ucyA9IENoYXJ0SGVscGVyLmNhbGN1bGF0ZVRpY2tQb3NpdGlvbnMoeFNjYWxlKTtcbiAgICAgICAgICBjb25zdCBuZXdIb3ZlcmVkSW5kZXggPSB0aWNrUG9zaXRpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICh0aWNrUG9zKSA9PlxuICAgICAgICAgICAgICBtb3VzZUhvcml6b250YWxDb29yZGluYXRlID5cbiAgICAgICAgICAgICAgdGlja1BvcyAtICh0aWNrUG9zaXRpb25zWzFdIC0gdGlja1Bvc2l0aW9uc1swXSkgLyAyICYmXG4gICAgICAgICAgICAgIG1vdXNlSG9yaXpvbnRhbENvb3JkaW5hdGUgPD1cbiAgICAgICAgICAgICAgdGlja1BvcyArICh0aWNrUG9zaXRpb25zWzFdIC0gdGlja1Bvc2l0aW9uc1swXSkgLyAyXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChuZXdIb3ZlcmVkSW5kZXggIT09IGhvdmVyZWRJbmRleCkge1xuICAgICAgICAgICAgaG92ZXJlZEluZGV4ID0gbmV3SG92ZXJlZEluZGV4ID09PSAtMSA/IG51bGwgOiBuZXdIb3ZlcmVkSW5kZXg7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LmRyYXcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGJlZm9yZURyYXc6ICgpID0+IHtcbiAgICAgICAgICBpZiAoaG92ZXJlZEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGNoYXJ0QXJlYSxcbiAgICAgICAgICAgICAgc2NhbGVzOiB7IHg6IHhTY2FsZSB9LFxuICAgICAgICAgICAgfSA9IHRoaXMuY2hhcnQ7XG4gICAgICAgICAgICBDaGFydEhlbHBlci5oaWdobGlnaHRTZWdtZW50KFxuICAgICAgICAgICAgICB0aGlzLmNoYXJ0Q29udGV4dCxcbiAgICAgICAgICAgICAgeFNjYWxlIGFzIENhdGVnb3J5U2NhbGUgfCBMaW5lYXJTY2FsZSxcbiAgICAgICAgICAgICAgY2hhcnRBcmVhLFxuICAgICAgICAgICAgICB0aGlzLl9jaGFydENvbmZpZy5oZWlnaHQsXG4gICAgICAgICAgICAgIGhvdmVyZWRJbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogQ2hhcnRQbHVnaW5JZHNTdHJpbmdFbnVtLkhJR0hMSUdIVF9QT0lOVF9PTl9IT1ZFUixcbiAgICAgICAgYWZ0ZXJEcmF3OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGhvdmVyZWRJbmRleCAhPT0gbnVsbClcbiAgICAgICAgICAgIENoYXJ0SGVscGVyLmhpZ2hsaWdodFBvaW50KFxuICAgICAgICAgICAgICB0aGlzLmNoYXJ0Q29udGV4dCxcbiAgICAgICAgICAgICAgdGhpcy5jaGFydCxcbiAgICAgICAgICAgICAgaG92ZXJlZEluZGV4LFxuICAgICAgICAgICAgICB0aGlzLl9jaGFydENvbmZpZy5jaGFydERhdGFcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHNldE11bHRpcGxlWUF4aXMoY2hhcnREYXRhOiBJQ2hhcnREYXRhPElMaW5lRGF0YXNldD4pOiB2b2lkIHtcbiAgICBsZXQgYWJzb2x1dGVNYXg6IG51bWJlcjtcbiAgICBjaGFydERhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZGF0YXNldC50eXBlID09IENoYXJ0VHlwZXNTdHJpbmdFbnVtLkxJTkUgfHxcbiAgICAgICAgZGF0YXNldC50eXBlID09IENoYXJ0VHlwZXNTdHJpbmdFbnVtLkJBUlxuICAgICAgKSB7XG5cbiAgICAgICAgY29uc3QgeUF4aXNJRCA9IHRoaXMuX2NoYXJ0Q29uZmlnLmlzTXVsdGlZQXhpcyA/XG4gICAgICAgICAgYHktYXhpcy0ke2luZGV4fWAgOlxuICAgICAgICAgIGRhdGFzZXQueUF4aXNJZCB8fFxuICAgICAgICAgICd5LWF4aXMtMCc7XG5cbiAgICAgICAgY2hhcnREYXRhLmRhdGFzZXRzW2luZGV4XSA9IHtcbiAgICAgICAgICAuLi5kYXRhc2V0LFxuICAgICAgICAgIHlBeGlzSUQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1pblZhbHVlID0gQ2hhcnRIZWxwZXIuY2FsY3VsYXRlTWluVmFsdWUoZGF0YXNldC5kYXRhIGFzIG51bWJlcltdKTtcbiAgICAgICAgY29uc3QgbWF4VmFsdWUgPSBDaGFydEhlbHBlci5jYWxjdWxhdGVNYXhWYWx1ZShkYXRhc2V0LmRhdGEgYXMgbnVtYmVyW10pO1xuICAgICAgICBpZiAoIWFic29sdXRlTWF4IHx8IG1heFZhbHVlID4gYWJzb2x1dGVNYXgpIGFic29sdXRlTWF4ID0gbWF4VmFsdWU7XG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSBtYXhWYWx1ZSAqIDAuMDM7XG4gICAgICAgIGNvbnN0IG1pblZhbHVlQWRqdXN0ZWQgPSBwYWRkaW5nID09IDAgPyBtaW5WYWx1ZSArIDAuMSA6IDA7XG4gICAgICAgIGNvbnN0IG1heFZhbHVlQWRqdXN0ZWQgPSBhYnNvbHV0ZU1heCArIHBhZGRpbmc7XG5cbiAgICAgICAgdGhpcy5fY2hhcnRDb25maWcuY2hhcnRPcHRpb25zLnNjYWxlcyA9IHtcbiAgICAgICAgICAuLi50aGlzLl9jaGFydENvbmZpZy5jaGFydE9wdGlvbnMuc2NhbGVzLFxuICAgICAgICAgIFt5QXhpc0lEXToge1xuICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICAgIG1pbjogbWluVmFsdWVBZGp1c3RlZCxcbiAgICAgICAgICAgIG1heDogbWF4VmFsdWVBZGp1c3RlZCxcbiAgICAgICAgICAgIC8vIE92byBqZSBqYWtvIGJpdG5vLCBtb3JhbW8gb3Z1IG9zdSBzYSBzdGFja2VkIHBhcmFtZXRyb20gbmFtamVzdGl0aVxuICAgICAgICAgICAgc3RhY2tlZDogdGhpcy5fY2hhcnRDb25maWcuaXNTdGFja2VkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NoYXJ0RGF0YUF2YWlsYWJsZTsgZWxzZSBub0RhdGFUZW1wbGF0ZVwiPlxuICA8ZGl2XG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgaGVpZ2h0OiBfY2hhcnRDb25maWcuaGVpZ2h0ICsgJ3B4JyxcbiAgICAgIHdpZHRoOiBfY2hhcnRDb25maWcud2lkdGggKyAnJScsXG4gICAgfVwiXG4gID5cbiAgICA8Y2FudmFzICNjaGFydENhbnZhcz4gPC9jYW52YXM+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGhlaWdodDogX2NoYXJ0Q29uZmlnLmhlaWdodCArICdweCcsXG4gICAgICB3aWR0aDogX2NoYXJ0Q29uZmlnLndpZHRoICsgJyUnLFxuICAgIH1cIlxuICA+XG4gICAgPHN2Zy1pY29uXG4gICAgICBbc3JjXT1cIl9jaGFydENvbmZpZy5ub0RhdGFJbWFnZVwiXG4gICAgICBhbHQ9XCJObyBkYXRhIGF2YWlsYWJsZVwiXG4gICAgICBjbGFzcz1cIm5vLWRhdGEtc3ZnXCJcbiAgICA+PC9zdmctaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtYmFzZS1kYXRhc2V0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvbW9kZWxzL2NoYXJ0LWJhc2UtZGF0YXNldC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhcnRUeXBlUmVnaXN0cnkgfSBmcm9tICdjaGFydC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VEYXRhc2V0IHtcbiAgdHlwZToga2V5b2YgQ2hhcnRUeXBlUmVnaXN0cnk7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRhdGE6IG51bWJlcltdIHwgW251bWJlciwgbnVtYmVyXVtdO1xuICBib3JkZXJDb2xvcj86IHN0cmluZztcbiAgYm9yZGVyV2lkdGg/OiBudW1iZXI7XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZyB8IENhbnZhc0dyYWRpZW50O1xuICBjb2xvcjE/OiBzdHJpbmc7XG4gIGNvbG9yRWRnZVZhbHVlPzogbnVtYmVyO1xuICBjb2xvcjI/OiBzdHJpbmc7XG4gIGZpbGw/OiBib29sZWFuO1xuICB5QXhpc0lkPzogc3RyaW5nO1xuICBzaGlmdFZhbHVlPzogbnVtYmVyO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvbW9kZWxzL2NoYXJ0LWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhcnRPcHRpb25zLCBDaGFydFR5cGUgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgeyBJQmFzZURhdGFzZXQsIElDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFydENvbmZpZ3VhcmF0aW9uIHtcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGU7XG4gIGNoYXJ0RGF0YTogSUNoYXJ0RGF0YTxJQmFzZURhdGFzZXQ+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvbW9kZWxzL2NoYXJ0LWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhcnRPcHRpb25zLCBDaGFydFR5cGUgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgeyBJQmFzZURhdGFzZXQsIElDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFydENvbmZpZ3VhcmF0aW9uIHtcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGU7XG4gIGNoYXJ0RGF0YTogSUNoYXJ0RGF0YTxJQmFzZURhdGFzZXQ+O1xuICBjaGFydE9wdGlvbnM6IENoYXJ0T3B0aW9ucztcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIG5vRGF0YUltYWdlOiBzdHJpbmc7XG4gIGlzTXVsdGlZQXhpcz86IGJvb2xlYW47XG4gIGlzU3RhY2tlZD86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -34,11 +34,30 @@ export class ChartHelper {
|
|
|
34
34
|
const gradient = chartContext.createLinearGradient(0, 0, 0, chartCanvas.nativeElement.height);
|
|
35
35
|
const opacity = 0.4;
|
|
36
36
|
const fillColorTop = this.hexToRgba(color1, opacity);
|
|
37
|
-
const fillColorBottom = this.hexToRgba(color2,
|
|
37
|
+
const fillColorBottom = this.hexToRgba(color2, 1);
|
|
38
38
|
gradient.addColorStop(0, fillColorTop);
|
|
39
39
|
gradient.addColorStop(0.8, fillColorBottom);
|
|
40
40
|
return gradient;
|
|
41
41
|
}
|
|
42
|
+
static createCustomGradient(chartContext, chartCanvas, color1, color2, color1EdgeValue, color2EdgeValue) {
|
|
43
|
+
if (!color1 || !color2)
|
|
44
|
+
return;
|
|
45
|
+
const gradient = chartContext.createLinearGradient(0, 0, 0, chartCanvas.nativeElement.height);
|
|
46
|
+
const fillColorTop = this.hexToRgba(color1, 1);
|
|
47
|
+
const fillColorBottom = this.hexToRgba(color2, 1);
|
|
48
|
+
const whiteTop = this.hexToRgba(color1, 0.2);
|
|
49
|
+
const whiteBottom = this.hexToRgba(color2, 0.2);
|
|
50
|
+
gradient.addColorStop(color2EdgeValue || 0, fillColorTop);
|
|
51
|
+
if (color1EdgeValue) {
|
|
52
|
+
gradient.addColorStop(color1EdgeValue, whiteTop);
|
|
53
|
+
gradient.addColorStop(color1EdgeValue, fillColorBottom);
|
|
54
|
+
gradient.addColorStop(1, whiteBottom);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
gradient.addColorStop(color1EdgeValue || 1, fillColorBottom);
|
|
58
|
+
}
|
|
59
|
+
return gradient;
|
|
60
|
+
}
|
|
42
61
|
static calculateTickPositions(xScale) {
|
|
43
62
|
return xScale.ticks.map((_, index) => xScale.getPixelForTick(index));
|
|
44
63
|
}
|
|
@@ -64,18 +83,18 @@ export class ChartHelper {
|
|
|
64
83
|
chartData.datasets.forEach((dataset, datasetIndex) => {
|
|
65
84
|
const meta = chart.getDatasetMeta(datasetIndex);
|
|
66
85
|
const point = meta.data[index];
|
|
67
|
-
if (point)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
if (!point)
|
|
87
|
+
return;
|
|
88
|
+
ctx.save();
|
|
89
|
+
ctx.beginPath();
|
|
90
|
+
ctx.arc(point.x, point.y, 4, 0, 2 * Math.PI);
|
|
91
|
+
ctx.fillStyle = "#FFFFFF" /* ChartColorsStringEnum.WHITE */;
|
|
92
|
+
ctx.fill();
|
|
93
|
+
ctx.lineWidth = 2;
|
|
94
|
+
ctx.strokeStyle =
|
|
95
|
+
dataset.borderColor || "transparent" /* ChartColorsStringEnum.TRANSPARENT */;
|
|
96
|
+
ctx.stroke();
|
|
97
|
+
ctx.restore();
|
|
79
98
|
});
|
|
80
99
|
}
|
|
81
100
|
static getSegmentPosition(xScale, index) {
|
|
@@ -84,5 +103,13 @@ export class ChartHelper {
|
|
|
84
103
|
const segmentStart = tickPositions[index] - segmentWidth / 2;
|
|
85
104
|
return { segmentStart, segmentWidth };
|
|
86
105
|
}
|
|
106
|
+
static normalize(value, min, max) {
|
|
107
|
+
if (!max || !min)
|
|
108
|
+
return;
|
|
109
|
+
var delta = max - min;
|
|
110
|
+
if (!delta)
|
|
111
|
+
return 0;
|
|
112
|
+
return 1 - ((value - min) / delta);
|
|
113
|
+
}
|
|
87
114
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvdXRpbHMvaGVscGVycy9jaGFydC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFnQixFQUFFLFVBQWtCLENBQUM7UUFDcEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsUUFBUTtpQkFDTCxLQUFLLENBQUMsRUFBRSxDQUFDO2lCQUNULEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztpQkFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUUxQixPQUFPLFFBQVEsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssT0FBTyxHQUFHLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYyxjQUFjLEVBQUUsT0FBZTtRQUM1RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLElB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QUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDYixHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDL0IsTUFBbUMsRUFDbkMsS0FBYTtRQUViLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IENoYXJ0LCB7XG4gIENhdGVnb3J5U2NhbGUsXG4gIENoYXJ0QXJlYSxcbiAgTGluZWFyU2NhbGUsXG59IGZyb20gJ2NoYXJ0LmpzL2F1dG8nO1xuaW1wb3J0IHsgQ2hhcnRDb2xvcnNTdHJpbmdFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgSUJhc2VEYXRhc2V0LCBJQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIENoYXJ0SGVscGVyIHtcbiAgc3RhdGljIGhleFRvUmdiYShjb2xvckhleDogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIgPSAxKTogc3RyaW5nIHtcbiAgICBjb2xvckhleCA9IGNvbG9ySGV4LnJlcGxhY2UoL14jLywgJycpO1xuXG4gICAgaWYgKGNvbG9ySGV4Lmxlbmd0aCA9PT0gMykge1xuICAgICAgY29sb3JIZXhcbiAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAubWFwKChjaGFyKSA9PiBjaGFyICsgY2hhcilcbiAgICAgICAgLmpvaW4oJycpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpZ2ludCA9IHBhcnNlSW50KGNvbG9ySGV4LCAxNik7XG4gICAgY29uc3QgcmVkID0gKGJpZ2ludCA+PiAxNikgJiAyNTU7XG4gICAgY29uc3QgZ3JlZW4gPSAoYmlnaW50ID4+IDgpICYgMjU1O1xuICAgIGNvbnN0IGJsdWUgPSBiaWdpbnQgJiAyNTU7XG5cbiAgICByZXR1cm4gYHJnYmEoJHtyZWR9LCAke2dyZWVufSwgJHtibHVlfSwgJHtvcGFjaXR5fSlgO1xuICB9XG5cbiAgc3RhdGljIHJnYlRvUmdiYShyZ2I6IHN0cmluZyA9ICdyZ2IoMCwgMCwgMCknLCBvcGFjaXR5OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYlZhbHVlcyA9IHJnYi5tYXRjaCgvXFxkKy9nKTtcblxuICAgIGlmIChyZ2JWYWx1ZXMgJiYgcmdiVmFsdWVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgY29uc3QgcmVkID0gcmdiVmFsdWVzWzBdO1xuICAgICAgY29uc3QgZ3JlZW4gPSByZ2JWYWx1ZXNbMV07XG4gICAgICBjb25zdCBibHVlID0gcmdiVmFsdWVzWzJdO1xuXG4gICAgICByZXR1cm4gYHJnYmEoJHtyZWR9LCAke2dyZWVufSwgJHtibHVlfSwgJHtvcGFjaXR5fSlgO1xuICAgIH0gZWxzZSByZXR1cm4gcmdiO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZU1pblZhbHVlKGRhdGE6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5taW4oLi4uZGF0YSk7XG4gIH1cblxuICBzdGF0aWMgY2FsY3VsYXRlTWF4VmFsdWUoZGF0YTogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heCguLi5kYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVHcmFkaWVudChcbiAgICBjaGFydENvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBjaGFydENhbnZhczogRWxlbWVudFJlZixcbiAgICBjb2xvcjE6IHN0cmluZyxcbiAgICBjb2xvcjI6IHN0cmluZ1xuICApOiBDYW52YXNHcmFkaWVudCB7XG4gICAgY29uc3QgZ3JhZGllbnQgPSBjaGFydENvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICBjaGFydENhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodFxuICAgICk7XG5cbiAgICBjb25zdCBvcGFjaXR5ID0gMC40O1xuICAgIGNvbnN0IGZpbGxDb2xvclRvcCA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMSwgb3BhY2l0eSk7XG4gICAgY29uc3QgZmlsbENvbG9yQm90dG9tID0gdGhpcy5oZXhUb1JnYmEoY29sb3IyLCAwKTtcbiAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMCwgZmlsbENvbG9yVG9wKTtcbiAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoMC44LCBmaWxsQ29sb3JCb3R0b20pO1xuXG4gICAgcmV0dXJuIGdyYWRpZW50O1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZVRpY2tQb3NpdGlvbnMoeFNjYWxlOiBDYXRlZ29yeVNjYWxlIHwgTGluZWFyU2NhbGUpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHhTY2FsZS50aWNrcy5tYXAoKF8sIGluZGV4OiBudW1iZXIpID0+XG4gICAgICB4U2NhbGUuZ2V0UGl4ZWxGb3JUaWNrKGluZGV4KVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgaGlnaGxpZ2h0U2VnbWVudChcbiAgICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICB4U2NhbGU6IENhdGVnb3J5U2NhbGUgfCBMaW5lYXJTY2FsZSxcbiAgICBjaGFydEFyZWE6IENoYXJ0QXJlYSxcbiAgICBjaGFydEhlaWdodDogbnVtYmVyLFxuICAgIGluZGV4OiBudW1iZXJcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgeyBzZWdtZW50U3RhcnQsIHNlZ21lbnRXaWR0aCB9ID0gQ2hhcnRIZWxwZXIuZ2V0U2VnbWVudFBvc2l0aW9uKFxuICAgICAgeFNjYWxlLFxuICAgICAgaW5kZXhcbiAgICApO1xuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IDI7XG5cbiAgICBjdHguc2F2ZSgpO1xuICAgIGN0eC5maWxsU3R5bGUgPSBDaGFydENvbG9yc1N0cmluZ0VudW0uSE9WRVJfU0VHTUVOVDtcblxuICAgIC8vIERyYXcgc2VnbWVudCB3aXRoIGJvcmRlci1yYWRpdXMgYXQgdGhlIHRvcCBjb3JuZXJzXG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGN0eC5tb3ZlVG8oc2VnbWVudFN0YXJ0ICsgYm9yZGVyUmFkaXVzLCBjaGFydEFyZWEudG9wKTtcbiAgICBjdHgubGluZVRvKHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCAtIGJvcmRlclJhZGl1cywgY2hhcnRBcmVhLnRvcCk7XG4gICAgY3R4LmFyY1RvKFxuICAgICAgc2VnbWVudFN0YXJ0ICsgc2VnbWVudFdpZHRoLFxuICAgICAgY2hhcnRBcmVhLnRvcCxcbiAgICAgIHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCxcbiAgICAgIGNoYXJ0QXJlYS50b3AgKyBib3JkZXJSYWRpdXMsXG4gICAgICBib3JkZXJSYWRpdXNcbiAgICApO1xuICAgIGN0eC5saW5lVG8oc2VnbWVudFN0YXJ0ICsgc2VnbWVudFdpZHRoLCBjaGFydEhlaWdodCk7XG4gICAgY3R4LmxpbmVUbyhzZWdtZW50U3RhcnQsIGNoYXJ0SGVpZ2h0KTtcbiAgICBjdHgubGluZVRvKHNlZ21lbnRTdGFydCwgY2hhcnRBcmVhLnRvcCArIGJvcmRlclJhZGl1cyk7XG4gICAgY3R4LmFyY1RvKFxuICAgICAgc2VnbWVudFN0YXJ0LFxuICAgICAgY2hhcnRBcmVhLnRvcCxcbiAgICAgIHNlZ21lbnRTdGFydCArIGJvcmRlclJhZGl1cyxcbiAgICAgIGNoYXJ0QXJlYS50b3AsXG4gICAgICBib3JkZXJSYWRpdXNcbiAgICApO1xuICAgIGN0eC5jbG9zZVBhdGgoKTtcblxuICAgIGN0eC5maWxsKCk7XG4gICAgY3R4LnJlc3RvcmUoKTtcbiAgfVxuXG4gIHN0YXRpYyBoaWdobGlnaHRQb2ludChcbiAgICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBjaGFydDogQ2hhcnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjaGFydERhdGE6IElDaGFydERhdGE8SUJhc2VEYXRhc2V0PlxuICApOiB2b2lkIHtcbiAgICBjaGFydERhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgZGF0YXNldEluZGV4KSA9PiB7XG4gICAgICBjb25zdCBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcbiAgICAgIGNvbnN0IHBvaW50ID0gbWV0YS5kYXRhW2luZGV4XTtcblxuICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgIGN0eC5zYXZlKCk7XG4gICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgY3R4LmFyYyhwb2ludC54LCBwb2ludC55LCA0LCAwLCAyICogTWF0aC5QSSk7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBDaGFydENvbG9yc1N0cmluZ0VudW0uV0hJVEU7XG4gICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgIGN0eC5saW5lV2lkdGggPSAyO1xuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPVxuICAgICAgICAgIGRhdGFzZXQuYm9yZGVyQ29sb3IgfHwgQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLlRSQU5TUEFSRU5UO1xuICAgICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICAgIGN0eC5yZXN0b3JlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRTZWdtZW50UG9zaXRpb24oXG4gICAgeFNjYWxlOiBDYXRlZ29yeVNjYWxlIHwgTGluZWFyU2NhbGUsXG4gICAgaW5kZXg6IG51bWJlclxuICApOiB7IHNlZ21lbnRTdGFydDogbnVtYmVyOyBzZWdtZW50V2lkdGg6IG51bWJlciB9IHtcbiAgICBjb25zdCB0aWNrUG9zaXRpb25zID0gQ2hhcnRIZWxwZXIuY2FsY3VsYXRlVGlja1Bvc2l0aW9ucyh4U2NhbGUpO1xuICAgIGNvbnN0IHNlZ21lbnRXaWR0aCA9IHRpY2tQb3NpdGlvbnNbMV0gLSB0aWNrUG9zaXRpb25zWzBdO1xuICAgIGNvbnN0IHNlZ21lbnRTdGFydCA9IHRpY2tQb3NpdGlvbnNbaW5kZXhdIC0gc2VnbWVudFdpZHRoIC8gMjtcbiAgICByZXR1cm4geyBzZWdtZW50U3RhcnQsIHNlZ21lbnRXaWR0aCB9O1xuICB9XG59XG4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtY2hhcnQvdXRpbHMvaGVscGVycy9jaGFydC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxPQUFPLFdBQVc7SUFDdEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFnQixFQUFFLFVBQWtCLENBQUM7UUFDcEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsUUFBUTtpQkFDTCxLQUFLLENBQUMsRUFBRSxDQUFDO2lCQUNULEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztpQkFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUUxQixPQUFPLFFBQVEsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssT0FBTyxHQUFHLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYyxjQUFjLEVBQUUsT0FBZTtRQUM1RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLElB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QUFFLENBQUM7UUFFaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLGtCQUFrQixDQUMvQixNQUFtQyxFQUNuQyxLQUFhO1FBRWIsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBRXpCLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFdEIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUVyQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBDaGFydCwge1xuICBDYXRlZ29yeVNjYWxlLFxuICBDaGFydEFyZWEsXG4gIExpbmVhclNjYWxlLFxufSBmcm9tICdjaGFydC5qcy9hdXRvJztcbmltcG9ydCB7IENoYXJ0Q29sb3JzU3RyaW5nRW51bSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IElCYXNlRGF0YXNldCwgSUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmV4cG9ydCBjbGFzcyBDaGFydEhlbHBlciB7XG4gIHN0YXRpYyBoZXhUb1JnYmEoY29sb3JIZXg6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyID0gMSk6IHN0cmluZyB7XG4gICAgY29sb3JIZXggPSBjb2xvckhleC5yZXBsYWNlKC9eIy8sICcnKTtcblxuICAgIGlmIChjb2xvckhleC5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNvbG9ySGV4XG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcCgoY2hhcikgPT4gY2hhciArIGNoYXIpXG4gICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBiaWdpbnQgPSBwYXJzZUludChjb2xvckhleCwgMTYpO1xuICAgIGNvbnN0IHJlZCA9IChiaWdpbnQgPj4gMTYpICYgMjU1O1xuICAgIGNvbnN0IGdyZWVuID0gKGJpZ2ludCA+PiA4KSAmIDI1NTtcbiAgICBjb25zdCBibHVlID0gYmlnaW50ICYgMjU1O1xuXG4gICAgcmV0dXJuIGByZ2JhKCR7cmVkfSwgJHtncmVlbn0sICR7Ymx1ZX0sICR7b3BhY2l0eX0pYDtcbiAgfVxuXG4gIHN0YXRpYyByZ2JUb1JnYmEocmdiOiBzdHJpbmcgPSAncmdiKDAsIDAsIDApJywgb3BhY2l0eTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2JWYWx1ZXMgPSByZ2IubWF0Y2goL1xcZCsvZyk7XG5cbiAgICBpZiAocmdiVmFsdWVzICYmIHJnYlZhbHVlcy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNvbnN0IHJlZCA9IHJnYlZhbHVlc1swXTtcbiAgICAgIGNvbnN0IGdyZWVuID0gcmdiVmFsdWVzWzFdO1xuICAgICAgY29uc3QgYmx1ZSA9IHJnYlZhbHVlc1syXTtcblxuICAgICAgcmV0dXJuIGByZ2JhKCR7cmVkfSwgJHtncmVlbn0sICR7Ymx1ZX0sICR7b3BhY2l0eX0pYDtcbiAgICB9IGVsc2UgcmV0dXJuIHJnYjtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVNaW5WYWx1ZShkYXRhOiBudW1iZXJbXSk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKC4uLmRhdGEpO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZU1heFZhbHVlKGRhdGE6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4uZGF0YSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlR3JhZGllbnQoXG4gICAgY2hhcnRDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY2hhcnRDYW52YXM6IEVsZW1lbnRSZWYsXG4gICAgY29sb3IxOiBzdHJpbmcsXG4gICAgY29sb3IyOiBzdHJpbmdcbiAgKTogQ2FudmFzR3JhZGllbnQge1xuICAgIGNvbnN0IGdyYWRpZW50ID0gY2hhcnRDb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgY2hhcnRDYW52YXMubmF0aXZlRWxlbWVudC5oZWlnaHRcbiAgICApO1xuXG4gICAgY29uc3Qgb3BhY2l0eSA9IDAuNDtcbiAgICBjb25zdCBmaWxsQ29sb3JUb3AgPSB0aGlzLmhleFRvUmdiYShjb2xvcjEsIG9wYWNpdHkpO1xuICAgIGNvbnN0IGZpbGxDb2xvckJvdHRvbSA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMiwgMSk7XG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGZpbGxDb2xvclRvcCk7XG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAuOCwgZmlsbENvbG9yQm90dG9tKTtcblxuICAgIHJldHVybiBncmFkaWVudDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDdXN0b21HcmFkaWVudChcbiAgICBjaGFydENvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgICBjaGFydENhbnZhczogRWxlbWVudFJlZixcbiAgICBjb2xvcjE6IHN0cmluZyxcbiAgICBjb2xvcjI6IHN0cmluZyxcbiAgICBjb2xvcjFFZGdlVmFsdWU/OiBudW1iZXIsXG4gICAgY29sb3IyRWRnZVZhbHVlPzogbnVtYmVyXG4gICkge1xuICAgIGlmICghY29sb3IxIHx8ICFjb2xvcjIpIHJldHVybjtcbiAgICBjb25zdCBncmFkaWVudCA9IGNoYXJ0Q29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIGNoYXJ0Q2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0XG4gICAgKTtcblxuICAgIGNvbnN0IGZpbGxDb2xvclRvcCA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMSwgMSk7XG4gICAgY29uc3QgZmlsbENvbG9yQm90dG9tID0gdGhpcy5oZXhUb1JnYmEoY29sb3IyLCAxKTtcbiAgICBjb25zdCB3aGl0ZVRvcCA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMSwgMC4yKTtcbiAgICBjb25zdCB3aGl0ZUJvdHRvbSA9IHRoaXMuaGV4VG9SZ2JhKGNvbG9yMiwgMC4yKTtcblxuICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcChjb2xvcjJFZGdlVmFsdWUgfHwgMCwgZmlsbENvbG9yVG9wKTtcbiAgICBpZiAoY29sb3IxRWRnZVZhbHVlKSB7XG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoY29sb3IxRWRnZVZhbHVlLCB3aGl0ZVRvcCk7XG4gICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoY29sb3IxRWRnZVZhbHVlLCBmaWxsQ29sb3JCb3R0b20pO1xuICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsIHdoaXRlQm90dG9tKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKGNvbG9yMUVkZ2VWYWx1ZSB8fCAxLCBmaWxsQ29sb3JCb3R0b20pO1xuICAgIH1cblxuICAgIHJldHVybiBncmFkaWVudDtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVUaWNrUG9zaXRpb25zKHhTY2FsZTogQ2F0ZWdvcnlTY2FsZSB8IExpbmVhclNjYWxlKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB4U2NhbGUudGlja3MubWFwKChfLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgeFNjYWxlLmdldFBpeGVsRm9yVGljayhpbmRleClcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGhpZ2hsaWdodFNlZ21lbnQoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgeFNjYWxlOiBDYXRlZ29yeVNjYWxlIHwgTGluZWFyU2NhbGUsXG4gICAgY2hhcnRBcmVhOiBDaGFydEFyZWEsXG4gICAgY2hhcnRIZWlnaHQ6IG51bWJlcixcbiAgICBpbmRleDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2VnbWVudFN0YXJ0LCBzZWdtZW50V2lkdGggfSA9IENoYXJ0SGVscGVyLmdldFNlZ21lbnRQb3NpdGlvbihcbiAgICAgIHhTY2FsZSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSAyO1xuXG4gICAgY3R4LnNhdmUoKTtcbiAgICBjdHguZmlsbFN0eWxlID0gQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLkhPVkVSX1NFR01FTlQ7XG5cbiAgICAvLyBEcmF3IHNlZ21lbnQgd2l0aCBib3JkZXItcmFkaXVzIGF0IHRoZSB0b3AgY29ybmVyc1xuICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICBjdHgubW92ZVRvKHNlZ21lbnRTdGFydCArIGJvcmRlclJhZGl1cywgY2hhcnRBcmVhLnRvcCk7XG4gICAgY3R4LmxpbmVUbyhzZWdtZW50U3RhcnQgKyBzZWdtZW50V2lkdGggLSBib3JkZXJSYWRpdXMsIGNoYXJ0QXJlYS50b3ApO1xuICAgIGN0eC5hcmNUbyhcbiAgICAgIHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCxcbiAgICAgIGNoYXJ0QXJlYS50b3AsXG4gICAgICBzZWdtZW50U3RhcnQgKyBzZWdtZW50V2lkdGgsXG4gICAgICBjaGFydEFyZWEudG9wICsgYm9yZGVyUmFkaXVzLFxuICAgICAgYm9yZGVyUmFkaXVzXG4gICAgKTtcbiAgICBjdHgubGluZVRvKHNlZ21lbnRTdGFydCArIHNlZ21lbnRXaWR0aCwgY2hhcnRIZWlnaHQpO1xuICAgIGN0eC5saW5lVG8oc2VnbWVudFN0YXJ0LCBjaGFydEhlaWdodCk7XG4gICAgY3R4LmxpbmVUbyhzZWdtZW50U3RhcnQsIGNoYXJ0QXJlYS50b3AgKyBib3JkZXJSYWRpdXMpO1xuICAgIGN0eC5hcmNUbyhcbiAgICAgIHNlZ21lbnRTdGFydCxcbiAgICAgIGNoYXJ0QXJlYS50b3AsXG4gICAgICBzZWdtZW50U3RhcnQgKyBib3JkZXJSYWRpdXMsXG4gICAgICBjaGFydEFyZWEudG9wLFxuICAgICAgYm9yZGVyUmFkaXVzXG4gICAgKTtcbiAgICBjdHguY2xvc2VQYXRoKCk7XG5cbiAgICBjdHguZmlsbCgpO1xuICAgIGN0eC5yZXN0b3JlKCk7XG4gIH1cblxuICBzdGF0aWMgaGlnaGxpZ2h0UG9pbnQoXG4gICAgY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsXG4gICAgY2hhcnQ6IENoYXJ0LFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgY2hhcnREYXRhOiBJQ2hhcnREYXRhPElCYXNlRGF0YXNldD5cbiAgKTogdm9pZCB7XG4gICAgY2hhcnREYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xuICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XG4gICAgICBjb25zdCBwb2ludCA9IG1ldGEuZGF0YVtpbmRleF07XG5cbiAgICAgIGlmICghcG9pbnQpIHJldHVybjtcblxuICAgICAgY3R4LnNhdmUoKTtcbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgIGN0eC5hcmMocG9pbnQueCwgcG9pbnQueSwgNCwgMCwgMiAqIE1hdGguUEkpO1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IENoYXJ0Q29sb3JzU3RyaW5nRW51bS5XSElURTtcbiAgICAgIGN0eC5maWxsKCk7XG4gICAgICBjdHgubGluZVdpZHRoID0gMjtcbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9XG4gICAgICAgIGRhdGFzZXQuYm9yZGVyQ29sb3IgfHwgQ2hhcnRDb2xvcnNTdHJpbmdFbnVtLlRSQU5TUEFSRU5UO1xuICAgICAgY3R4LnN0cm9rZSgpO1xuICAgICAgY3R4LnJlc3RvcmUoKTtcblxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U2VnbWVudFBvc2l0aW9uKFxuICAgIHhTY2FsZTogQ2F0ZWdvcnlTY2FsZSB8IExpbmVhclNjYWxlLFxuICAgIGluZGV4OiBudW1iZXJcbiAgKTogeyBzZWdtZW50U3RhcnQ6IG51bWJlcjsgc2VnbWVudFdpZHRoOiBudW1iZXIgfSB7XG4gICAgY29uc3QgdGlja1Bvc2l0aW9ucyA9IENoYXJ0SGVscGVyLmNhbGN1bGF0ZVRpY2tQb3NpdGlvbnMoeFNjYWxlKTtcbiAgICBjb25zdCBzZWdtZW50V2lkdGggPSB0aWNrUG9zaXRpb25zWzFdIC0gdGlja1Bvc2l0aW9uc1swXTtcbiAgICBjb25zdCBzZWdtZW50U3RhcnQgPSB0aWNrUG9zaXRpb25zW2luZGV4XSAtIHNlZ21lbnRXaWR0aCAvIDI7XG4gICAgcmV0dXJuIHsgc2VnbWVudFN0YXJ0LCBzZWdtZW50V2lkdGggfTtcbiAgfVxuXG4gIHN0YXRpYyBub3JtYWxpemUodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gICAgaWYgKCFtYXggfHwgIW1pbikgcmV0dXJuO1xuXG4gICAgdmFyIGRlbHRhID0gbWF4IC0gbWluO1xuXG4gICAgaWYgKCFkZWx0YSkgcmV0dXJuIDA7XG5cbiAgICByZXR1cm4gMSAtICgodmFsdWUgLSBtaW4pIC8gZGVsdGEpO1xuICB9XG5cbn1cbiJdfQ==
|