@c80/ui 1.0.34 → 1.0.37
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/icon/icon.component.mjs +65 -205
- package/esm2022/lib/icon/icon.constants.mjs +38 -0
- package/esm2022/lib/icon/icon.types.mjs +2 -0
- package/esm2022/lib/icon/index.mjs +3 -1
- package/esm2022/lib/stat-card/stat-card.component.mjs +1 -1
- package/esm2022/lib/table/table-column-visibility.service.mjs +1 -1
- package/esm2022/lib/table/table-crud-state.service.mjs +97 -76
- package/esm2022/lib/table/table-data-converter.service.mjs +9 -13
- package/esm2022/lib/table/table-data-utils.service.mjs +4 -4
- package/esm2022/lib/table/table-selection.service.mjs +53 -66
- package/esm2022/lib/table/table.component.mjs +24 -7
- package/lib/icon/icon.component.d.ts +38 -44
- package/lib/icon/icon.constants.d.ts +9 -0
- package/lib/icon/icon.types.d.ts +4 -0
- package/lib/icon/index.d.ts +2 -0
- package/lib/stat-card/stat-card.component.d.ts +2 -2
- package/lib/table/table-crud-state.service.d.ts +25 -0
- package/lib/table/table-data-utils.service.d.ts +1 -1
- package/lib/table/table-selection.service.d.ts +14 -8
- package/lib/table/table.component.d.ts +10 -1
- package/package.json +1 -1
|
@@ -18,116 +18,103 @@ export class TableSelectionService {
|
|
|
18
18
|
const selectedItems = signal(new Set());
|
|
19
19
|
const selectAllChecked = signal(false);
|
|
20
20
|
const selectAllIndeterminate = signal(false);
|
|
21
|
-
|
|
22
|
-
selectedItems.
|
|
23
|
-
|
|
21
|
+
return {
|
|
22
|
+
selectedItems: selectedItems.asReadonly(),
|
|
23
|
+
selectAllChecked: selectAllChecked.asReadonly(),
|
|
24
|
+
selectAllIndeterminate: selectAllIndeterminate.asReadonly(),
|
|
25
|
+
clearSelection: this.createClearSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate),
|
|
26
|
+
toggleSelectAll: this.createToggleSelectAllFn(selectedItems, selectAllChecked, selectAllIndeterminate),
|
|
27
|
+
toggleItemSelection: this.createToggleItemSelectionFn(selectedItems),
|
|
28
|
+
isItemSelected: this.createIsItemSelectedFn(selectedItems),
|
|
29
|
+
preserveSelection: this.createPreserveSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate),
|
|
30
|
+
getSelectedItems: this.createGetSelectedItemsFn(selectedItems),
|
|
24
31
|
};
|
|
25
|
-
|
|
26
|
-
|
|
32
|
+
}
|
|
33
|
+
createClearSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate) {
|
|
34
|
+
return () => {
|
|
35
|
+
selectedItems.set(new Set());
|
|
27
36
|
selectAllChecked.set(false);
|
|
28
37
|
selectAllIndeterminate.set(false);
|
|
29
38
|
};
|
|
30
|
-
|
|
39
|
+
}
|
|
40
|
+
createToggleSelectAllFn(selectedItems, selectAllChecked, selectAllIndeterminate) {
|
|
41
|
+
return (allItems) => {
|
|
31
42
|
const currentSelection = selectedItems();
|
|
32
43
|
if (currentSelection.size === allItems.length) {
|
|
33
|
-
|
|
34
|
-
|
|
44
|
+
selectedItems.set(new Set());
|
|
45
|
+
selectAllChecked.set(false);
|
|
46
|
+
selectAllIndeterminate.set(false);
|
|
35
47
|
}
|
|
36
48
|
else {
|
|
37
|
-
// Marcar todos los elementos
|
|
38
49
|
const allIds = new Set(allItems.map(item => item['id']));
|
|
39
50
|
selectedItems.set(allIds);
|
|
40
|
-
|
|
51
|
+
this.updateSelectAllState(allItems, allIds.size, selectAllChecked, selectAllIndeterminate);
|
|
41
52
|
}
|
|
42
53
|
};
|
|
43
|
-
|
|
54
|
+
}
|
|
55
|
+
createToggleItemSelectionFn(selectedItems) {
|
|
56
|
+
return (item, multiple) => {
|
|
44
57
|
const id = item['id'];
|
|
45
58
|
const currentSelection = new Set(selectedItems());
|
|
46
59
|
if (!multiple) {
|
|
47
|
-
// Selección simple: solo permitir un elemento seleccionado
|
|
48
60
|
if (currentSelection.has(id)) {
|
|
49
|
-
// Deseleccionar el elemento actual
|
|
50
61
|
currentSelection.clear();
|
|
51
62
|
}
|
|
52
63
|
else {
|
|
53
|
-
// Seleccionar solo este elemento
|
|
54
64
|
currentSelection.clear();
|
|
55
65
|
currentSelection.add(id);
|
|
56
66
|
}
|
|
57
67
|
}
|
|
58
68
|
else if (currentSelection.has(id)) {
|
|
59
|
-
// Selección múltiple: deseleccionar elemento existente
|
|
60
69
|
currentSelection.delete(id);
|
|
61
70
|
}
|
|
62
71
|
else {
|
|
63
|
-
// Selección múltiple: agregar nuevo elemento
|
|
64
72
|
currentSelection.add(id);
|
|
65
73
|
}
|
|
66
74
|
selectedItems.set(currentSelection);
|
|
67
75
|
};
|
|
68
|
-
|
|
76
|
+
}
|
|
77
|
+
createIsItemSelectedFn(selectedItems) {
|
|
78
|
+
return (item) => {
|
|
69
79
|
const id = item['id'];
|
|
70
80
|
return selectedItems().has(id);
|
|
71
81
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (selectedCount === 0) {
|
|
76
|
-
selectAllChecked.set(false);
|
|
77
|
-
selectAllIndeterminate.set(false);
|
|
78
|
-
}
|
|
79
|
-
else if (selectedCount === totalCount) {
|
|
80
|
-
selectAllChecked.set(true);
|
|
81
|
-
selectAllIndeterminate.set(false);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
selectAllChecked.set(false);
|
|
85
|
-
selectAllIndeterminate.set(true);
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
const preserveSelection = (newData) => {
|
|
82
|
+
}
|
|
83
|
+
createPreserveSelectionFn(selectedItems, selectAllChecked, selectAllIndeterminate) {
|
|
84
|
+
return (newData) => {
|
|
89
85
|
const currentSelection = selectedItems();
|
|
90
86
|
if (currentSelection.size === 0 || newData.length === 0) {
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
selectedItems.set(new Set());
|
|
88
|
+
selectAllChecked.set(false);
|
|
89
|
+
selectAllIndeterminate.set(false);
|
|
93
90
|
return;
|
|
94
91
|
}
|
|
95
|
-
// Obtener los IDs disponibles en los nuevos datos
|
|
96
92
|
const availableIds = new Set(newData.map(item => item['id']));
|
|
97
|
-
// Filtrar la selección actual para mantener solo los IDs que aún existen
|
|
98
93
|
const preservedSelection = new Set(Array.from(currentSelection).filter(id => availableIds.has(id)));
|
|
99
|
-
// Actualizar la selección con los IDs preservados
|
|
100
94
|
selectedItems.set(preservedSelection);
|
|
101
|
-
|
|
95
|
+
this.updateSelectAllState(newData, preservedSelection.size, selectAllChecked, selectAllIndeterminate);
|
|
102
96
|
};
|
|
103
|
-
|
|
97
|
+
}
|
|
98
|
+
createGetSelectedItemsFn(selectedItems) {
|
|
99
|
+
return (allData) => {
|
|
104
100
|
const selectedIds = selectedItems();
|
|
105
101
|
return allData.filter(item => selectedIds.has(item['id']));
|
|
106
102
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
// Métodos
|
|
123
|
-
clearSelection,
|
|
124
|
-
toggleSelectAll,
|
|
125
|
-
toggleItemSelection,
|
|
126
|
-
isItemSelected,
|
|
127
|
-
preserveSelection,
|
|
128
|
-
getSelectedItems,
|
|
129
|
-
updateSelectAllState: updateSelectAllStateWrapper,
|
|
130
|
-
};
|
|
103
|
+
}
|
|
104
|
+
updateSelectAllState(allItems, selectedCount, selectAllChecked, selectAllIndeterminate) {
|
|
105
|
+
const totalCount = allItems.length;
|
|
106
|
+
if (selectedCount === 0) {
|
|
107
|
+
selectAllChecked.set(false);
|
|
108
|
+
selectAllIndeterminate.set(false);
|
|
109
|
+
}
|
|
110
|
+
else if (selectedCount === totalCount) {
|
|
111
|
+
selectAllChecked.set(true);
|
|
112
|
+
selectAllIndeterminate.set(false);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
selectAllChecked.set(false);
|
|
116
|
+
selectAllIndeterminate.set(true);
|
|
117
|
+
}
|
|
131
118
|
}
|
|
132
119
|
/**
|
|
133
120
|
* Emite los elementos seleccionados a través del EventEmitter proporcionado
|
|
@@ -148,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
148
135
|
providedIn: 'root'
|
|
149
136
|
}]
|
|
150
137
|
}] });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvdGFibGUvdGFibGUtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUdqRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2hCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsTUFBTSxjQUFjLEdBQUcsR0FBUyxFQUFFO1lBQzlCLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLG9CQUFvQixFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxHQUFTLEVBQUU7WUFDcEMsdUVBQXVFO1lBQ3ZFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixzQkFBc0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFhLEVBQVEsRUFBRTtZQUM1QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsRUFBRSxDQUFDO1lBRXpDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUMsZ0NBQWdDO2dCQUNoQyxjQUFjLEVBQUUsQ0FBQztZQUNyQixDQUFDO2lCQUFNLENBQUM7Z0JB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QkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDL0Msc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsVUFBVSxFQUFFO1lBRTNELFVBQVU7WUFDVixjQUFjO1lBQ2QsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixvQkFBb0IsRUFBRSwyQkFBMkI7U0FDcEQsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FDVCxjQUErRCxFQUMvRCxPQUFZLEVBQ1osaUJBQW9DO1FBRXBDLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQzt3R0FySlEscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7NEZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRCB9IGZyb20gJy4vdGFibGUudHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgZ2VzdGlvbmFyIGxhIHNlbGVjY2nDs24gZGUgZWxlbWVudG9zIGVuIHRhYmxhcyBDODBcbiAqXG4gKiBNYW5lamE6XG4gKiAtIFNlbGVjY2nDs24gc2ltcGxlIHkgbcO6bHRpcGxlXG4gKiAtIEVzdGFkbyBkZSBzZWxlY2Npw7NuIGNvbXBsZXRhXG4gKiAtIFByZXNlcnZhY2nDs24gZGUgc2VsZWNjacOzbiB0cmFzIGFjdHVhbGl6YWNpb25lcyBkZSBkYXRvc1xuICogLSBFbWlzacOzbiBkZSBldmVudG9zIGRlIHNlbGVjY2nDs25cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNlbGVjdGlvblNlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogSW5pY2lhbGl6YSBlbCBlc3RhZG8gZGUgc2VsZWNjacOzbiBwYXJhIHVuYSBudWV2YSB0YWJsYVxuICAgICAqIEByZXR1cm5zIE9iamV0byBjb24gc2lnbmFscyB5IG3DqXRvZG9zIGRlIHNlbGVjY2nDs25cbiAgICAgKi9cbiAgICBjcmVhdGVTZWxlY3Rpb25TdGF0ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPFNldDxJRD4+KG5ldyBTZXQoKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgICAgICBjb25zdCBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICAgICAgICBjb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgICAgICAgICB1cGRhdGVTZWxlY3RBbGxTdGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZVNlbGVjdEFsbFN0YXRlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgLy8gRXN0YSBmdW5jacOzbiBzZXLDoSBhY3R1YWxpemFkYSBjdWFuZG8gc2UgdGVuZ2FuIGxvcyBkYXRvcyBkaXNwb25pYmxlc1xuICAgICAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRvZ2dsZVNlbGVjdEFsbCA9IChhbGxJdGVtczogVFtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gc2VsZWN0ZWRJdGVtcygpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGlvbi5zaXplID09PSBhbGxJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyBEZXNtYXJjYXIgdG9kb3MgbG9zIGVsZW1lbnRvc1xuICAgICAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE1hcmNhciB0b2RvcyBsb3MgZWxlbWVudG9zXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gbmV3IFNldChhbGxJdGVtcy5tYXAoaXRlbSA9PiBpdGVtWydpZCddIGFzIElEKSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZXQoYWxsSWRzKTtcbiAgICAgICAgICAgICAgICB1cGRhdGVTZWxlY3RBbGxTdGF0ZVdpdGhEYXRhKGFsbEl0ZW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCB0b2dnbGVJdGVtU2VsZWN0aW9uID0gKGl0ZW06IFQsIG11bHRpcGxlOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IGl0ZW1bJ2lkJ10gYXMgSUQ7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gbmV3IFNldChzZWxlY3RlZEl0ZW1zKCkpO1xuXG4gICAgICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWNjacOzbiBzaW1wbGU6IHNvbG8gcGVybWl0aXIgdW4gZWxlbWVudG8gc2VsZWNjaW9uYWRvXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24uaGFzKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBEZXNlbGVjY2lvbmFyIGVsIGVsZW1lbnRvIGFjdHVhbFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWNjaW9uYXIgc29sbyBlc3RlIGVsZW1lbnRvXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbi5hZGQoaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFNlbGVjdGlvbi5oYXMoaWQpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWNjacOzbiBtw7psdGlwbGU6IGRlc2VsZWNjaW9uYXIgZWxlbWVudG8gZXhpc3RlbnRlXG4gICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbi5kZWxldGUoaWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY2Npw7NuIG3Dumx0aXBsZTogYWdyZWdhciBudWV2byBlbGVtZW50b1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkKGlkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZXQoY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSAoaXRlbTogVCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBpdGVtWydpZCddIGFzIElEO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbXMoKS5oYXMoaWQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZVNlbGVjdEFsbFN0YXRlV2l0aERhdGEgPSAoYWxsSXRlbXM6IFRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IHNlbGVjdGVkSXRlbXMoKS5zaXplO1xuICAgICAgICAgICAgY29uc3QgdG90YWxDb3VudCA9IGFsbEl0ZW1zLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENvdW50ID09PSB0b3RhbENvdW50KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcHJlc2VydmVTZWxlY3Rpb24gPSAobmV3RGF0YTogVFtdKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gc2VsZWN0ZWRJdGVtcygpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGlvbi5zaXplID09PSAwIHx8IG5ld0RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gU2kgbm8gaGF5IHNlbGVjY2nDs24gbyBubyBoYXkgZGF0b3MsIGxpbXBpYXIgbGEgc2VsZWNjacOzblxuICAgICAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBPYnRlbmVyIGxvcyBJRHMgZGlzcG9uaWJsZXMgZW4gbG9zIG51ZXZvcyBkYXRvc1xuICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlSWRzID0gbmV3IFNldChuZXdEYXRhLm1hcChpdGVtID0+IGl0ZW1bJ2lkJ10gYXMgSUQpKTtcblxuICAgICAgICAgICAgLy8gRmlsdHJhciBsYSBzZWxlY2Npw7NuIGFjdHVhbCBwYXJhIG1hbnRlbmVyIHNvbG8gbG9zIElEcyBxdWUgYcO6biBleGlzdGVuXG4gICAgICAgICAgICBjb25zdCBwcmVzZXJ2ZWRTZWxlY3Rpb24gPSBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbikuZmlsdGVyKGlkID0+IGF2YWlsYWJsZUlkcy5oYXMoaWQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQWN0dWFsaXphciBsYSBzZWxlY2Npw7NuIGNvbiBsb3MgSURzIHByZXNlcnZhZG9zXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNldChwcmVzZXJ2ZWRTZWxlY3Rpb24pO1xuICAgICAgICAgICAgdXBkYXRlU2VsZWN0QWxsU3RhdGVXaXRoRGF0YShuZXdEYXRhKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZXRTZWxlY3RlZEl0ZW1zID0gKGFsbERhdGE6IFRbXSk6IFRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgIHJldHVybiBhbGxEYXRhLmZpbHRlcihpdGVtID0+IHNlbGVjdGVkSWRzLmhhcyhpdGVtWydpZCddIGFzIElEKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUmVkZWZpbmlyIHVwZGF0ZVNlbGVjdEFsbFN0YXRlIGNvbiBhY2Nlc28gYSBsb3MgZGF0b3NcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxVcGRhdGVTZWxlY3RBbGxTdGF0ZSA9IHVwZGF0ZVNlbGVjdEFsbFN0YXRlO1xuICAgICAgICBjb25zdCB1cGRhdGVTZWxlY3RBbGxTdGF0ZVdyYXBwZXIgPSAoYWxsSXRlbXM/OiBUW10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChhbGxJdGVtcykge1xuICAgICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdEFsbFN0YXRlV2l0aERhdGEoYWxsSXRlbXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbFVwZGF0ZVNlbGVjdEFsbFN0YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC8vIFNpZ25hbHNcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IHNlbGVjdGVkSXRlbXMuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZDogc2VsZWN0QWxsQ2hlY2tlZC5hc1JlYWRvbmx5KCksXG4gICAgICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBzZWxlY3RBbGxJbmRldGVybWluYXRlLmFzUmVhZG9ubHkoKSxcblxuICAgICAgICAgICAgLy8gTcOpdG9kb3NcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uLFxuICAgICAgICAgICAgdG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgdG9nZ2xlSXRlbVNlbGVjdGlvbixcbiAgICAgICAgICAgIGlzSXRlbVNlbGVjdGVkLFxuICAgICAgICAgICAgcHJlc2VydmVTZWxlY3Rpb24sXG4gICAgICAgICAgICBnZXRTZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0QWxsU3RhdGU6IHVwZGF0ZVNlbGVjdEFsbFN0YXRlV3JhcHBlcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0ZSBsb3MgZWxlbWVudG9zIHNlbGVjY2lvbmFkb3MgYSB0cmF2w6lzIGRlbCBFdmVudEVtaXR0ZXIgcHJvcG9yY2lvbmFkb1xuICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGF0ZSAtIEVzdGFkbyBkZSBzZWxlY2Npw7NuXG4gICAgICogQHBhcmFtIGFsbERhdGEgLSBUb2RvcyBsb3MgZGF0b3MgZGUgbGEgdGFibGFcbiAgICAgKiBAcGFyYW0gc2VsZWN0YWJsZUVtaXR0ZXIgLSBFdmVudEVtaXR0ZXIgcGFyYSBlbWl0aXIgbGEgc2VsZWNjacOzblxuICAgICAqL1xuICAgIGVtaXRTZWxlY3Rpb248VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgc2VsZWN0aW9uU3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIHRoaXMuY3JlYXRlU2VsZWN0aW9uU3RhdGU8VD4+LFxuICAgICAgICBhbGxEYXRhOiBUW10sXG4gICAgICAgIHNlbGVjdGFibGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8VFtdPlxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gc2VsZWN0aW9uU3RhdGUuZ2V0U2VsZWN0ZWRJdGVtcyhhbGxEYXRhKTtcbiAgICAgICAgc2VsZWN0YWJsZUVtaXR0ZXIuZW1pdChzZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG59XG4iXX0=
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NyYy9saWIvdGFibGUvdGFibGUtc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQUdqRTs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2hCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsT0FBTztZQUNILGFBQWEsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQ3pDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUMvQyxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQyxVQUFVLEVBQUU7WUFDM0QsY0FBYyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7WUFDcEcsZUFBZSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7WUFDdEcsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGFBQWEsQ0FBQztZQUNwRSxjQUFjLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQztZQUMxRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDO1lBQzFHLGdCQUFnQixFQUFFLElBQUks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O1FBQ3JFLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxvQkFBb0IsQ0FDeEIsUUFBYSxFQUNiLGFBQXFCLEVBQ3JCLGdCQUFvRCxFQUNwRCxzQkFBMEQ7UUFFMUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVuQyxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxJQUFJLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0Isc0JBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ0osZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUNULGNBQTRELEVBQzVELE9BQVksRUFDWixpQkFBb0M7UUFFcEMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQ3RFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO3dHQTVKUSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEIH0gZnJvbSAnLi90YWJsZS50eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBnZXN0aW9uYXIgbGEgc2VsZWNjacOzbiBkZSBlbGVtZW50b3MgZW4gdGFibGFzIEM4MFxuICpcbiAqIE1hbmVqYTpcbiAqIC0gU2VsZWNjacOzbiBzaW1wbGUgeSBtw7psdGlwbGVcbiAqIC0gRXN0YWRvIGRlIHNlbGVjY2nDs24gY29tcGxldGFcbiAqIC0gUHJlc2VydmFjacOzbiBkZSBzZWxlY2Npw7NuIHRyYXMgYWN0dWFsaXphY2lvbmVzIGRlIGRhdG9zXG4gKiAtIEVtaXNpw7NuIGRlIGV2ZW50b3MgZGUgc2VsZWNjacOzblxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VsZWN0aW9uU2VydmljZSB7XG5cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIGVzdGFkbyBkZSBzZWxlY2Npw7NuIHBhcmEgdW5hIG51ZXZhIHRhYmxhXG4gICAgICogQHJldHVybnMgT2JqZXRvIGNvbiBzaWduYWxzIHkgbcOpdG9kb3MgZGUgc2VsZWNjacOzblxuICAgICAqL1xuICAgIGNyZWF0ZVNlbGVjdGlvblN0YXRlPF9UIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPFNldDxJRD4+KG5ldyBTZXQoKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgICAgICBjb25zdCBzZWxlY3RBbGxJbmRldGVybWluYXRlID0gc2lnbmFsKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtczogc2VsZWN0ZWRJdGVtcy5hc1JlYWRvbmx5KCksXG4gICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkOiBzZWxlY3RBbGxDaGVja2VkLmFzUmVhZG9ubHkoKSxcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuYXNSZWFkb25seSgpLFxuICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb246IHRoaXMuY3JlYXRlQ2xlYXJTZWxlY3Rpb25GbihzZWxlY3RlZEl0ZW1zLCBzZWxlY3RBbGxDaGVja2VkLCBzZWxlY3RBbGxJbmRldGVybWluYXRlKSxcbiAgICAgICAgICAgIHRvZ2dsZVNlbGVjdEFsbDogdGhpcy5jcmVhdGVUb2dnbGVTZWxlY3RBbGxGbihzZWxlY3RlZEl0ZW1zLCBzZWxlY3RBbGxDaGVja2VkLCBzZWxlY3RBbGxJbmRldGVybWluYXRlKSxcbiAgICAgICAgICAgIHRvZ2dsZUl0ZW1TZWxlY3Rpb246IHRoaXMuY3JlYXRlVG9nZ2xlSXRlbVNlbGVjdGlvbkZuKHNlbGVjdGVkSXRlbXMpLFxuICAgICAgICAgICAgaXNJdGVtU2VsZWN0ZWQ6IHRoaXMuY3JlYXRlSXNJdGVtU2VsZWN0ZWRGbihzZWxlY3RlZEl0ZW1zKSxcbiAgICAgICAgICAgIHByZXNlcnZlU2VsZWN0aW9uOiB0aGlzLmNyZWF0ZVByZXNlcnZlU2VsZWN0aW9uRm4oc2VsZWN0ZWRJdGVtcywgc2VsZWN0QWxsQ2hlY2tlZCwgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSksXG4gICAgICAgICAgICBnZXRTZWxlY3RlZEl0ZW1zOiB0aGlzLmNyZWF0ZUdldFNlbGVjdGVkSXRlbXNGbihzZWxlY3RlZEl0ZW1zKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNsZWFyU2VsZWN0aW9uRm4oXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxTZXQ8SUQ+Pj4sXG4gICAgICAgIHNlbGVjdEFsbENoZWNrZWQ6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj4sXG4gICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGU6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxib29sZWFuPj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlLnNldChmYWxzZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUb2dnbGVTZWxlY3RBbGxGbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PElEPj4+LFxuICAgICAgICBzZWxlY3RBbGxDaGVja2VkOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+LFxuICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoYWxsSXRlbXM6IFRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHNlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24uc2l6ZSA9PT0gYWxsSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZXQobmV3IFNldCgpKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZS5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxJZHMgPSBuZXcgU2V0KGFsbEl0ZW1zLm1hcChpdGVtID0+IGl0ZW1bJ2lkJ10gYXMgSUQpKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNldChhbGxJZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0QWxsU3RhdGUoYWxsSXRlbXMsIGFsbElkcy5zaXplLCBzZWxlY3RBbGxDaGVja2VkLCBzZWxlY3RBbGxJbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRvZ2dsZUl0ZW1TZWxlY3Rpb25GbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8U2V0PElEPj4+XG4gICAgKSB7XG4gICAgICAgIHJldHVybiAoaXRlbTogVCwgbXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaXRlbVsnaWQnXSBhcyBJRDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSBuZXcgU2V0KHNlbGVjdGVkSXRlbXMoKSk7XG5cbiAgICAgICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGlvbi5oYXMoaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRTZWxlY3Rpb24uaGFzKGlkKSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uZGVsZXRlKGlkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbi5hZGQoaWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNldChjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUlzSXRlbVNlbGVjdGVkRm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgc2VsZWN0ZWRJdGVtczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFNldDxJRD4+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKGl0ZW06IFQpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaXRlbVsnaWQnXSBhcyBJRDtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zKCkuaGFzKGlkKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByZXNlcnZlU2VsZWN0aW9uRm48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgc2VsZWN0ZWRJdGVtczogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPFNldDxJRD4+PixcbiAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PixcbiAgICAgICAgc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZTogUmV0dXJuVHlwZTx0eXBlb2Ygc2lnbmFsPGJvb2xlYW4+PlxuICAgICkge1xuICAgICAgICByZXR1cm4gKG5ld0RhdGE6IFRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHNlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24uc2l6ZSA9PT0gMCB8fCBuZXdEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc2V0KG5ldyBTZXQoKSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0QWxsQ2hlY2tlZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUlkcyA9IG5ldyBTZXQobmV3RGF0YS5tYXAoaXRlbSA9PiBpdGVtWydpZCddIGFzIElEKSk7XG4gICAgICAgICAgICBjb25zdCBwcmVzZXJ2ZWRTZWxlY3Rpb24gPSBuZXcgU2V0KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbikuZmlsdGVyKGlkID0+IGF2YWlsYWJsZUlkcy5oYXMoaWQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5zZXQocHJlc2VydmVkU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0QWxsU3RhdGUobmV3RGF0YSwgcHJlc2VydmVkU2VsZWN0aW9uLnNpemUsIHNlbGVjdEFsbENoZWNrZWQsIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlR2V0U2VsZWN0ZWRJdGVtc0ZuPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IFJldHVyblR5cGU8dHlwZW9mIHNpZ25hbDxTZXQ8SUQ+Pj5cbiAgICApIHtcbiAgICAgICAgcmV0dXJuIChhbGxEYXRhOiBUW10pOiBUW10gPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBzZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAgICAgICByZXR1cm4gYWxsRGF0YS5maWx0ZXIoaXRlbSA9PiBzZWxlY3RlZElkcy5oYXMoaXRlbVsnaWQnXSBhcyBJRCkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VsZWN0QWxsU3RhdGU8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICAgICAgYWxsSXRlbXM6IFRbXSxcbiAgICAgICAgc2VsZWN0ZWRDb3VudDogbnVtYmVyLFxuICAgICAgICBzZWxlY3RBbGxDaGVja2VkOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+LFxuICAgICAgICBzZWxlY3RBbGxJbmRldGVybWluYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBzaWduYWw8Ym9vbGVhbj4+XG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhbGxJdGVtcy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbENoZWNrZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZENvdW50ID09PSB0b3RhbENvdW50KSB7XG4gICAgICAgICAgICBzZWxlY3RBbGxDaGVja2VkLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdEFsbENoZWNrZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdGUgbG9zIGVsZW1lbnRvcyBzZWxlY2Npb25hZG9zIGEgdHJhdsOpcyBkZWwgRXZlbnRFbWl0dGVyIHByb3BvcmNpb25hZG9cbiAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhdGUgLSBFc3RhZG8gZGUgc2VsZWNjacOzblxuICAgICAqIEBwYXJhbSBhbGxEYXRhIC0gVG9kb3MgbG9zIGRhdG9zIGRlIGxhIHRhYmxhXG4gICAgICogQHBhcmFtIHNlbGVjdGFibGVFbWl0dGVyIC0gRXZlbnRFbWl0dGVyIHBhcmEgZW1pdGlyIGxhIHNlbGVjY2nDs25cbiAgICAgKi9cbiAgICBlbWl0U2VsZWN0aW9uPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgICAgIHNlbGVjdGlvblN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmNyZWF0ZVNlbGVjdGlvblN0YXRlPixcbiAgICAgICAgYWxsRGF0YTogVFtdLFxuICAgICAgICBzZWxlY3RhYmxlRW1pdHRlcjogRXZlbnRFbWl0dGVyPFRbXT5cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGlvblN0YXRlLmdldFNlbGVjdGVkSXRlbXMoYWxsRGF0YSkgYXMgVFtdO1xuICAgICAgICBzZWxlY3RhYmxlRW1pdHRlci5lbWl0KHNlbGVjdGVkSXRlbXMpO1xuICAgIH1cbn1cbiJdfQ==
|