tango-app-ui-analyse-trax 3.9.87 → 3.9.88
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.
|
@@ -148,14 +148,24 @@ export class MultiChipDropdownComponent {
|
|
|
148
148
|
const selectAll = event.currentTarget.checked;
|
|
149
149
|
this.selectAll = event.currentTarget.checked;
|
|
150
150
|
this.filteredValues.forEach((item) => item.isSelected = selectAll);
|
|
151
|
+
// Select All applies to the filtered list only. Anything selected outside the
|
|
152
|
+
// active search is carried over untouched - replacing the whole selection
|
|
153
|
+
// here wiped earlier picks as soon as a search narrowed the list.
|
|
154
|
+
const current = Array.isArray(this.selectedValues) ? this.selectedValues : [];
|
|
155
|
+
const filteredIds = (this.filteredValues || []).map((item) => item[this.idField]);
|
|
156
|
+
const outsideSearch = current.filter((item) => !filteredIds.includes(item[this.idField]));
|
|
151
157
|
if (selectAll && this.filteredValues) {
|
|
152
|
-
this.selectedValues = [...this.filteredValues];
|
|
158
|
+
this.selectedValues = [...outsideSearch, ...this.filteredValues];
|
|
153
159
|
}
|
|
154
160
|
else {
|
|
155
|
-
this.selectedValues =
|
|
161
|
+
this.selectedValues = outsideSearch;
|
|
156
162
|
this.removed.emit(this.filteredValues.map((item) => item?._id));
|
|
157
163
|
}
|
|
158
|
-
const valuesToEmit = this.
|
|
164
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
165
|
+
const selectedItem = { ...value };
|
|
166
|
+
delete selectedItem.isSelected;
|
|
167
|
+
return selectedItem;
|
|
168
|
+
});
|
|
159
169
|
this.emitSelectedValues(valuesToEmit);
|
|
160
170
|
this.cd.detectChanges();
|
|
161
171
|
}
|
|
@@ -175,10 +185,10 @@ export class MultiChipDropdownComponent {
|
|
|
175
185
|
let uniqueKey = '_id';
|
|
176
186
|
let data = [];
|
|
177
187
|
if (this.selectedValues?.length) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
188
|
+
// Read-only: this runs on every change detection pass, so it must never
|
|
189
|
+
// touch selectedValues. It used to prune it down to the currently filtered
|
|
190
|
+
// items whenever selectAll was set, which silently dropped the chips (and
|
|
191
|
+
// the emitted selection) for anything outside an active search.
|
|
182
192
|
data = Array.from(new Map(this.selectedValues.map((item) => [
|
|
183
193
|
item[uniqueKey],
|
|
184
194
|
{
|
|
@@ -226,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
226
236
|
}], removed: [{
|
|
227
237
|
type: Output
|
|
228
238
|
}] } });
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWNoaXAtZHJvcGRvd24vbXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWNoaXAtZHJvcGRvd24vbXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTbkssTUFBTSxPQUFPLDBCQUEwQjtJQXFDaEI7SUFBK0I7SUFuQ25ELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxL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O3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tdWx0aS1jaGlwLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL211bHRpLWNoaXAtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlDaGlwRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcclxuICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpKSB7XHJcbiAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgaWYgKCF0aGlzLnNob3dEcm9wZG93bikge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgIGNvbnN0IHNlYXJjaERhdGEgPSAnJztcclxuICAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBzZWFyY2hEYXRhLnNwbGl0KCcsJykubWFwKChlbDogYW55KSA9PiBlbC50cmltKCkpO1xyXG4gICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiBcclxuICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZC5zb21lKGZpZWxkID0+IHNlYXJjaFRlcm0uc29tZSgodGVybTogYW55KSA9PiBpdGVtW2ZpZWxkXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSkpKTtcclxuICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgICB9XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgXHJcbiAgIEBJbnB1dCgpIGl0ZW1zOiBhbnlcclxuICAgQElucHV0KCkgc2VhcmNoRmllbGQ6YW55W11cclxuICAgQElucHV0KCkgbXVsdGk6IGJvb2xlYW5cclxuICAgQElucHV0KCkgaWRGaWVsZDogc3RyaW5nXHJcbiAgIEBJbnB1dCgpIHNlbGVjdGVkVmFsdWVzOiBhbnkgPSBbXVxyXG4gICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxyXG4gICBASW5wdXQoKSBsYWJlbDogc3RyaW5nXHJcbiAgQElucHV0KCkgYmFkZ2VWYWx1ZTogc3RyaW5nXHJcbiAgQElucHV0KCkgc2VhcmNoS2V5OiBhbnk7XHJcbiAgQElucHV0KCkgYXNzaWduVHlwZTogYW55O1xyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcbiAgQE91dHB1dCgpIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gICBmaWx0ZXJlZFZhbHVlczogYW55ID0gW11cclxuICAgc2hvd0Ryb3Bkb3duOiBib29sZWFuXHJcbiAgIHNlYXJjaFZhbHVlOiBzdHJpbmdcclxuICAgaW5zdGFuY2VJZDogYW55O1xyXG4gIFxyXG4gIFxyXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBhdXRoU2VydmljZTogVHJheFNlcnZpY2UpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgIHRoaXMuaW5zdGFuY2VJZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XHJcbiAgICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIuc3Vic2NyaWJlKChlKT0+eyAgICAgICAgICAgXHJcbiAgICAgICBpZihlICE9PSB0aGlzLmluc3RhbmNlSWQpeyAgICAgICAgXHJcbiAgICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2VcclxuICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgIH1cclxuICAgICB9KVxyXG4gICB9XHJcbiAgXHJcbiAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLml0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgIHRoaXMuaW5pdGlhbGl6ZUl0ZW1zKCk7XHJcbiAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgfVxyXG4gXHJcbiAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10gJiYgdGhpcy5zZWxlY3RlZFZhbHVlcz8ubGVuZ3RoICYmIEFycmF5LmlzQXJyYXkoY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXT8uY3VycmVudFZhbHVlKSkgeyAgXHJcbiAgICAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh0aGlzLnNlbGVjdGVkVmFsdWVzKTsgXHJcbiAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgXHJcbiAgIGluaXRpYWxpemVJdGVtcygpIHtcclxuICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHsgLi4uaXRlbSB9KSk7XHJcbiAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpXHJcbiAgIH1cclxuICBcclxuICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKSB7IFxyXG4gICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXM/LmZvckVhY2goKGZpbHRlcmVkSXRlbTogYW55KSA9PiB7XHJcbiAgICAgICBmaWx0ZXJlZEl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgIH0pO1xyXG4gXHJcbiAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcz8uZm9yRWFjaCgoc2VsZWN0ZWRJdGVtOiBhbnkpID0+IHtcclxuICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkVmFsdWVzPy5maW5kKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4gZmlsdGVyZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSA9PT0gc2VsZWN0ZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSk7XHJcbiAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgfVxyXG4gICAgIH0pO1xyXG4gICB9XHJcbiAgXHJcbiAgIG9wZW5Ecm9wZG93bihldmVudDogYW55KSB7XHJcbiAgICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIubmV4dCh0aGlzLmluc3RhbmNlSWQpXHJcbiAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgdGhpcy5zaG93RHJvcGRvd24gPSAhdGhpcy5zaG93RHJvcGRvd247XHJcbiAgICAgaWYgKCF0aGlzLnNob3dEcm9wZG93bikge1xyXG4gICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICBjb25zdCBzZWFyY2hEYXRhID0gJyc7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBzZWFyY2hEYXRhLnNwbGl0KCcsJykubWFwKChlbDogYW55KSA9PiBlbC50cmltKCkpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5pdGVtcz8uZmlsdGVyKChpdGVtOiBhbnkpID0+IFxyXG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGQuc29tZShmaWVsZCA9PiBzZWFyY2hUZXJtLnNvbWUoKHRlcm06IGFueSkgPT4gaXRlbVtmaWVsZF0/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpKSk7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcmVtb3ZlQmFkZ2UoZGF0YTphbnksaW5kZXg6bnVtYmVyKSB7XHJcbiAgICAvLyB0aGlzLml0ZW1zLnB1c2goZGF0YSk7XHJcbiAgICB0aGlzLnJlbW92ZWQuZW1pdChbZGF0YS5faWRdKVxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMucmVkdWNlKChhY2M6IGFueVtdLCBpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uX2lkICE9PSBkYXRhLl9pZCkge1xyXG4gICAgICAgICAgYWNjLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjYztcclxuICB9LCBbXSk7XHJcbiAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICAgaWYgKCFldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VhcmNoRGF0YSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBzZWFyY2hEYXRhLnNwbGl0KCcsJykubWFwKChlbDogYW55KSA9PiBlbC50cmltKCkpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRmllbGQuc29tZShmaWVsZCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gc2VhcmNoVGVybS5sZW5ndGggPT09IDEgIFxyXG4gICAgICAgICAgICA/IGl0ZW1bZmllbGRdPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm1bMF0pIC8vIFBhcnRpYWwgbWF0Y2ggZm9yIGEgc2luZ2xlIHRlcm1cclxuICAgICAgICAgICAgOiBzZWFyY2hUZXJtLmluY2x1ZGVzKGl0ZW1bZmllbGRdPy50b0xvd2VyQ2FzZSgpKTsgLy8gRXhhY3QgbWF0Y2ggZm9yIG11bHRpcGxlIHRlcm1zXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgIH1cclxuICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcclxuICAgfVxyXG4gIFxyXG4gICBvblNlbGVjdChldmVudDogYW55LCBpdGVtOiBhbnkpIHsgICAgXHJcbiAgICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGl0ZW0gKTsgICAgICAgIFxyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKChlbGVtOiBhbnkpID0+IGVsZW1bdGhpcy5pZEZpZWxkXSAhPT0gaXRlbVt0aGlzLmlkRmllbGRdKTtcclxuICAgICAgICAgdGhpcy5yZW1vdmVkLmVtaXQoW2l0ZW0/Ll9pZF0pXHJcbiAgICAgICB9XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbeyAuLi5pdGVtIH1dO1xyXG4gICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgICBpZihlbGVtZW50W3RoaXMuaWRGaWVsZF0gIT09IGl0ZW1bdGhpcy5pZEZpZWxkXSl7XHJcbiAgICAgICAgICAgZWxlbWVudC5pc1NlbGVjdGVkID0gZmFsc2VcclxuICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcbiAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gXHJcbiAgICAgfVxyXG4gIFxyXG4gICAgIGNvbnN0IHZhbHVlc1RvRW1pdCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IC4uLnZhbHVlIH07XHJcbiAgICAgICBkZWxldGUgc2VsZWN0ZWRJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgIH0pO1xyXG4gIFxyXG4gICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlc1RvRW1pdCk7XHJcbiAgIH1cclxuICBcclxuICAgb25TZWxlY3RBbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgIGNvbnN0IHNlbGVjdEFsbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcclxuICAgICB0aGlzLnNlbGVjdEFsbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcclxuICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4gaXRlbS5pc1NlbGVjdGVkID0gc2VsZWN0QWxsKTtcclxuXHJcbiAgICAgaWYgKHNlbGVjdEFsbCAmJiB0aGlzLmZpbHRlcmVkVmFsdWVzKSB7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gWy4uLnRoaXMuZmlsdGVyZWRWYWx1ZXNdO1xyXG4gICAgIH0gZWxzZSB7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW107XHJcbiAgICAgICB0aGlzLnJlbW92ZWQuZW1pdCh0aGlzLmZpbHRlcmVkVmFsdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtPy5faWQpKVxyXG4gICAgIH1cclxuICBcclxuICAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLmZpbHRlcmVkVmFsdWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQgPT0gdHJ1ZSk7XHJcbiAgICAgdGhpcy5lbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzVG9FbWl0KTtcclxuICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgfVxyXG4gIFxyXG4gIFxyXG4gICBlbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzOiBhbnlbXSkge1xyXG4gICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWVzKTtcclxuICAgICB9IGVsc2Uge1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlc1swXSk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgXHJcbiAgY2hlY2tJZkFsbFNlbGVjdGVkKCkge1xyXG4gICAgIHJldHVybiB0aGlzLmZpbHRlcmVkVmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZXMoKTogYW55W10ge1xyXG4gICAgLy8gbGV0IHVuaXF1ZUtleSA9IHRoaXMuYXNzaWduVHlwZSA9PSAnc3RvcmUnID8gJ3N0b3JlTmFtZScgOiB0aGlzLmFzc2lnblR5cGUgPT0gJ3VzZXInID8gJ3VzZXJOYW1lJyA6IHRoaXMuYXNzaWduVHlwZSA9PSAnY2x1c3RlcicgPyAnY2x1c3Rlck5hbWUnIDogJ3RlYW1OYW1lJztcclxuICAgIGxldCB1bmlxdWVLZXkgPSAnX2lkJztcclxuICAgIGxldCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVzPy5sZW5ndGgpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RBbGwpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5maWx0ZXJlZFZhbHVlcy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5pc1NlbGVjdGVkID09IHRydWUpO1xyXG4gICAgICAgIC8vIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpXHJcbiAgICAgIH1cclxuICAgICAgZGF0YSA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgICBuZXcgTWFwKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgoaXRlbTogYW55KSA9PiBbXHJcbiAgICAgICAgICAgICAgaXRlbVt1bmlxdWVLZXldLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIC4uLihpdGVtLnN0b3JlTmFtZSA/IHsgc3RvcmVOYW1lOiBpdGVtLnN0b3JlTmFtZSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgLi4uKGl0ZW0uY2x1c3Rlck5hbWUgPyB7IGNsdXN0ZXJOYW1lOiBpdGVtLmNsdXN0ZXJOYW1lIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgICAuLi4oaXRlbS51c2VyTmFtZSA/IHsgdXNlck5hbWU6IGl0ZW0udXNlck5hbWUgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgIC4uLihpdGVtLnRlYW1OYW1lID8geyB0ZWFtTmFtZTogaXRlbS50ZWFtTmFtZSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgLi4uKGl0ZW0uX2lkID8geyBfaWQ6IGl0ZW0uX2lkIH0gOiB7fSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICApLnZhbHVlcygpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcbiAgXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNoaXAtYm94XCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYXNzaWduVHlwZSAhPT0gJ3N0b3JlJ1wiIGNsYXNzPVwib3V0ZXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgdy0xMDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldFZhbHVlcygpO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57e2l0ZW0/LltzZWFyY2hLZXlbMF1dIHx8IGl0ZW0/LltzZWFyY2hLZXlbMV1dfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUJhZGdlKGl0ZW0saSlcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cIm1pbi1oZWlnaHQ6IDQ0cHg7XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBkcm9wZG93bi1pbnB1dCBwcy0zIG1lLTNcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgKGNsaWNrKT1cIm9wZW5Ecm9wZG93bigkZXZlbnQpXCIgKGNoYW5nZSk9XCJvbklucHV0KCRldmVudClcIiBpZD1cInNlYXJjaElucHV0XCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwic2hvd0Ryb3Bkb3duID8gJycgOiAnZC1ub25lJ1wiIGNsYXNzPVwiaW5wdXQtY2hpcCBkcm9wZG93blwiID5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIm11bHRpICYmIGZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2tcIiBmb3I9XCJzZWxlY3RBbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJvblNlbGVjdEFsbCgkZXZlbnQpXCIgW2NoZWNrZWRdPVwiY2hlY2tJZkFsbFNlbGVjdGVkKClcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtM1wiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRWYWx1ZXNcIiBbbmdDbGFzc109XCJpdGVtLmlzU2VsZWN0ZWQgJiYgIW11bHRpID8gJ3NlbGVjdGVkJyA6ICcnXCIgPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaXRlbVtpZEZpZWxkXSArIGluc3RhbmNlSWRcIiBbbmdDbGFzc109XCJtdWx0aSAgPyAnJzogJ3BzLTAnXCIgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtuZ0NsYXNzXT1cIm11bHRpICA/ICcnOiAnZC1ub25lJ1wiIChjaGFuZ2UpPVwib25TZWxlY3QoJGV2ZW50LCBpdGVtKVwiIFsobmdNb2RlbCldPVwiaXRlbS5pc1NlbGVjdGVkXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTNcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtW2lkRmllbGRdICsgaW5zdGFuY2VJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtW3NlYXJjaEtleVswXV0gfHwgaXRlbT8uW3NlYXJjaEtleVsxXV19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gIDxzcGFuIGNsYXNzPVwiYmFkZ2UtdmFsdWUgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW1bYmFkZ2VWYWx1ZV19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFmaWx0ZXJlZFZhbHVlcz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiA+Tm8gZGF0YSBmb3VuZDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPiAgXHJcbiAgICA8L2Rpdj4gIFxyXG4gICBcclxuPC9kaXY+Il19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWNoaXAtZHJvcGRvd24vbXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWNoaXAtZHJvcGRvd24vbXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTbkssTUFBTSxPQUFPLDBCQUEwQjtJQXFDaEI7SUFBK0I7SUFuQ25ELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxL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LENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDckQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUN2QzthQUNGLENBQUMsQ0FDSCxDQUFDLE1BQU0sRUFBRSxDQUNiLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0E1TlUsMEJBQTBCOzRGQUExQiwwQkFBMEIseWJDVHZDLHd4RkE2Q007OzRGRHBDTywwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNO2dIQUk5QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0JqQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1tdWx0aS1jaGlwLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktY2hpcC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL211bHRpLWNoaXAtZHJvcGRvd24uY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlDaGlwRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzIHtcclxuICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpKSB7XHJcbiAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgICAgaWYgKCF0aGlzLnNob3dEcm9wZG93bikge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcclxuICAgICAgIGNvbnN0IHNlYXJjaERhdGEgPSAnJztcclxuICAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBzZWFyY2hEYXRhLnNwbGl0KCcsJykubWFwKChlbDogYW55KSA9PiBlbC50cmltKCkpO1xyXG4gICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiBcclxuICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZC5zb21lKGZpZWxkID0+IHNlYXJjaFRlcm0uc29tZSgodGVybTogYW55KSA9PiBpdGVtW2ZpZWxkXT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSkpKTtcclxuICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgICB9XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgXHJcbiAgIEBJbnB1dCgpIGl0ZW1zOiBhbnlcclxuICAgQElucHV0KCkgc2VhcmNoRmllbGQ6YW55W11cclxuICAgQElucHV0KCkgbXVsdGk6IGJvb2xlYW5cclxuICAgQElucHV0KCkgaWRGaWVsZDogc3RyaW5nXHJcbiAgIEBJbnB1dCgpIHNlbGVjdGVkVmFsdWVzOiBhbnkgPSBbXVxyXG4gICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxyXG4gICBASW5wdXQoKSBsYWJlbDogc3RyaW5nXHJcbiAgQElucHV0KCkgYmFkZ2VWYWx1ZTogc3RyaW5nXHJcbiAgQElucHV0KCkgc2VhcmNoS2V5OiBhbnk7XHJcbiAgQElucHV0KCkgYXNzaWduVHlwZTogYW55O1xyXG4gIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcbiAgQE91dHB1dCgpIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gICBmaWx0ZXJlZFZhbHVlczogYW55ID0gW11cclxuICAgc2hvd0Ryb3Bkb3duOiBib29sZWFuXHJcbiAgIHNlYXJjaFZhbHVlOiBzdHJpbmdcclxuICAgaW5zdGFuY2VJZDogYW55O1xyXG4gIFxyXG4gIFxyXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBhdXRoU2VydmljZTogVHJheFNlcnZpY2UpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgIHRoaXMuaW5zdGFuY2VJZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XHJcbiAgICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIuc3Vic2NyaWJlKChlKT0+eyAgICAgICAgICAgXHJcbiAgICAgICBpZihlICE9PSB0aGlzLmluc3RhbmNlSWQpeyAgICAgICAgXHJcbiAgICAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2VcclxuICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgIH1cclxuICAgICB9KVxyXG4gICB9XHJcbiAgXHJcbiAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLml0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgIHRoaXMuaW5pdGlhbGl6ZUl0ZW1zKCk7XHJcbiAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XHJcbiAgICAgfVxyXG4gXHJcbiAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10gJiYgdGhpcy5zZWxlY3RlZFZhbHVlcz8ubGVuZ3RoICYmIEFycmF5LmlzQXJyYXkoY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXT8uY3VycmVudFZhbHVlKSkgeyAgXHJcbiAgICAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh0aGlzLnNlbGVjdGVkVmFsdWVzKTsgXHJcbiAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICAgfVxyXG4gICB9XHJcbiAgXHJcbiAgIGluaXRpYWxpemVJdGVtcygpIHtcclxuICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHsgLi4uaXRlbSB9KSk7XHJcbiAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpXHJcbiAgIH1cclxuICBcclxuICAgdXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKSB7IFxyXG4gICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXM/LmZvckVhY2goKGZpbHRlcmVkSXRlbTogYW55KSA9PiB7XHJcbiAgICAgICBmaWx0ZXJlZEl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgIH0pO1xyXG4gXHJcbiAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcz8uZm9yRWFjaCgoc2VsZWN0ZWRJdGVtOiBhbnkpID0+IHtcclxuICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkVmFsdWVzPy5maW5kKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4gZmlsdGVyZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSA9PT0gc2VsZWN0ZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSk7XHJcbiAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgfVxyXG4gICAgIH0pO1xyXG4gICB9XHJcbiAgXHJcbiAgIG9wZW5Ecm9wZG93bihldmVudDogYW55KSB7XHJcbiAgICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIubmV4dCh0aGlzLmluc3RhbmNlSWQpXHJcbiAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgdGhpcy5zaG93RHJvcGRvd24gPSAhdGhpcy5zaG93RHJvcGRvd247XHJcbiAgICAgaWYgKCF0aGlzLnNob3dEcm9wZG93bikge1xyXG4gICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xyXG4gICAgICBjb25zdCBzZWFyY2hEYXRhID0gJyc7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBzZWFyY2hEYXRhLnNwbGl0KCcsJykubWFwKChlbDogYW55KSA9PiBlbC50cmltKCkpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5pdGVtcz8uZmlsdGVyKChpdGVtOiBhbnkpID0+IFxyXG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGQuc29tZShmaWVsZCA9PiBzZWFyY2hUZXJtLnNvbWUoKHRlcm06IGFueSkgPT4gaXRlbVtmaWVsZF0/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpKSk7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcmVtb3ZlQmFkZ2UoZGF0YTphbnksaW5kZXg6bnVtYmVyKSB7XHJcbiAgICAvLyB0aGlzLml0ZW1zLnB1c2goZGF0YSk7XHJcbiAgICB0aGlzLnJlbW92ZWQuZW1pdChbZGF0YS5faWRdKVxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMucmVkdWNlKChhY2M6IGFueVtdLCBpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uX2lkICE9PSBkYXRhLl9pZCkge1xyXG4gICAgICAgICAgYWNjLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjYztcclxuICB9LCBbXSk7XHJcbiAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICB9XHJcbiAgXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICAgaWYgKCFldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VhcmNoRGF0YSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBzZWFyY2hEYXRhLnNwbGl0KCcsJykubWFwKChlbDogYW55KSA9PiBlbC50cmltKCkpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXM/LmZpbHRlcigoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRmllbGQuc29tZShmaWVsZCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gc2VhcmNoVGVybS5sZW5ndGggPT09IDEgIFxyXG4gICAgICAgICAgICA/IGl0ZW1bZmllbGRdPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm1bMF0pIC8vIFBhcnRpYWwgbWF0Y2ggZm9yIGEgc2luZ2xlIHRlcm1cclxuICAgICAgICAgICAgOiBzZWFyY2hUZXJtLmluY2x1ZGVzKGl0ZW1bZmllbGRdPy50b0xvd2VyQ2FzZSgpKTsgLy8gRXhhY3QgbWF0Y2ggZm9yIG11bHRpcGxlIHRlcm1zXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgIH1cclxuICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcclxuICAgfVxyXG4gIFxyXG4gICBvblNlbGVjdChldmVudDogYW55LCBpdGVtOiBhbnkpIHsgICAgXHJcbiAgICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGl0ZW0gKTsgICAgICAgIFxyXG4gICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKChlbGVtOiBhbnkpID0+IGVsZW1bdGhpcy5pZEZpZWxkXSAhPT0gaXRlbVt0aGlzLmlkRmllbGRdKTtcclxuICAgICAgICAgdGhpcy5yZW1vdmVkLmVtaXQoW2l0ZW0/Ll9pZF0pXHJcbiAgICAgICB9XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbeyAuLi5pdGVtIH1dO1xyXG4gICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgICBpZihlbGVtZW50W3RoaXMuaWRGaWVsZF0gIT09IGl0ZW1bdGhpcy5pZEZpZWxkXSl7XHJcbiAgICAgICAgICAgZWxlbWVudC5pc1NlbGVjdGVkID0gZmFsc2VcclxuICAgICAgICAgfVxyXG4gICAgICAgfSk7XHJcbiAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gXHJcbiAgICAgfVxyXG4gIFxyXG4gICAgIGNvbnN0IHZhbHVlc1RvRW1pdCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IC4uLnZhbHVlIH07XHJcbiAgICAgICBkZWxldGUgc2VsZWN0ZWRJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgIH0pO1xyXG4gIFxyXG4gICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlc1RvRW1pdCk7XHJcbiAgIH1cclxuICBcclxuICAgb25TZWxlY3RBbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgIGNvbnN0IHNlbGVjdEFsbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcclxuICAgICB0aGlzLnNlbGVjdEFsbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcclxuICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4gaXRlbS5pc1NlbGVjdGVkID0gc2VsZWN0QWxsKTtcclxuXHJcbiAgICAgLy8gU2VsZWN0IEFsbCBhcHBsaWVzIHRvIHRoZSBmaWx0ZXJlZCBsaXN0IG9ubHkuIEFueXRoaW5nIHNlbGVjdGVkIG91dHNpZGUgdGhlXHJcbiAgICAgLy8gYWN0aXZlIHNlYXJjaCBpcyBjYXJyaWVkIG92ZXIgdW50b3VjaGVkIC0gcmVwbGFjaW5nIHRoZSB3aG9sZSBzZWxlY3Rpb25cclxuICAgICAvLyBoZXJlIHdpcGVkIGVhcmxpZXIgcGlja3MgYXMgc29vbiBhcyBhIHNlYXJjaCBuYXJyb3dlZCB0aGUgbGlzdC5cclxuICAgICBjb25zdCBjdXJyZW50ID0gQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkVmFsdWVzKSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXMgOiBbXTtcclxuICAgICBjb25zdCBmaWx0ZXJlZElkcyA9ICh0aGlzLmZpbHRlcmVkVmFsdWVzIHx8IFtdKS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLmlkRmllbGRdKTtcclxuICAgICBjb25zdCBvdXRzaWRlU2VhcmNoID0gY3VycmVudC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gIWZpbHRlcmVkSWRzLmluY2x1ZGVzKGl0ZW1bdGhpcy5pZEZpZWxkXSkpO1xyXG5cclxuICAgICBpZiAoc2VsZWN0QWxsICYmIHRoaXMuZmlsdGVyZWRWYWx1ZXMpIHtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbLi4ub3V0c2lkZVNlYXJjaCwgLi4udGhpcy5maWx0ZXJlZFZhbHVlc107XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBvdXRzaWRlU2VhcmNoO1xyXG4gICAgICAgdGhpcy5yZW1vdmVkLmVtaXQodGhpcy5maWx0ZXJlZFZhbHVlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uX2lkKSlcclxuICAgICB9XHJcblxyXG4gICAgIGNvbnN0IHZhbHVlc1RvRW1pdCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IC4uLnZhbHVlIH07XHJcbiAgICAgICBkZWxldGUgc2VsZWN0ZWRJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgIH0pO1xyXG4gICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlc1RvRW1pdCk7XHJcbiAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIH1cclxuICBcclxuICBcclxuICAgZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlczogYW55W10pIHtcclxuICAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlcyk7XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXNbMF0pO1xyXG4gICAgIH1cclxuICAgfVxyXG4gIFxyXG4gIGNoZWNrSWZBbGxTZWxlY3RlZCgpIHtcclxuICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWVzKCk6IGFueVtdIHtcclxuICAgIC8vIGxldCB1bmlxdWVLZXkgPSB0aGlzLmFzc2lnblR5cGUgPT0gJ3N0b3JlJyA/ICdzdG9yZU5hbWUnIDogdGhpcy5hc3NpZ25UeXBlID09ICd1c2VyJyA/ICd1c2VyTmFtZScgOiB0aGlzLmFzc2lnblR5cGUgPT0gJ2NsdXN0ZXInID8gJ2NsdXN0ZXJOYW1lJyA6ICd0ZWFtTmFtZSc7XHJcbiAgICBsZXQgdW5pcXVlS2V5ID0gJ19pZCc7XHJcbiAgICBsZXQgZGF0YTogYW55ID0gW107XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlcz8ubGVuZ3RoKSB7XHJcbiAgICAgIC8vIFJlYWQtb25seTogdGhpcyBydW5zIG9uIGV2ZXJ5IGNoYW5nZSBkZXRlY3Rpb24gcGFzcywgc28gaXQgbXVzdCBuZXZlclxyXG4gICAgICAvLyB0b3VjaCBzZWxlY3RlZFZhbHVlcy4gSXQgdXNlZCB0byBwcnVuZSBpdCBkb3duIHRvIHRoZSBjdXJyZW50bHkgZmlsdGVyZWRcclxuICAgICAgLy8gaXRlbXMgd2hlbmV2ZXIgc2VsZWN0QWxsIHdhcyBzZXQsIHdoaWNoIHNpbGVudGx5IGRyb3BwZWQgdGhlIGNoaXBzIChhbmRcclxuICAgICAgLy8gdGhlIGVtaXR0ZWQgc2VsZWN0aW9uKSBmb3IgYW55dGhpbmcgb3V0c2lkZSBhbiBhY3RpdmUgc2VhcmNoLlxyXG4gICAgICBkYXRhID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgIG5ldyBNYXAoXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMubWFwKChpdGVtOiBhbnkpID0+IFtcclxuICAgICAgICAgICAgICBpdGVtW3VuaXF1ZUtleV0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgLi4uKGl0ZW0uc3RvcmVOYW1lID8geyBzdG9yZU5hbWU6IGl0ZW0uc3RvcmVOYW1lIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgICAuLi4oaXRlbS5jbHVzdGVyTmFtZSA/IHsgY2x1c3Rlck5hbWU6IGl0ZW0uY2x1c3Rlck5hbWUgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgIC4uLihpdGVtLnVzZXJOYW1lID8geyB1c2VyTmFtZTogaXRlbS51c2VyTmFtZSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgLi4uKGl0ZW0udGVhbU5hbWUgPyB7IHRlYW1OYW1lOiBpdGVtLnRlYW1OYW1lIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgICAuLi4oaXRlbS5faWQgPyB7IF9pZDogaXRlbS5faWQgfSA6IHt9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXSlcclxuICAgICAgICAgICkudmFsdWVzKClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2hpcC1ib3hcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJhc3NpZ25UeXBlICE9PSAnc3RvcmUnXCIgY2xhc3M9XCJvdXRlci1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSB3LTEwMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0VmFsdWVzKCk7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtM1wiPnt7aXRlbT8uW3NlYXJjaEtleVswXV0gfHwgaXRlbT8uW3NlYXJjaEtleVsxXV19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlQmFkZ2UoaXRlbSxpKVwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzTDMgOU0zIDNMOSA5XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IHBzLTMgbWUtM1wiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIiAoY2hhbmdlKT1cIm9uSW5wdXQoJGV2ZW50KVwiIGlkPVwic2VhcmNoSW5wdXRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJzaG93RHJvcGRvd24gPyAnJyA6ICdkLW5vbmUnXCIgY2xhc3M9XCJpbnB1dC1jaGlwIGRyb3Bkb3duXCIgPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwibXVsdGkgJiYgZmlsdGVyZWRWYWx1ZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVja1wiIGZvcj1cInNlbGVjdEFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIiBbY2hlY2tlZF09XCJjaGVja0lmQWxsU2VsZWN0ZWQoKVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0zXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZFZhbHVlc1wiIFtuZ0NsYXNzXT1cIml0ZW0uaXNTZWxlY3RlZCAmJiAhbXVsdGkgPyAnc2VsZWN0ZWQnIDogJydcIiA+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpdGVtW2lkRmllbGRdICsgaW5zdGFuY2VJZFwiIFtuZ0NsYXNzXT1cIm11bHRpICA/ICcnOiAncHMtMCdcIiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25nQ2xhc3NdPVwibXVsdGkgID8gJyc6ICdkLW5vbmUnXCIgKGNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQsIGl0ZW0pXCIgWyhuZ01vZGVsKV09XCJpdGVtLmlzU2VsZWN0ZWRcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtM1wiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW1baWRGaWVsZF0gKyBpbnN0YW5jZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW1bc2VhcmNoS2V5WzBdXSB8fCBpdGVtPy5bc2VhcmNoS2V5WzFdXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAgPHNwYW4gY2xhc3M9XCJiYWRnZS12YWx1ZSBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtiYWRnZVZhbHVlXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiIWZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIiA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiID5ObyBkYXRhIGZvdW5kPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+ICBcclxuICAgIDwvZGl2PiAgXHJcbiAgIFxyXG48L2Rpdj4iXX0=
|
|
@@ -5284,14 +5284,24 @@ class MultiChipDropdownComponent {
|
|
|
5284
5284
|
const selectAll = event.currentTarget.checked;
|
|
5285
5285
|
this.selectAll = event.currentTarget.checked;
|
|
5286
5286
|
this.filteredValues.forEach((item) => item.isSelected = selectAll);
|
|
5287
|
+
// Select All applies to the filtered list only. Anything selected outside the
|
|
5288
|
+
// active search is carried over untouched - replacing the whole selection
|
|
5289
|
+
// here wiped earlier picks as soon as a search narrowed the list.
|
|
5290
|
+
const current = Array.isArray(this.selectedValues) ? this.selectedValues : [];
|
|
5291
|
+
const filteredIds = (this.filteredValues || []).map((item) => item[this.idField]);
|
|
5292
|
+
const outsideSearch = current.filter((item) => !filteredIds.includes(item[this.idField]));
|
|
5287
5293
|
if (selectAll && this.filteredValues) {
|
|
5288
|
-
this.selectedValues = [...this.filteredValues];
|
|
5294
|
+
this.selectedValues = [...outsideSearch, ...this.filteredValues];
|
|
5289
5295
|
}
|
|
5290
5296
|
else {
|
|
5291
|
-
this.selectedValues =
|
|
5297
|
+
this.selectedValues = outsideSearch;
|
|
5292
5298
|
this.removed.emit(this.filteredValues.map((item) => item?._id));
|
|
5293
5299
|
}
|
|
5294
|
-
const valuesToEmit = this.
|
|
5300
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
5301
|
+
const selectedItem = { ...value };
|
|
5302
|
+
delete selectedItem.isSelected;
|
|
5303
|
+
return selectedItem;
|
|
5304
|
+
});
|
|
5295
5305
|
this.emitSelectedValues(valuesToEmit);
|
|
5296
5306
|
this.cd.detectChanges();
|
|
5297
5307
|
}
|
|
@@ -5311,10 +5321,10 @@ class MultiChipDropdownComponent {
|
|
|
5311
5321
|
let uniqueKey = '_id';
|
|
5312
5322
|
let data = [];
|
|
5313
5323
|
if (this.selectedValues?.length) {
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5324
|
+
// Read-only: this runs on every change detection pass, so it must never
|
|
5325
|
+
// touch selectedValues. It used to prune it down to the currently filtered
|
|
5326
|
+
// items whenever selectAll was set, which silently dropped the chips (and
|
|
5327
|
+
// the emitted selection) for anything outside an active search.
|
|
5318
5328
|
data = Array.from(new Map(this.selectedValues.map((item) => [
|
|
5319
5329
|
item[uniqueKey],
|
|
5320
5330
|
{
|