@1money/component-ui 0.0.45 → 0.0.47
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/es/components/Table/Table.d.ts +2 -2
- package/es/components/Table/Table.js +25 -148
- package/es/components/Table/VirtualTable.d.ts +2 -2
- package/es/components/Table/VirtualTable.js +30 -143
- package/es/components/Table/core/useTableColumns.d.ts +21 -7
- package/es/components/Table/core/useTableColumns.js +65 -13
- package/es/components/Table/core/useTableDataPipeline.d.ts +13 -6
- package/es/components/Table/core/useTableDataPipeline.js +193 -27
- package/es/components/Table/core/useTableExpand.d.ts +2 -2
- package/es/components/Table/core/useTableSelection.d.ts +3 -5
- package/es/components/Table/core/useTableSelection.js +1 -1
- package/es/components/Table/core/useTableSetup.d.ts +42 -0
- package/es/components/Table/core/useTableSetup.js +175 -0
- package/es/components/Table/features/ExpandTrigger.js +2 -1
- package/es/components/Table/features/FilterTrigger.d.ts +9 -0
- package/es/components/Table/features/FilterTrigger.js +157 -0
- package/es/components/Table/features/SelectionColumn.d.ts +3 -2
- package/es/components/Table/features/SelectionColumn.js +19 -6
- package/es/components/Table/interface.d.ts +102 -21
- package/es/components/Table/renderers/BodyCell.d.ts +4 -4
- package/es/components/Table/renderers/BodyCell.js +1 -1
- package/es/components/Table/renderers/HeaderCell.d.ts +8 -4
- package/es/components/Table/renderers/HeaderCell.js +13 -3
- package/es/components/Table/style/Table.css +1 -1
- package/es/components/Tooltip/Tooltip.js +24 -19
- package/es/components/Tooltip/interface.d.ts +2 -0
- package/es/index.css +1 -1
- package/lib/components/Table/Table.d.ts +2 -2
- package/lib/components/Table/Table.js +24 -150
- package/lib/components/Table/VirtualTable.d.ts +2 -2
- package/lib/components/Table/VirtualTable.js +28 -144
- package/lib/components/Table/core/useTableColumns.d.ts +21 -7
- package/lib/components/Table/core/useTableColumns.js +65 -13
- package/lib/components/Table/core/useTableDataPipeline.d.ts +13 -6
- package/lib/components/Table/core/useTableDataPipeline.js +192 -26
- package/lib/components/Table/core/useTableExpand.d.ts +2 -2
- package/lib/components/Table/core/useTableSelection.d.ts +3 -5
- package/lib/components/Table/core/useTableSelection.js +1 -1
- package/lib/components/Table/core/useTableSetup.d.ts +42 -0
- package/lib/components/Table/core/useTableSetup.js +184 -0
- package/lib/components/Table/features/ExpandTrigger.js +2 -1
- package/lib/components/Table/features/FilterTrigger.d.ts +9 -0
- package/lib/components/Table/features/FilterTrigger.js +164 -0
- package/lib/components/Table/features/SelectionColumn.d.ts +3 -2
- package/lib/components/Table/features/SelectionColumn.js +19 -6
- package/lib/components/Table/interface.d.ts +102 -21
- package/lib/components/Table/renderers/BodyCell.d.ts +4 -4
- package/lib/components/Table/renderers/BodyCell.js +1 -1
- package/lib/components/Table/renderers/HeaderCell.d.ts +8 -4
- package/lib/components/Table/renderers/HeaderCell.js +13 -3
- package/lib/components/Table/style/Table.css +1 -1
- package/lib/components/Tooltip/Tooltip.js +24 -19
- package/lib/components/Tooltip/interface.d.ts +2 -0
- package/lib/index.css +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +126 -0
- package/scripts/mcp-server/index.generated.json +348 -14
|
@@ -93,17 +93,46 @@ function applySortToData(data, columns, sorterStates) {
|
|
|
93
93
|
});
|
|
94
94
|
return sorted;
|
|
95
95
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
function applyFiltersToData(data, columns, filters) {
|
|
97
|
+
// Resolve which columns have an active filter selection AND a predicate.
|
|
98
|
+
var activeFilters = columns.map(function (col) {
|
|
99
|
+
if (col.key == null) return null;
|
|
100
|
+
var selected = filters[String(col.key)];
|
|
101
|
+
if (!selected || selected.length === 0) return null;
|
|
102
|
+
if (!col.onFilter) return null;
|
|
103
|
+
return {
|
|
104
|
+
onFilter: col.onFilter,
|
|
105
|
+
selected: selected
|
|
106
|
+
};
|
|
107
|
+
}).filter(Boolean);
|
|
108
|
+
if (activeFilters.length === 0) return data;
|
|
109
|
+
return data.filter(function (record) {
|
|
110
|
+
return (
|
|
111
|
+
// Row passes only if EVERY active column has at least one matching selected value.
|
|
112
|
+
activeFilters.every(function (_ref) {
|
|
113
|
+
var onFilter = _ref.onFilter,
|
|
114
|
+
selected = _ref.selected;
|
|
115
|
+
return selected.some(function (value) {
|
|
116
|
+
return onFilter(value, record);
|
|
117
|
+
});
|
|
118
|
+
})
|
|
119
|
+
);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
var applyTablePipeline = exports.applyTablePipeline = function applyTablePipeline(_ref2) {
|
|
123
|
+
var columns = _ref2.columns,
|
|
124
|
+
dataSource = _ref2.dataSource,
|
|
125
|
+
sorter = _ref2.sorter,
|
|
126
|
+
_ref2$filters = _ref2.filters,
|
|
127
|
+
filters = _ref2$filters === void 0 ? {} : _ref2$filters,
|
|
128
|
+
pagination = _ref2.pagination;
|
|
101
129
|
var sorterStates = sorter.columnKey != null && sorter.order ? [{
|
|
102
130
|
columnKey: sorter.columnKey,
|
|
103
131
|
order: sorter.order
|
|
104
132
|
}] : [];
|
|
105
133
|
var leafColumns = flattenColumns(columns);
|
|
106
|
-
var
|
|
134
|
+
var filtered = applyFiltersToData(dataSource, leafColumns, filters);
|
|
135
|
+
var sorted = applySortToData(filtered, leafColumns, sorterStates);
|
|
107
136
|
if (!pagination) {
|
|
108
137
|
return {
|
|
109
138
|
currentDataSource: sorted,
|
|
@@ -163,24 +192,119 @@ var getControlledSorter = function getControlledSorter(columns) {
|
|
|
163
192
|
order: (_a = controlledColumn.sortOrder) !== null && _a !== void 0 ? _a : null
|
|
164
193
|
};
|
|
165
194
|
};
|
|
166
|
-
var
|
|
167
|
-
var
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
195
|
+
var getInitialFilters = function getInitialFilters(columns) {
|
|
196
|
+
var _a;
|
|
197
|
+
var leaves = flattenColumns(columns);
|
|
198
|
+
var state = {};
|
|
199
|
+
var _iterator4 = _createForOfIteratorHelper(leaves),
|
|
200
|
+
_step4;
|
|
201
|
+
try {
|
|
202
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
203
|
+
var col = _step4.value;
|
|
204
|
+
if (col.key == null) continue;
|
|
205
|
+
var initial = (_a = col.defaultFilteredValue) !== null && _a !== void 0 ? _a : col.filteredValue;
|
|
206
|
+
if (initial !== undefined) {
|
|
207
|
+
state[String(col.key)] = initial !== null && initial !== void 0 ? initial : null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
} catch (err) {
|
|
211
|
+
_iterator4.e(err);
|
|
212
|
+
} finally {
|
|
213
|
+
_iterator4.f();
|
|
214
|
+
}
|
|
215
|
+
return state;
|
|
216
|
+
};
|
|
217
|
+
var getControlledFilters = function getControlledFilters(columns) {
|
|
218
|
+
var leaves = flattenColumns(columns);
|
|
219
|
+
var hasControlled = false;
|
|
220
|
+
var state = {};
|
|
221
|
+
var _iterator5 = _createForOfIteratorHelper(leaves),
|
|
222
|
+
_step5;
|
|
223
|
+
try {
|
|
224
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
225
|
+
var col = _step5.value;
|
|
226
|
+
if (col.key == null) continue;
|
|
227
|
+
if (col.filteredValue !== undefined) {
|
|
228
|
+
hasControlled = true;
|
|
229
|
+
state[String(col.key)] = col.filteredValue;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
} catch (err) {
|
|
233
|
+
_iterator5.e(err);
|
|
234
|
+
} finally {
|
|
235
|
+
_iterator5.f();
|
|
236
|
+
}
|
|
237
|
+
return hasControlled ? state : undefined;
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Returns a value whose reference is preserved across renders as long as the
|
|
241
|
+
* shallow contents are unchanged (per `equal`). Used to stabilise the derived
|
|
242
|
+
* controlled candidates fed to `useControlledState` — they would otherwise be
|
|
243
|
+
* fresh objects every render and thrash the hook's internal `useLayoutEffect`.
|
|
244
|
+
*/
|
|
245
|
+
function useStableRef(value, equal) {
|
|
246
|
+
var ref = (0, _react.useRef)(value);
|
|
247
|
+
if (!equal(ref.current, value)) {
|
|
248
|
+
ref.current = value;
|
|
249
|
+
}
|
|
250
|
+
return ref.current;
|
|
251
|
+
}
|
|
252
|
+
function sorterEqual(a, b) {
|
|
253
|
+
if (a === b) return true;
|
|
254
|
+
if (!a || !b) return false;
|
|
255
|
+
return a.columnKey === b.columnKey && a.order === b.order;
|
|
256
|
+
}
|
|
257
|
+
function filterValueEqual(a, b) {
|
|
258
|
+
if (a === b) return true;
|
|
259
|
+
if (!a || !b) return false;
|
|
260
|
+
if (a.length !== b.length) return false;
|
|
261
|
+
for (var i = 0; i < a.length; i++) {
|
|
262
|
+
if (a[i] !== b[i]) return false;
|
|
263
|
+
}
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
function filtersEqual(a, b) {
|
|
267
|
+
if (a === b) return true;
|
|
268
|
+
if (!a || !b) return false;
|
|
269
|
+
var keysA = Object.keys(a);
|
|
270
|
+
var keysB = Object.keys(b);
|
|
271
|
+
if (keysA.length !== keysB.length) return false;
|
|
272
|
+
for (var _i = 0, _keysA = keysA; _i < _keysA.length; _i++) {
|
|
273
|
+
var key = _keysA[_i];
|
|
274
|
+
if (!filterValueEqual(a[key], b[key])) return false;
|
|
275
|
+
}
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataPipeline(_ref3) {
|
|
279
|
+
var columns = _ref3.columns,
|
|
280
|
+
dataSource = _ref3.dataSource,
|
|
281
|
+
pagination = _ref3.pagination,
|
|
282
|
+
onChange = _ref3.onChange;
|
|
171
283
|
var _a, _b, _c, _d;
|
|
172
|
-
|
|
284
|
+
// Sorter / filters are "derived controlled" — the controlled value is built
|
|
285
|
+
// by scanning column props (`sortOrder` / `filteredValue`), so `getControlled*`
|
|
286
|
+
// returns a fresh object every render even when the underlying inputs are
|
|
287
|
+
// unchanged. Without stabilisation, `useControlledState`'s internal
|
|
288
|
+
// `useLayoutEffect([value])` would re-sync on every render → infinite loop.
|
|
289
|
+
// Pin the reference via a shallow-equal ref.
|
|
290
|
+
var controlledSorter = useStableRef(getControlledSorter(columns), sorterEqual);
|
|
291
|
+
var controlledFilters = useStableRef(getControlledFilters(columns), filtersEqual);
|
|
292
|
+
var _useControlledState = (0, _hooks.useControlledState)(getInitialSorter(columns), controlledSorter),
|
|
173
293
|
_useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
|
|
174
294
|
sorter = _useControlledState2[0],
|
|
175
295
|
setSorter = _useControlledState2[1];
|
|
176
|
-
var _useControlledState3 = (0, _hooks.useControlledState)(
|
|
296
|
+
var _useControlledState3 = (0, _hooks.useControlledState)(getInitialFilters(columns), controlledFilters),
|
|
177
297
|
_useControlledState4 = (0, _slicedToArray2["default"])(_useControlledState3, 2),
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
var _useControlledState5 = (0, _hooks.useControlledState)(pagination === false ?
|
|
298
|
+
filters = _useControlledState4[0],
|
|
299
|
+
setFilters = _useControlledState4[1];
|
|
300
|
+
var _useControlledState5 = (0, _hooks.useControlledState)(pagination === false ? 1 : (_b = (_a = pagination === null || pagination === void 0 ? void 0 : pagination.defaultCurrent) !== null && _a !== void 0 ? _a : pagination === null || pagination === void 0 ? void 0 : pagination.current) !== null && _b !== void 0 ? _b : 1, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.current),
|
|
181
301
|
_useControlledState6 = (0, _slicedToArray2["default"])(_useControlledState5, 2),
|
|
182
|
-
|
|
183
|
-
|
|
302
|
+
current = _useControlledState6[0],
|
|
303
|
+
setCurrent = _useControlledState6[1];
|
|
304
|
+
var _useControlledState7 = (0, _hooks.useControlledState)(pagination === false ? 10 : (_d = (_c = pagination === null || pagination === void 0 ? void 0 : pagination.defaultPageSize) !== null && _c !== void 0 ? _c : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize) !== null && _d !== void 0 ? _d : 10, pagination === false ? undefined : pagination === null || pagination === void 0 ? void 0 : pagination.pageSize),
|
|
305
|
+
_useControlledState8 = (0, _slicedToArray2["default"])(_useControlledState7, 2),
|
|
306
|
+
pageSize = _useControlledState8[0],
|
|
307
|
+
setPageSize = _useControlledState8[1];
|
|
184
308
|
var mergedPagination = pagination === false ? false : {
|
|
185
309
|
current: current,
|
|
186
310
|
pageSize: pageSize
|
|
@@ -208,9 +332,19 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
208
332
|
columns: columns,
|
|
209
333
|
dataSource: dataSource,
|
|
210
334
|
sorter: sorter,
|
|
335
|
+
filters: filters,
|
|
211
336
|
pagination: mergedPagination
|
|
212
337
|
});
|
|
213
|
-
}, [columns, dataSource, sorter, mergedPagination]);
|
|
338
|
+
}, [columns, dataSource, sorter, filters, mergedPagination]);
|
|
339
|
+
var emitChange = (0, _hooks.useMemoizedFn)(function (nextDataSource, action, nextState) {
|
|
340
|
+
onChange === null || onChange === void 0 ? void 0 : onChange({
|
|
341
|
+
currentDataSource: nextDataSource,
|
|
342
|
+
action: action,
|
|
343
|
+
sorter: nextState.sorter,
|
|
344
|
+
filters: nextState.filters,
|
|
345
|
+
pagination: nextState.pagination
|
|
346
|
+
});
|
|
347
|
+
});
|
|
214
348
|
// useMemoizedFn: stable ref, always calls latest closure — no stale deps risk
|
|
215
349
|
var wrappedSetSorter = (0, _hooks.useMemoizedFn)(function (updater) {
|
|
216
350
|
var nextSorter = typeof updater === 'function' ? updater(sorter) : updater;
|
|
@@ -228,11 +362,39 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
228
362
|
columns: columns,
|
|
229
363
|
dataSource: dataSource,
|
|
230
364
|
sorter: nextSorter,
|
|
365
|
+
filters: filters,
|
|
231
366
|
pagination: resetPagination
|
|
232
367
|
});
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
368
|
+
emitChange(nextResult.currentDataSource, 'sort', {
|
|
369
|
+
sorter: nextSorter,
|
|
370
|
+
filters: filters,
|
|
371
|
+
pagination: resetPagination
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
var wrappedSetFilters = (0, _hooks.useMemoizedFn)(function (updater) {
|
|
376
|
+
var nextFilters = typeof updater === 'function' ? updater(filters) : updater;
|
|
377
|
+
setFilters(nextFilters);
|
|
378
|
+
// Reset pagination to page 1 when filters change
|
|
379
|
+
if (mergedPagination !== false) {
|
|
380
|
+
setCurrent(1);
|
|
381
|
+
}
|
|
382
|
+
if (onChange) {
|
|
383
|
+
var resetPagination = mergedPagination === false ? false : {
|
|
384
|
+
current: 1,
|
|
385
|
+
pageSize: pageSize
|
|
386
|
+
};
|
|
387
|
+
var nextResult = applyTablePipeline({
|
|
388
|
+
columns: columns,
|
|
389
|
+
dataSource: dataSource,
|
|
390
|
+
sorter: sorter,
|
|
391
|
+
filters: nextFilters,
|
|
392
|
+
pagination: resetPagination
|
|
393
|
+
});
|
|
394
|
+
emitChange(nextResult.currentDataSource, 'filter', {
|
|
395
|
+
sorter: sorter,
|
|
396
|
+
filters: nextFilters,
|
|
397
|
+
pagination: resetPagination
|
|
236
398
|
});
|
|
237
399
|
}
|
|
238
400
|
});
|
|
@@ -250,20 +412,24 @@ var useTableDataPipeline = exports.useTableDataPipeline = function useTableDataP
|
|
|
250
412
|
columns: columns,
|
|
251
413
|
dataSource: dataSource,
|
|
252
414
|
sorter: sorter,
|
|
415
|
+
filters: filters,
|
|
253
416
|
pagination: nextValue
|
|
254
417
|
});
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
418
|
+
emitChange(nextResult.currentDataSource, 'paginate', {
|
|
419
|
+
sorter: sorter,
|
|
420
|
+
filters: filters,
|
|
421
|
+
pagination: nextValue
|
|
258
422
|
});
|
|
259
423
|
}
|
|
260
424
|
});
|
|
261
425
|
return Object.assign(Object.assign({}, result), {
|
|
262
426
|
sorter: sorter,
|
|
263
427
|
sorterStates: sorterStates,
|
|
428
|
+
filters: filters,
|
|
264
429
|
pagination: mergedPagination,
|
|
265
430
|
setSorter: wrappedSetSorter,
|
|
431
|
+
setFilters: wrappedSetFilters,
|
|
266
432
|
setPagination: wrappedSetPagination
|
|
267
433
|
});
|
|
268
434
|
};
|
|
269
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2hvb2tzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpc0NvbHVtbkdyb3VwIiwiY29sIiwiY2hpbGRyZW4iLCJmbGF0dGVuQ29sdW1ucyIsImNvbHVtbnMiLCJyZXN1bHQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJlcnIiLCJnZXRTb3J0RnVuY3Rpb24iLCJzb3J0ZXIiLCJfdHlwZW9mMiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwic29ydGVyU3RhdGVzIiwic29ydGVkIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJiIiwiYXAiLCJicCIsInJlY29yZDEiLCJyZWNvcmQyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9zdGVwMiR2YWx1ZSIsImFwcGx5VGFibGVQaXBlbGluZSIsImV4cG9ydHMiLCJfcmVmIiwiZGF0YVNvdXJjZSIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImN1cnJlbnREYXRhU291cmNlIiwidG90YWwiLCJzdGFydCIsImN1cnJlbnQiLCJwYWdlU2l6ZSIsImVuZCIsImNvbGxlY3RTb3J0ZXJTdGF0ZXMiLCJfYSIsImxlYXZlcyIsInN0YXRlcyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJzb3J0T3JkZXIiLCJkZWZhdWx0U29ydE9yZGVyIiwiZ2V0SW5pdGlhbFNvcnRlciIsImdldENvbnRyb2xsZWRTb3J0ZXIiLCJjb250cm9sbGVkQ29sdW1uIiwidW5kZWZpbmVkIiwidXNlVGFibGVEYXRhUGlwZWxpbmUiLCJfcmVmMiIsIm9uQ2hhbmdlIiwiX2IiLCJfYyIsIl9kIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0U29ydGVyIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJkZWZhdWx0Q3VycmVudCIsIl91c2VDb250cm9sbGVkU3RhdGU0Iiwic2V0Q3VycmVudCIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiZGVmYXVsdFBhZ2VTaXplIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTYiLCJzZXRQYWdlU2l6ZSIsIm1lcmdlZFBhZ2luYXRpb24iLCJ1c2VNZW1vIiwicHJpbWFyeSIsImFkZGl0aW9uYWwiLCJjb25jYXQiLCJ3cmFwcGVkU2V0U29ydGVyIiwidXNlTWVtb2l6ZWRGbiIsInVwZGF0ZXIiLCJuZXh0U29ydGVyIiwicmVzZXRQYWdpbmF0aW9uIiwibmV4dFJlc3VsdCIsImFjdGlvbiIsIndyYXBwZWRTZXRQYWdpbmF0aW9uIiwiY3VycmVudFZhbHVlIiwibmV4dFZhbHVlIiwiT2JqZWN0IiwiYXNzaWduIiwic2V0UGFnaW5hdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEs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LFVBQVUsS0FBSyxLQUFLLEVBQUU7SUFFMUIsSUFBTW9ELFlBQVksR0FBRztNQUFFL0MsT0FBTyxFQUFQQSxPQUFPO01BQUVDLFFBQVEsRUFBUkE7SUFBUSxDQUFFO0lBQzFDLElBQU0rQyxTQUFTLEdBQUcsT0FBT1AsT0FBTyxLQUFLLFVBQVUsR0FBR0EsT0FBTyxDQUFDTSxZQUFZLENBQUMsR0FBR04sT0FBTztJQUVqRlosVUFBVSxDQUFDbUIsU0FBUyxDQUFDaEQsT0FBTyxDQUFDO0lBQzdCaUMsV0FBVyxDQUFDZSxTQUFTLENBQUMvQyxRQUFRLENBQUM7SUFFL0IsSUFBSWdCLFFBQVEsRUFBRTtNQUNaLElBQU0yQixVQUFVLEdBQUdyRCxrQkFBa0IsQ0FBQztRQUNwQ3ZDLE9BQU8sRUFBUEEsT0FBTztRQUNQMEMsVUFBVSxFQUFWQSxVQUFVO1FBQ1ZqQyxNQUFNLEVBQU5BLE1BQU07UUFDTmtDLFVBQVUsRUFBRXFEO01DdEdWLENEdUdILENBQUM7TUFDRi9CLFFBQVEsQ0FBQztRQUFFcEIsaUJBQWlCLEVBQUUrQyxVQUFVLENBQUMvQyxpQkFBaUI7UUFBRWdELE1BQU0sRUFBRTtNQUFVLENBQUUsQ0FBQztJQUNuRjtFQUNGLENBQUMsQ0FDRjtFQUVELE9BQUFJLE1BQUEsQ0FBQUMsTUFBQSxDQUFBRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDS2pHLE1BQU0sQ0FBQSxFQUFBO0lBQ1RRLE1BQU0sRUFBTkEsTUFBTTtJQUNOUSxZQUFZLEVBQVpBLFlBQVk7SUFDWjBCLFVBQVUsRUFBRXVDLGdCQUFnQjtJQUM1QlQsU0FBUyxFQUFFYyxnQkFBZ0I7SUFDM0JZLGFBQWEsRUFBRUw7RUFBb0IsQ0FBQSxDQUFBO0FBRXZDLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRGF0YVBpcGVsaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5mdW5jdGlvbiBpc0NvbHVtbkdyb3VwKGNvbCkge1xuICAgIHJldHVybiAnY2hpbGRyZW4nIGluIGNvbCAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbik7XG59XG5mdW5jdGlvbiBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2wpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFNvcnRGdW5jdGlvbihzb3J0ZXIpIHtcbiAgICBpZiAodHlwZW9mIHNvcnRlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHNvcnRlcjtcbiAgICBpZiAoc29ydGVyICYmIHR5cGVvZiBzb3J0ZXIgPT09ICdvYmplY3QnICYmICdjb21wYXJlJyBpbiBzb3J0ZXIpXG4gICAgICAgIHJldHVybiBzb3J0ZXIuY29tcGFyZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXRNdWx0aXBsZVByaW9yaXR5KGNvbHVtbikge1xuICAgIGlmIChjb2x1bW4uc29ydGVyICYmIHR5cGVvZiBjb2x1bW4uc29ydGVyID09PSAnb2JqZWN0JyAmJiAnbXVsdGlwbGUnIGluIGNvbHVtbi5zb3J0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5zb3J0ZXIubXVsdGlwbGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFwcGx5U29ydFRvRGF0YShkYXRhLCBjb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpIHtcbiAgICBpZiAoc29ydGVyU3RhdGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFdO1xuICAgIGNvbnN0IHJ1bm5pbmdTb3J0ZXJzID0gc29ydGVyU3RhdGVzXG4gICAgICAgIC5tYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wua2V5ID09PSBzdGF0ZS5jb2x1bW5LZXkpO1xuICAgICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBjb21wYXJlRm4gPSBnZXRTb3J0RnVuY3Rpb24oY29sdW1uLnNvcnRlcik7XG4gICAgICAgIGlmICghY29tcGFyZUZuKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5ID0gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pO1xuICAgICAgICByZXR1cm4geyBjb21wYXJlRm4sIG9yZGVyOiBzdGF0ZS5vcmRlciwgcHJpb3JpdHkgfTtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmIChydW5uaW5nU29ydGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIC8vIEhpZ2hlciBwcmlvcml0eSBudW1iZXIgPSBjb21wYXJlZCBmaXJzdFxuICAgIHJ1bm5pbmdTb3J0ZXJzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXAgPSB0eXBlb2YgYS5wcmlvcml0eSA9PT0gJ251bWJlcicgPyBhLnByaW9yaXR5IDogMDtcbiAgICAgICAgY29uc3QgYnAgPSB0eXBlb2YgYi5wcmlvcml0eSA9PT0gJ251bWJlcicgPyBiLnByaW9yaXR5IDogMDtcbiAgICAgICAgcmV0dXJuIGJwIC0gYXA7XG4gICAgfSk7XG4gICAgc29ydGVkLnNvcnQoKHJlY29yZDEsIHJlY29yZDIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB7IGNvbXBhcmVGbiwgb3JkZXIgfSBvZiBydW5uaW5nU29ydGVycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29tcGFyZUZuKHJlY29yZDEsIHJlY29yZDIpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlciA9PT0gJ2FzY2VuZCcgPyByZXN1bHQgOiAtcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICAgIHJldHVybiBzb3J0ZWQ7XG59XG5leHBvcnQgY29uc3QgYXBwbHlUYWJsZVBpcGVsaW5lID0gKHsgY29sdW1ucywgZGF0YVNvdXJjZSwgc29ydGVyLCBwYWdpbmF0aW9uLCB9KSA9PiB7XG4gICAgY29uc3Qgc29ydGVyU3RhdGVzID0gc29ydGVyLmNvbHVtbktleSAhPSBudWxsICYmIHNvcnRlci5vcmRlclxuICAgICAgICA/IFt7IGNvbHVtbktleTogc29ydGVyLmNvbHVtbktleSwgb3JkZXI6IHNvcnRlci5vcmRlciB9XVxuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IGxlYWZDb2x1bW5zID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3Qgc29ydGVkID0gYXBwbHlTb3J0VG9EYXRhKGRhdGFTb3VyY2UsIGxlYWZDb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpO1xuICAgIGlmICghcGFnaW5hdGlvbikge1xuICAgICAgICByZXR1cm4geyBjdXJyZW50RGF0YVNvdXJjZTogc29ydGVkLCB0b3RhbDogc29ydGVkLmxlbmd0aCB9O1xuICAgIH1cbiAgICBjb25zdCBzdGFydCA9IChwYWdpbmF0aW9uLmN1cnJlbnQgLSAxKSAqIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBwYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQuc2xpY2Uoc3RhcnQsIGVuZCksXG4gICAgICAgIHRvdGFsOiBzb3J0ZWQubGVuZ3RoLFxuICAgIH07XG59O1xuZnVuY3Rpb24gY29sbGVjdFNvcnRlclN0YXRlcyhjb2x1bW5zKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGxlYXZlcyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGNvbnN0IHN0YXRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgY29sIG9mIGxlYXZlcykge1xuICAgICAgICBjb25zdCBvcmRlciA9IChfYSA9IGNvbC5zb3J0T3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbC5kZWZhdWx0U29ydE9yZGVyO1xuICAgICAgICBpZiAoY29sLmtleSAhPSBudWxsICYmIG9yZGVyKSB7XG4gICAgICAgICAgICBzdGF0ZXMucHVzaCh7IGNvbHVtbktleTogY29sLmtleSwgb3JkZXIgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlcztcbn1cbmNvbnN0IGdldEluaXRpYWxTb3J0ZXIgPSAoY29sdW1ucykgPT4ge1xuICAgIGNvbnN0IHN0YXRlcyA9IGNvbGxlY3RTb3J0ZXJTdGF0ZXMoY29sdW1ucyk7XG4gICAgaWYgKHN0YXRlcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB7fTtcbiAgICByZXR1cm4geyBjb2x1bW5LZXk6IHN0YXRlc1swXS5jb2x1bW5LZXksIG9yZGVyOiBzdGF0ZXNbMF0ub3JkZXIgfTtcbn07XG5jb25zdCBnZXRDb250cm9sbGVkU29ydGVyID0gKGNvbHVtbnMpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3QgY29udHJvbGxlZENvbHVtbiA9IGxlYXZlcy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5zb3J0T3JkZXIgIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKCFjb250cm9sbGVkQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbktleTogY29udHJvbGxlZENvbHVtbi5rZXksXG4gICAgICAgIG9yZGVyOiAoX2EgPSBjb250cm9sbGVkQ29sdW1uLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbCxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCB1c2VUYWJsZURhdGFQaXBlbGluZSA9ICh7IGNvbHVtbnMsIGRhdGFTb3VyY2UsIHBhZ2luYXRpb24sIG9uQ2hhbmdlLCB9KSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIGNvbnN0IFtzb3J0ZXIsIHNldFNvcnRlcl0gPSB1c2VDb250cm9sbGVkU3RhdGUoZ2V0SW5pdGlhbFNvcnRlcihjb2x1bW5zKSwgZ2V0Q29udHJvbGxlZFNvcnRlcihjb2x1bW5zKSk7XG4gICAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlQ29udHJvbGxlZFN0YXRlKHBhZ2luYXRpb24gPT09IGZhbHNlID8gMSA6ICgoX2IgPSAoX2EgPSBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAxKSwgcGFnaW5hdGlvbiA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uY3VycmVudCk7XG4gICAgY29uc3QgW3BhZ2VTaXplLCBzZXRQYWdlU2l6ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxMCA6ICgoX2QgPSAoX2MgPSBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24ucGFnZVNpemUpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDEwKSwgcGFnaW5hdGlvbiA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBwYWdpbmF0aW9uID09PSBudWxsIHx8IHBhZ2luYXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhZ2luYXRpb24ucGFnZVNpemUpO1xuICAgIGNvbnN0IG1lcmdlZFBhZ2luYXRpb24gPSBwYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogeyBjdXJyZW50LCBwYWdlU2l6ZSB9O1xuICAgIGNvbnN0IHNvcnRlclN0YXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBTdGFydCB3aXRoIHRoZSBwcmltYXJ5IHVzZXItdG9nZ2xlZCBzb3J0ZXJcbiAgICAgICAgY29uc3QgcHJpbWFyeSA9IHNvcnRlci5jb2x1bW5LZXkgIT0gbnVsbCAmJiBzb3J0ZXIub3JkZXJcbiAgICAgICAgICAgID8gW3sgY29sdW1uS2V5OiBzb3J0ZXIuY29sdW1uS2V5LCBvcmRlcjogc29ydGVyLm9yZGVyIH1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAvLyBDb2xsZWN0IGFueSBvdGhlciBjb2x1bW5zIHRoYXQgaGF2ZSBhIGNvbnRyb2xsZWQgc29ydE9yZGVyIChmb3IgbXVsdGktc29ydClcbiAgICAgICAgY29uc3QgbGVhZkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IGxlYWZDb2x1bW5zXG4gICAgICAgICAgICAuZmlsdGVyKChjb2wpID0+IGNvbC5rZXkgIT0gbnVsbCAmJiBjb2wuc29ydE9yZGVyICYmIGNvbC5rZXkgIT09IHNvcnRlci5jb2x1bW5LZXkpXG4gICAgICAgICAgICAubWFwKChjb2wpID0+ICh7IGNvbHVtbktleTogY29sLmtleSwgb3JkZXI6IGNvbC5zb3J0T3JkZXIgfSkpO1xuICAgICAgICByZXR1cm4gWy4uLnByaW1hcnksIC4uLmFkZGl0aW9uYWxdO1xuICAgIH0sIFtzb3J0ZXIsIGNvbHVtbnNdKTtcbiAgICBjb25zdCByZXN1bHQgPSB1c2VNZW1vKCgpID0+IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbixcbiAgICB9KSwgW2NvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgbWVyZ2VkUGFnaW5hdGlvbl0pO1xuICAgIC8vIHVzZU1lbW9pemVkRm46IHN0YWJsZSByZWYsIGFsd2F5cyBjYWxscyBsYXRlc3QgY2xvc3VyZSDigJQgbm8gc3RhbGUgZGVwcyByaXNrXG4gICAgY29uc3Qgd3JhcHBlZFNldFNvcnRlciA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFNvcnRlciA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihzb3J0ZXIpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0U29ydGVyKG5leHRTb3J0ZXIpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIHNvcnRpbmcgY2hhbmdlc1xuICAgICAgICBpZiAobWVyZ2VkUGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNldFBhZ2luYXRpb24gPSBtZXJnZWRQYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICA6IHsgY3VycmVudDogMSwgcGFnZVNpemUgfTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXN1bHQgPSBhcHBseVRhYmxlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvbkNoYW5nZSh7IGN1cnJlbnREYXRhU291cmNlOiBuZXh0UmVzdWx0LmN1cnJlbnREYXRhU291cmNlLCBhY3Rpb246ICdzb3J0JyB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHdyYXBwZWRTZXRQYWdpbmF0aW9uID0gdXNlTWVtb2l6ZWRGbigodXBkYXRlcikgPT4ge1xuICAgICAgICBpZiAocGFnaW5hdGlvbiA9PT0gZmFsc2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHsgY3VycmVudCwgcGFnZVNpemUgfTtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gdHlwZW9mIHVwZGF0ZXIgPT09ICdmdW5jdGlvbicgPyB1cGRhdGVyKGN1cnJlbnRWYWx1ZSkgOiB1cGRhdGVyO1xuICAgICAgICBzZXRDdXJyZW50KG5leHRWYWx1ZS5jdXJyZW50KTtcbiAgICAgICAgc2V0UGFnZVNpemUobmV4dFZhbHVlLnBhZ2VTaXplKTtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVzdWx0ID0gYXBwbHlUYWJsZVBpcGVsaW5lKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgb25DaGFuZ2UoeyBjdXJyZW50RGF0YVNvdXJjZTogbmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgYWN0aW9uOiAncGFnaW5hdGUnIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdWx0KSwgeyBzb3J0ZXIsXG4gICAgICAgIHNvcnRlclN0YXRlcywgcGFnaW5hdGlvbjogbWVyZ2VkUGFnaW5hdGlvbiwgc2V0U29ydGVyOiB3cmFwcGVkU2V0U29ydGVyLCBzZXRQYWdpbmF0aW9uOiB3cmFwcGVkU2V0UGFnaW5hdGlvbiB9KTtcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
435
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2hvb2tzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpc0NvbHVtbkdyb3VwIiwiY29sIiwiY2hpbGRyZW4iLCJmbGF0dGVuQ29sdW1ucyIsImNvbHVtbnMiLCJyZXN1bHQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInB1c2giLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJlcnIiLCJnZXRTb3J0RnVuY3Rpb24iLCJzb3J0ZXIiLCJfdHlwZW9mMiIsImNvbXBhcmUiLCJnZXRNdWx0aXBsZVByaW9yaXR5IiwiY29sdW1uIiwibXVsdGlwbGUiLCJhcHBseVNvcnRUb0RhdGEiLCJkYXRhIiwic29ydGVyU3RhdGVzIiwic29ydGVkIiwicnVubmluZ1NvcnRlcnMiLCJtYXAiLCJzdGF0ZSIsImZpbmQiLCJrZXkiLCJjb2x1bW5LZXkiLCJjb21wYXJlRm4iLCJwcmlvcml0eSIsIm9yZGVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsInNvcnQiLCJiIiwiYXAiLCJicCIsInJlY29yZDEiLCJyZWNvcmQyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9zdGVwMiR2YWx1ZSIsImFwcGx5RmlsdGVyc1RvRGF0YSIsImZpbHRlcnMiLCJhY3RpdmVGaWx0ZXJzIiwic2VsZWN0ZWQiLCJTdHJpbmciLCJvbkZpbHRlciIsInJlY29yZCIsImV2ZXJ5IiwiX3JlZiIsInNvbWUiLCJhcHBseVRhYmxlUGlwZWxpbmUiLCJleHBvcnRzIiwiX3JlZjIiLCJkYXRhU291cmNlIiwiX3JlZjIkZmlsdGVycyIsInBhZ2luYXRpb24iLCJsZWFmQ29sdW1ucyIsImZpbHRlcmVkIiwiY3VycmVudERhdGFTb3VyY2UiLCJ0b3RhbCIsInN0YXJ0IiwiY3VycmVudCIsInBhZ2VTaXplIiwiZW5kIiwiY29sbGVjdFNvcnRlclN0YXRlcyIsIl9hIiwibGVhdmVzIiwic3RhdGVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNvcnRPcmRlciIsImRlZmF1bHRTb3J0T3JkZXIiLCJnZXRJbml0aWFsU29ydGVyIiwiZ2V0Q29udHJvbGxlZFNvcnRlciIsImNvbnRyb2xsZWRDb2x1bW4iLCJ1bmRlZmluZWQiLCJnZXRJbml0aWFsRmlsdGVycyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJpbml0aWFsIiwiZGVmYXVsdEZpbHRlcmVkVmFsdWUiLCJmaWx0ZXJlZFZhbHVlIiwiZ2V0Q29udHJvbGxlZEZpbHRlcnMiLCJoYXNDb250cm9sbGVkIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsInVzZVN0YWJsZVJlZiIsImVxdWFsIiwicmVmIiwidXNlUmVmIiwic29ydGVyRXF1YWwiLCJmaWx0ZXJWYWx1ZUVxdWFsIiwiaSIsImZpbHRlcnNFcXVhbCIsImtleXNBIiwiT2JqZWN0Iiwia2V5cyIsImtleXNCIiwiX2kiLCJfa2V5c0EiLCJ1c2VUYWJsZURhdGFQaXBlbGluZSIsIl9yZWYzIiwib25DaGFuZ2UiLCJfYiIsIl9jIiwiX2QiLCJjb250cm9sbGVkU29ydGVyIiwiY29udHJvbGxlZEZpbHRlcnMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRTb3J0ZXIiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0Iiwic2V0RmlsdGVycyIsIl91c2VDb250cm9sbGVkU3RhdGU1IiwiZGVmYXVsdEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNiIsInNldEN1cnJlbnQiLCJfdXNlQ29udHJvbGxlZFN0YXRlNyIsImRlZmF1bHRQYWdlU2l6ZSIsIl91c2VDb250cm9sbGVkU3RhdGU4Iiwic2V0UGFnZVNpemUiLCJtZXJnZWRQYWdpbmF0aW9uIiwidXNlTWVtbyIsInByaW1hcnkiLCJhZGRpdGlvbmFsIiwiY29uY2F0IiwiZW1pdENoYW5nZSIsInVzZU1lbW9pemVkRm4iLCJuZXh0RGF0YVNvdXJjZSIsImFjdGlvbiIsIm5leHRTdGF0ZSIsIndyYXBwZWRTZXRTb3J0ZXIiLCJ1cGRhdGVyIiwibmV4dFNvcnRlciIsInJlc2V0UGFnaW5hdGlvbiIsIm5leHRSZXN1bHQiLCJ3cmFwcGVkU2V0RmlsdGVycyIsIm5leHRGaWx0ZXJzIiwid3JhcHBlZFNldFBhZ2luYXRpb24iLCJjdXJyZW50VmFsdWUiLCJuZXh0VmFsdWUiLCJhc3NpZ24iLCJzZXRQYWdpbmF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQWtFLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1B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Q3dCLFNBQVMsQ0FBQ2xGLE9BQU8sQ0FBQztJQUM3QjhELFdBQVcsQ0FBQ29CLFNBQVMsQ0FBQ2pGLFFBQVEsQ0FBQztJQUUvQixJQUFJd0MsUUFBUSxFQUFFO01BQ1osSUFBTW9DLFVBQVUsR0FBR3hGLGtCQUFrQixDQUFDO1FBQ3BDakQsT0FBTyxFQUFQQSxPQUFPO1FBQ1BvRCxVQUFVLEVBQVZBLFVBQVU7UUFDVjNDLE1BQU0sRUFBTkEsTUFBTTtRQUNOK0IsT0FBTyxFQUFQQSxPQUFPO1FBQ1BjLFVBQVUsRUFBRXdGO01DeEtWLENEeUtILENBQUM7TUFDRmQsVUFBVSxDQUFDUyxVQUFVLENBQUNoRixpQkFBaUIsRUFBRSxVQUFVLEVBQUU7UUFDbkRoRCxNQUFNLEVBQU5BLE1BQU07UUFDTitCLE9BQU8sRUFBUEEsT0FBTztRQUNQYyxVQUFVLEVBQUV3RjtNQ3hLVixDRHlLSCxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQ0Y7RUFFRCxPQUFBaEQsTUFBQSxDQUFBaUQsTUFBQSxDQUFBakQsTUFBQSxDQUFBaUQsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNLOUksTUFBTSxDQUFBLEVBQUE7SUFDVFEsTUFBTSxFQUFOQSxNQUFNO0lBQ05RLFlBQVksRUFBWkEsWUFBWTtJQUNadUIsT0FBTyxFQUFQQSxPQUFPO0lBQ1BjLFVBQVUsRUFBRXFFLGdCQUFnQjtJQUM1QlosU0FBUyxFQUFFc0IsZ0JBQWdCO0lBQzNCbkIsVUFBVSxFQUFFd0IsaUJBQWlCO0lBQzdCTSxhQUFhLEVBQUVKO0VBQW9CLENBQUEsQ0FBQTtBQUV2QyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZURhdGFQaXBlbGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5mdW5jdGlvbiBpc0NvbHVtbkdyb3VwKGNvbCkge1xuICAgIHJldHVybiAnY2hpbGRyZW4nIGluIGNvbCAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbik7XG59XG5mdW5jdGlvbiBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2wpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCguLi5mbGF0dGVuQ29sdW1ucyhjb2wuY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFNvcnRGdW5jdGlvbihzb3J0ZXIpIHtcbiAgICBpZiAodHlwZW9mIHNvcnRlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHNvcnRlcjtcbiAgICBpZiAoc29ydGVyICYmIHR5cGVvZiBzb3J0ZXIgPT09ICdvYmplY3QnICYmICdjb21wYXJlJyBpbiBzb3J0ZXIpXG4gICAgICAgIHJldHVybiBzb3J0ZXIuY29tcGFyZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXRNdWx0aXBsZVByaW9yaXR5KGNvbHVtbikge1xuICAgIGlmIChjb2x1bW4uc29ydGVyICYmIHR5cGVvZiBjb2x1bW4uc29ydGVyID09PSAnb2JqZWN0JyAmJiAnbXVsdGlwbGUnIGluIGNvbHVtbi5zb3J0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5zb3J0ZXIubXVsdGlwbGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFwcGx5U29ydFRvRGF0YShkYXRhLCBjb2x1bW5zLCBzb3J0ZXJTdGF0ZXMpIHtcbiAgICBpZiAoc29ydGVyU3RhdGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFdO1xuICAgIGNvbnN0IHJ1bm5pbmdTb3J0ZXJzID0gc29ydGVyU3RhdGVzXG4gICAgICAgIC5tYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wua2V5ID09PSBzdGF0ZS5jb2x1bW5LZXkpO1xuICAgICAgICBpZiAoIWNvbHVtbilcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBjb21wYXJlRm4gPSBnZXRTb3J0RnVuY3Rpb24oY29sdW1uLnNvcnRlcik7XG4gICAgICAgIGlmICghY29tcGFyZUZuKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHByaW9yaXR5ID0gZ2V0TXVsdGlwbGVQcmlvcml0eShjb2x1bW4pO1xuICAgICAgICByZXR1cm4geyBjb21wYXJlRm4sIG9yZGVyOiBzdGF0ZS5vcmRlciwgcHJpb3JpdHkgfTtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmIChydW5uaW5nU29ydGVycy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIC8vIEhpZ2hlciBwcmlvcml0eSBudW1iZXIgPSBjb21wYXJlZCBmaXJzdFxuICAgIHJ1bm5pbmdTb3J0ZXJzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYXAgPSB0eXBlb2YgYS5wcmlvcml0eSA9PT0gJ251bWJlcicgPyBhLnByaW9yaXR5IDogMDtcbiAgICAgICAgY29uc3QgYnAgPSB0eXBlb2YgYi5wcmlvcml0eSA9PT0gJ251bWJlcicgPyBiLnByaW9yaXR5IDogMDtcbiAgICAgICAgcmV0dXJuIGJwIC0gYXA7XG4gICAgfSk7XG4gICAgc29ydGVkLnNvcnQoKHJlY29yZDEsIHJlY29yZDIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB7IGNvbXBhcmVGbiwgb3JkZXIgfSBvZiBydW5uaW5nU29ydGVycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY29tcGFyZUZuKHJlY29yZDEsIHJlY29yZDIpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcmRlciA9PT0gJ2FzY2VuZCcgPyByZXN1bHQgOiAtcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICAgIHJldHVybiBzb3J0ZWQ7XG59XG5mdW5jdGlvbiBhcHBseUZpbHRlcnNUb0RhdGEoZGF0YSwgY29sdW1ucywgZmlsdGVycykge1xuICAgIC8vIFJlc29sdmUgd2hpY2ggY29sdW1ucyBoYXZlIGFuIGFjdGl2ZSBmaWx0ZXIgc2VsZWN0aW9uIEFORCBhIHByZWRpY2F0ZS5cbiAgICBjb25zdCBhY3RpdmVGaWx0ZXJzID0gY29sdW1uc1xuICAgICAgICAubWFwKChjb2wpID0+IHtcbiAgICAgICAgaWYgKGNvbC5rZXkgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGZpbHRlcnNbU3RyaW5nKGNvbC5rZXkpXTtcbiAgICAgICAgaWYgKCFzZWxlY3RlZCB8fCBzZWxlY3RlZC5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCFjb2wub25GaWx0ZXIpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHsgb25GaWx0ZXI6IGNvbC5vbkZpbHRlciwgc2VsZWN0ZWQgfTtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmIChhY3RpdmVGaWx0ZXJzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKChyZWNvcmQpID0+IFxuICAgIC8vIFJvdyBwYXNzZXMgb25seSBpZiBFVkVSWSBhY3RpdmUgY29sdW1uIGhhcyBhdCBsZWFzdCBvbmUgbWF0Y2hpbmcgc2VsZWN0ZWQgdmFsdWUuXG4gICAgYWN0aXZlRmlsdGVycy5ldmVyeSgoeyBvbkZpbHRlciwgc2VsZWN0ZWQgfSkgPT4gc2VsZWN0ZWQuc29tZSgodmFsdWUpID0+IG9uRmlsdGVyKHZhbHVlLCByZWNvcmQpKSkpO1xufVxuZXhwb3J0IGNvbnN0IGFwcGx5VGFibGVQaXBlbGluZSA9ICh7IGNvbHVtbnMsIGRhdGFTb3VyY2UsIHNvcnRlciwgZmlsdGVycyA9IHt9LCBwYWdpbmF0aW9uLCB9KSA9PiB7XG4gICAgY29uc3Qgc29ydGVyU3RhdGVzID0gc29ydGVyLmNvbHVtbktleSAhPSBudWxsICYmIHNvcnRlci5vcmRlclxuICAgICAgICA/IFt7IGNvbHVtbktleTogc29ydGVyLmNvbHVtbktleSwgb3JkZXI6IHNvcnRlci5vcmRlciB9XVxuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IGxlYWZDb2x1bW5zID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBhcHBseUZpbHRlcnNUb0RhdGEoZGF0YVNvdXJjZSwgbGVhZkNvbHVtbnMsIGZpbHRlcnMpO1xuICAgIGNvbnN0IHNvcnRlZCA9IGFwcGx5U29ydFRvRGF0YShmaWx0ZXJlZCwgbGVhZkNvbHVtbnMsIHNvcnRlclN0YXRlcyk7XG4gICAgaWYgKCFwYWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybiB7IGN1cnJlbnREYXRhU291cmNlOiBzb3J0ZWQsIHRvdGFsOiBzb3J0ZWQubGVuZ3RoIH07XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0ID0gKHBhZ2luYXRpb24uY3VycmVudCAtIDEpICogcGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICBjb25zdCBlbmQgPSBzdGFydCArIHBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IHNvcnRlZC5zbGljZShzdGFydCwgZW5kKSxcbiAgICAgICAgdG90YWw6IHNvcnRlZC5sZW5ndGgsXG4gICAgfTtcbn07XG5mdW5jdGlvbiBjb2xsZWN0U29ydGVyU3RhdGVzKGNvbHVtbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgbGVhdmVzID0gZmxhdHRlbkNvbHVtbnMoY29sdW1ucyk7XG4gICAgY29uc3Qgc3RhdGVzID0gW107XG4gICAgZm9yIChjb25zdCBjb2wgb2YgbGVhdmVzKSB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gKF9hID0gY29sLnNvcnRPcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29sLmRlZmF1bHRTb3J0T3JkZXI7XG4gICAgICAgIGlmIChjb2wua2V5ICE9IG51bGwgJiYgb3JkZXIpIHtcbiAgICAgICAgICAgIHN0YXRlcy5wdXNoKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlciB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGVzO1xufVxuY29uc3QgZ2V0SW5pdGlhbFNvcnRlciA9IChjb2x1bW5zKSA9PiB7XG4gICAgY29uc3Qgc3RhdGVzID0gY29sbGVjdFNvcnRlclN0YXRlcyhjb2x1bW5zKTtcbiAgICBpZiAoc3RhdGVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIHJldHVybiB7IGNvbHVtbktleTogc3RhdGVzWzBdLmNvbHVtbktleSwgb3JkZXI6IHN0YXRlc1swXS5vcmRlciB9O1xufTtcbmNvbnN0IGdldENvbnRyb2xsZWRTb3J0ZXIgPSAoY29sdW1ucykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBjb25zdCBjb250cm9sbGVkQ29sdW1uID0gbGVhdmVzLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uLnNvcnRPcmRlciAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAoIWNvbnRyb2xsZWRDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uS2V5OiBjb250cm9sbGVkQ29sdW1uLmtleSxcbiAgICAgICAgb3JkZXI6IChfYSA9IGNvbnRyb2xsZWRDb2x1bW4uc29ydE9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsLFxuICAgIH07XG59O1xuY29uc3QgZ2V0SW5pdGlhbEZpbHRlcnMgPSAoY29sdW1ucykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBsZWF2ZXMgPSBmbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcbiAgICBjb25zdCBzdGF0ZSA9IHt9O1xuICAgIGZvciAoY29uc3QgY29sIG9mIGxlYXZlcykge1xuICAgICAgICBpZiAoY29sLmtleSA9PSBudWxsKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSAoX2EgPSBjb2wuZGVmYXVsdEZpbHRlcmVkVmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGNvbC5maWx0ZXJlZFZhbHVlO1xuICAgICAgICBpZiAoaW5pdGlhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzdGF0ZVtTdHJpbmcoY29sLmtleSldID0gaW5pdGlhbCAhPT0gbnVsbCAmJiBpbml0aWFsICE9PSB2b2lkIDAgPyBpbml0aWFsIDogbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG59O1xuY29uc3QgZ2V0Q29udHJvbGxlZEZpbHRlcnMgPSAoY29sdW1ucykgPT4ge1xuICAgIGNvbnN0IGxlYXZlcyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgIGxldCBoYXNDb250cm9sbGVkID0gZmFsc2U7XG4gICAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBsZWF2ZXMpIHtcbiAgICAgICAgaWYgKGNvbC5rZXkgPT0gbnVsbClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY29sLmZpbHRlcmVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGFzQ29udHJvbGxlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZVtTdHJpbmcoY29sLmtleSldID0gY29sLmZpbHRlcmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0NvbnRyb2xsZWQgPyBzdGF0ZSA6IHVuZGVmaW5lZDtcbn07XG4vKipcbiAqIFJldHVybnMgYSB2YWx1ZSB3aG9zZSByZWZlcmVuY2UgaXMgcHJlc2VydmVkIGFjcm9zcyByZW5kZXJzIGFzIGxvbmcgYXMgdGhlXG4gKiBzaGFsbG93IGNvbnRlbnRzIGFyZSB1bmNoYW5nZWQgKHBlciBgZXF1YWxgKS4gVXNlZCB0byBzdGFiaWxpc2UgdGhlIGRlcml2ZWRcbiAqIGNvbnRyb2xsZWQgY2FuZGlkYXRlcyBmZWQgdG8gYHVzZUNvbnRyb2xsZWRTdGF0ZWAg4oCUIHRoZXkgd291bGQgb3RoZXJ3aXNlIGJlXG4gKiBmcmVzaCBvYmplY3RzIGV2ZXJ5IHJlbmRlciBhbmQgdGhyYXNoIHRoZSBob29rJ3MgaW50ZXJuYWwgYHVzZUxheW91dEVmZmVjdGAuXG4gKi9cbmZ1bmN0aW9uIHVzZVN0YWJsZVJlZih2YWx1ZSwgZXF1YWwpIHtcbiAgICBjb25zdCByZWYgPSB1c2VSZWYodmFsdWUpO1xuICAgIGlmICghZXF1YWwocmVmLmN1cnJlbnQsIHZhbHVlKSkge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5mdW5jdGlvbiBzb3J0ZXJFcXVhbChhLCBiKSB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghYSB8fCAhYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBhLmNvbHVtbktleSA9PT0gYi5jb2x1bW5LZXkgJiYgYS5vcmRlciA9PT0gYi5vcmRlcjtcbn1cbmZ1bmN0aW9uIGZpbHRlclZhbHVlRXF1YWwoYSwgYikge1xuICAgIGlmIChhID09PSBiKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWEgfHwgIWIpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGZpbHRlcnNFcXVhbChhLCBiKSB7XG4gICAgaWYgKGEgPT09IGIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmICghYSB8fCAhYilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgICAgICBpZiAoIWZpbHRlclZhbHVlRXF1YWwoYVtrZXldLCBiW2tleV0pKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBjb25zdCB1c2VUYWJsZURhdGFQaXBlbGluZSA9ICh7IGNvbHVtbnMsIGRhdGFTb3VyY2UsIHBhZ2luYXRpb24sIG9uQ2hhbmdlLCB9KSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIC8vIFNvcnRlciAvIGZpbHRlcnMgYXJlIFwiZGVyaXZlZCBjb250cm9sbGVkXCIg4oCUIHRoZSBjb250cm9sbGVkIHZhbHVlIGlzIGJ1aWx0XG4gICAgLy8gYnkgc2Nhbm5pbmcgY29sdW1uIHByb3BzIChgc29ydE9yZGVyYCAvIGBmaWx0ZXJlZFZhbHVlYCksIHNvIGBnZXRDb250cm9sbGVkKmBcbiAgICAvLyByZXR1cm5zIGEgZnJlc2ggb2JqZWN0IGV2ZXJ5IHJlbmRlciBldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgaW5wdXRzIGFyZVxuICAgIC8vIHVuY2hhbmdlZC4gV2l0aG91dCBzdGFiaWxpc2F0aW9uLCBgdXNlQ29udHJvbGxlZFN0YXRlYCdzIGludGVybmFsXG4gICAgLy8gYHVzZUxheW91dEVmZmVjdChbdmFsdWVdKWAgd291bGQgcmUtc3luYyBvbiBldmVyeSByZW5kZXIg4oaSIGluZmluaXRlIGxvb3AuXG4gICAgLy8gUGluIHRoZSByZWZlcmVuY2UgdmlhIGEgc2hhbGxvdy1lcXVhbCByZWYuXG4gICAgY29uc3QgY29udHJvbGxlZFNvcnRlciA9IHVzZVN0YWJsZVJlZihnZXRDb250cm9sbGVkU29ydGVyKGNvbHVtbnMpLCBzb3J0ZXJFcXVhbCk7XG4gICAgY29uc3QgY29udHJvbGxlZEZpbHRlcnMgPSB1c2VTdGFibGVSZWYoZ2V0Q29udHJvbGxlZEZpbHRlcnMoY29sdW1ucyksIGZpbHRlcnNFcXVhbCk7XG4gICAgY29uc3QgW3NvcnRlciwgc2V0U29ydGVyXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShnZXRJbml0aWFsU29ydGVyKGNvbHVtbnMpLCBjb250cm9sbGVkU29ydGVyKTtcbiAgICBjb25zdCBbZmlsdGVycywgc2V0RmlsdGVyc10gPSB1c2VDb250cm9sbGVkU3RhdGUoZ2V0SW5pdGlhbEZpbHRlcnMoY29sdW1ucyksIGNvbnRyb2xsZWRGaWx0ZXJzKTtcbiAgICBjb25zdCBbY3VycmVudCwgc2V0Q3VycmVudF0gPSB1c2VDb250cm9sbGVkU3RhdGUocGFnaW5hdGlvbiA9PT0gZmFsc2UgPyAxIDogKChfYiA9IChfYSA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0Q3VycmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcGFnaW5hdGlvbiA9PT0gbnVsbCB8fCBwYWdpbmF0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYWdpbmF0aW9uLmN1cnJlbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEpLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5jdXJyZW50KTtcbiAgICBjb25zdCBbcGFnZVNpemUsIHNldFBhZ2VTaXplXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShwYWdpbmF0aW9uID09PSBmYWxzZSA/IDEwIDogKChfZCA9IChfYyA9IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5kZWZhdWx0UGFnZVNpemUpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMTApLCBwYWdpbmF0aW9uID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHBhZ2luYXRpb24gPT09IG51bGwgfHwgcGFnaW5hdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gICAgY29uc3QgbWVyZ2VkUGFnaW5hdGlvbiA9IHBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgID8gZmFsc2VcbiAgICAgICAgOiB7IGN1cnJlbnQsIHBhZ2VTaXplIH07XG4gICAgY29uc3Qgc29ydGVyU3RhdGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIC8vIFN0YXJ0IHdpdGggdGhlIHByaW1hcnkgdXNlci10b2dnbGVkIHNvcnRlclxuICAgICAgICBjb25zdCBwcmltYXJ5ID0gc29ydGVyLmNvbHVtbktleSAhPSBudWxsICYmIHNvcnRlci5vcmRlclxuICAgICAgICAgICAgPyBbeyBjb2x1bW5LZXk6IHNvcnRlci5jb2x1bW5LZXksIG9yZGVyOiBzb3J0ZXIub3JkZXIgfV1cbiAgICAgICAgICAgIDogW107XG4gICAgICAgIC8vIENvbGxlY3QgYW55IG90aGVyIGNvbHVtbnMgdGhhdCBoYXZlIGEgY29udHJvbGxlZCBzb3J0T3JkZXIgKGZvciBtdWx0aS1zb3J0KVxuICAgICAgICBjb25zdCBsZWFmQ29sdW1ucyA9IGZsYXR0ZW5Db2x1bW5zKGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gbGVhZkNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLmtleSAhPSBudWxsICYmIGNvbC5zb3J0T3JkZXIgJiYgY29sLmtleSAhPT0gc29ydGVyLmNvbHVtbktleSlcbiAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gKHsgY29sdW1uS2V5OiBjb2wua2V5LCBvcmRlcjogY29sLnNvcnRPcmRlciB9KSk7XG4gICAgICAgIHJldHVybiBbLi4ucHJpbWFyeSwgLi4uYWRkaXRpb25hbF07XG4gICAgfSwgW3NvcnRlciwgY29sdW1uc10pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHVzZU1lbW8oKCkgPT4gYXBwbHlUYWJsZVBpcGVsaW5lKHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgc29ydGVyLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBwYWdpbmF0aW9uOiBtZXJnZWRQYWdpbmF0aW9uLFxuICAgIH0pLCBbY29sdW1ucywgZGF0YVNvdXJjZSwgc29ydGVyLCBmaWx0ZXJzLCBtZXJnZWRQYWdpbmF0aW9uXSk7XG4gICAgY29uc3QgZW1pdENoYW5nZSA9IHVzZU1lbW9pemVkRm4oKG5leHREYXRhU291cmNlLCBhY3Rpb24sIG5leHRTdGF0ZSkgPT4ge1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2Uoe1xuICAgICAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IG5leHREYXRhU291cmNlLFxuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgc29ydGVyOiBuZXh0U3RhdGUuc29ydGVyLFxuICAgICAgICAgICAgZmlsdGVyczogbmV4dFN0YXRlLmZpbHRlcnMsXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBuZXh0U3RhdGUucGFnaW5hdGlvbixcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8gdXNlTWVtb2l6ZWRGbjogc3RhYmxlIHJlZiwgYWx3YXlzIGNhbGxzIGxhdGVzdCBjbG9zdXJlIOKAlCBubyBzdGFsZSBkZXBzIHJpc2tcbiAgICBjb25zdCB3cmFwcGVkU2V0U29ydGVyID0gdXNlTWVtb2l6ZWRGbigodXBkYXRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0U29ydGVyID0gdHlwZW9mIHVwZGF0ZXIgPT09ICdmdW5jdGlvbicgPyB1cGRhdGVyKHNvcnRlcikgOiB1cGRhdGVyO1xuICAgICAgICBzZXRTb3J0ZXIobmV4dFNvcnRlcik7XG4gICAgICAgIC8vIFJlc2V0IHBhZ2luYXRpb24gdG8gcGFnZSAxIHdoZW4gc29ydGluZyBjaGFuZ2VzXG4gICAgICAgIGlmIChtZXJnZWRQYWdpbmF0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2V0Q3VycmVudCgxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0UGFnaW5hdGlvbiA9IG1lcmdlZFBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogeyBjdXJyZW50OiAxLCBwYWdlU2l6ZSB9O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcjogbmV4dFNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHJlc2V0UGFnaW5hdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW1pdENoYW5nZShuZXh0UmVzdWx0LmN1cnJlbnREYXRhU291cmNlLCAnc29ydCcsIHtcbiAgICAgICAgICAgICAgICBzb3J0ZXI6IG5leHRTb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHdyYXBwZWRTZXRGaWx0ZXJzID0gdXNlTWVtb2l6ZWRGbigodXBkYXRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0RmlsdGVycyA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihmaWx0ZXJzKSA6IHVwZGF0ZXI7XG4gICAgICAgIHNldEZpbHRlcnMobmV4dEZpbHRlcnMpO1xuICAgICAgICAvLyBSZXNldCBwYWdpbmF0aW9uIHRvIHBhZ2UgMSB3aGVuIGZpbHRlcnMgY2hhbmdlXG4gICAgICAgIGlmIChtZXJnZWRQYWdpbmF0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgc2V0Q3VycmVudCgxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc2V0UGFnaW5hdGlvbiA9IG1lcmdlZFBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogeyBjdXJyZW50OiAxLCBwYWdlU2l6ZSB9O1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBuZXh0RmlsdGVycyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiByZXNldFBhZ2luYXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGVtaXRDaGFuZ2UobmV4dFJlc3VsdC5jdXJyZW50RGF0YVNvdXJjZSwgJ2ZpbHRlcicsIHtcbiAgICAgICAgICAgICAgICBzb3J0ZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogbmV4dEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogcmVzZXRQYWdpbmF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3cmFwcGVkU2V0UGFnaW5hdGlvbiA9IHVzZU1lbW9pemVkRm4oKHVwZGF0ZXIpID0+IHtcbiAgICAgICAgaWYgKHBhZ2luYXRpb24gPT09IGZhbHNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB7IGN1cnJlbnQsIHBhZ2VTaXplIH07XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nID8gdXBkYXRlcihjdXJyZW50VmFsdWUpIDogdXBkYXRlcjtcbiAgICAgICAgc2V0Q3VycmVudChuZXh0VmFsdWUuY3VycmVudCk7XG4gICAgICAgIHNldFBhZ2VTaXplKG5leHRWYWx1ZS5wYWdlU2l6ZSk7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlc3VsdCA9IGFwcGx5VGFibGVQaXBlbGluZSh7XG4gICAgICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgIHNvcnRlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IG5leHRWYWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW1pdENoYW5nZShuZXh0UmVzdWx0LmN1cnJlbnREYXRhU291cmNlLCAncGFnaW5hdGUnLCB7XG4gICAgICAgICAgICAgICAgc29ydGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogbmV4dFZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN1bHQpLCB7IHNvcnRlcixcbiAgICAgICAgc29ydGVyU3RhdGVzLFxuICAgICAgICBmaWx0ZXJzLCBwYWdpbmF0aW9uOiBtZXJnZWRQYWdpbmF0aW9uLCBzZXRTb3J0ZXI6IHdyYXBwZWRTZXRTb3J0ZXIsIHNldEZpbHRlcnM6IHdyYXBwZWRTZXRGaWx0ZXJzLCBzZXRQYWdpbmF0aW9uOiB3cmFwcGVkU2V0UGFnaW5hdGlvbiB9KTtcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Key } from 'react';
|
|
2
|
-
import type { TableExpandableConfig } from '../interface';
|
|
3
|
-
export declare const useTableExpand: <T>({ expandable, }: {
|
|
2
|
+
import type { TableExpandableConfig, TableRecord } from '../interface';
|
|
3
|
+
export declare const useTableExpand: <T extends TableRecord = TableRecord>({ expandable, }: {
|
|
4
4
|
expandable?: TableExpandableConfig<T>;
|
|
5
5
|
}) => {
|
|
6
6
|
mergedExpandedRowKeys: Key[];
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { type Key } from 'react';
|
|
2
|
-
import type { TableRowSelection } from '../interface';
|
|
3
|
-
export declare const useTableSelection: <T>({ rowSelection, dataSource, currentDataSource, getRowKey, }: {
|
|
2
|
+
import type { TableRecord, TableRowSelection } from '../interface';
|
|
3
|
+
export declare const useTableSelection: <T extends TableRecord = TableRecord>({ rowSelection, dataSource, currentDataSource, getRowKey, }: {
|
|
4
4
|
rowSelection?: TableRowSelection<T>;
|
|
5
5
|
dataSource: T[];
|
|
6
6
|
currentDataSource: T[];
|
|
7
7
|
getRowKey: (record: T, index: number) => Key;
|
|
8
8
|
}) => {
|
|
9
9
|
mergedSelectedRowKeys: Key[];
|
|
10
|
-
checkboxPropsMap: Map<Key, Partial<
|
|
11
|
-
disabled: boolean;
|
|
12
|
-
}>>;
|
|
10
|
+
checkboxPropsMap: Map<Key, Partial<Omit<import("../../Checkbox").CheckboxProps, "checked" | "defaultChecked" | "onChange">>>;
|
|
13
11
|
isAllSelected: boolean;
|
|
14
12
|
isIndeterminate: boolean;
|
|
15
13
|
triggerSelection: (recordKey: Key) => void;
|
|
@@ -148,4 +148,4 @@ var useTableSelection = exports.useTableSelection = function useTableSelection(_
|
|
|
148
148
|
triggerSelectAll: triggerSelectAll
|
|
149
149
|
};
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNlbGVjdGlvbi50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNlbGVjdGlvbi5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2hvb2tzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJ1c2VUYWJsZVNlbGVjdGlvbiIsImV4cG9ydHMiLCJfcmVmIiwicm93U2VsZWN0aW9uIiwiZGF0YVNvdXJjZSIsImN1cnJlbnREYXRhU291cmNlIiwiZ2V0Um93S2V5IiwiX2EiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiZGVmYXVsdFNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93S2V5cyIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwibWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwic2V0TWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwia3ZNYXBSZWYiLCJ1c2VSZWYiLCJkYXRhIiwibWFwIiwiTWFwIiwiZ2V0S3ZNYXAiLCJ1c2VNZW1vaXplZEZuIiwiY3VycmVudCIsImkiLCJzZXQiLCJwcmVzZXJ2ZVJlY29yZHNSZWYiLCJnZXRSZWNvcmRCeUtleSIsImtleSIsImdldCIsInVzZUVmZmVjdCIsInByZXNlcnZlU2VsZWN0ZWRSb3dLZXlzIiwibmV4dENhY2hlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJyZWNvcmQiLCJ1bmRlZmluZWQiLCJoYXMiLCJlcnIiLCJjaGVja2JveFByb3BzTWFwIiwidXNlTWVtbyIsImdldENoZWNrYm94UHJvcHMiLCJmb3JFYWNoIiwiaW5kZXgiLCJzZWxlY3RhYmxlS2V5cyIsImZpbHRlciIsImRpc2FibGVkIiwic2VsZWN0ZWRTZWxlY3RhYmxlS2V5cyIsImluY2x1ZGVzIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInJlc29sdmVSZWNvcmRzIiwia2V5cyIsInRyaWdnZXJTZWxlY3Rpb24iLCJyZWNvcmRLZXkiLCJfYiIsInNlbGVjdGlvblR5cGUiLCJ0eXBlIiwibmV4dEtleXMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwib25DaGFuZ2UiLCJ0cmlnZ2VyU2VsZWN0QWxsIiwibWV0aG9kIiwiZGlzYWJsZWRTZWxlY3RlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQWtFLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENB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QUNoRixDQUFDLENBQUM7RUFFRixPQUFPO0lBQ0xqRCxxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQnlCLGdCQUFnQixFQUFoQkEsZ0JBQWdCO0lBQ2hCVSxhQUFhLEVBQWJBLGFBQWE7SUFDYkMsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZHLGdCQUFnQixFQUFoQkEsZ0JBQWdCO0lBQ2hCUyxnQkFBZ0IsRUFBaEJBO0VDaENBLENEaUNEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVTZWxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5leHBvcnQgY29uc3QgdXNlVGFibGVTZWxlY3Rpb24gPSAoeyByb3dTZWxlY3Rpb24sIGRhdGFTb3VyY2UsIGN1cnJlbnREYXRhU291cmNlLCBnZXRSb3dLZXksIH0pID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgW21lcmdlZFNlbGVjdGVkUm93S2V5cywgc2V0TWVyZ2VkU2VsZWN0ZWRSb3dLZXlzXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZSgoX2EgPSByb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uZGVmYXVsdFNlbGVjdGVkUm93S2V5cykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10sIHJvd1NlbGVjdGlvbiA9PT0gbnVsbCB8fCByb3dTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJvd1NlbGVjdGlvbi5zZWxlY3RlZFJvd0tleXMpO1xuICAgIC8vIExhenkga2V54oaScmVjb3JkIG1hcCwgcmVidWlsdCB3aGVuIGRhdGFTb3VyY2UgcmVmZXJlbmNlIGNoYW5nZXNcbiAgICBjb25zdCBrdk1hcFJlZiA9IHVzZVJlZih7IGRhdGE6IFtdLCBtYXA6IG5ldyBNYXAoKSB9KTtcbiAgICBjb25zdCBnZXRLdk1hcCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBpZiAoa3ZNYXBSZWYuY3VycmVudC5kYXRhICE9PSBkYXRhU291cmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFTb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGdldFJvd0tleShkYXRhU291cmNlW2ldLCBpKSwgZGF0YVNvdXJjZVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrdk1hcFJlZi5jdXJyZW50ID0geyBkYXRhOiBkYXRhU291cmNlLCBtYXAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga3ZNYXBSZWYuY3VycmVudC5tYXA7XG4gICAgfSk7XG4gICAgLy8gQ2FjaGUgZm9yIHByZXNlcnZlU2VsZWN0ZWRSb3dLZXlzOiBzdG9yZXMga2V54oaScmVjb3JkIGV2ZW4gYWNyb3NzIHBhZ2luYXRpb25cbiAgICBjb25zdCBwcmVzZXJ2ZVJlY29yZHNSZWYgPSB1c2VSZWYobmV3IE1hcCgpKTtcbiAgICBjb25zdCBnZXRSZWNvcmRCeUtleSA9IHVzZU1lbW9pemVkRm4oKGtleSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSBnZXRLdk1hcCgpLmdldChrZXkpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5nZXQoa2V5KTtcbiAgICB9KTtcbiAgICAvLyBVcGRhdGUgY2FjaGUgd2hlbiBzZWxlY3RlZCBrZXlzIGNoYW5nZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghKHJvd1NlbGVjdGlvbiA9PT0gbnVsbCB8fCByb3dTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJvd1NlbGVjdGlvbi5wcmVzZXJ2ZVNlbGVjdGVkUm93S2V5cykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCByZWNvcmQgPSBnZXRSZWNvcmRCeUtleShrZXkpO1xuICAgICAgICAgICAgaWYgKHJlY29yZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbmV4dENhY2hlLnNldChrZXksIHJlY29yZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIG5leHRDYWNoZS5zZXQoa2V5LCBwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5nZXQoa2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJlc2VydmVSZWNvcmRzUmVmLmN1cnJlbnQgPSBuZXh0Q2FjaGU7XG4gICAgfSwgW21lcmdlZFNlbGVjdGVkUm93S2V5cywgcm93U2VsZWN0aW9uID09PSBudWxsIHx8IHJvd1NlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcm93U2VsZWN0aW9uLnByZXNlcnZlU2VsZWN0ZWRSb3dLZXlzLCBnZXRSZWNvcmRCeUtleV0pO1xuICAgIGNvbnN0IGNoZWNrYm94UHJvcHNNYXAgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBpZiAoIShyb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uZ2V0Q2hlY2tib3hQcm9wcykpXG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICBjdXJyZW50RGF0YVNvdXJjZS5mb3JFYWNoKChyZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgcm93U2VsZWN0aW9uLmdldENoZWNrYm94UHJvcHMocmVjb3JkKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH0sIFtjdXJyZW50RGF0YVNvdXJjZSwgZ2V0Um93S2V5LCByb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uZ2V0Q2hlY2tib3hQcm9wc10pO1xuICAgIGNvbnN0IHNlbGVjdGFibGVLZXlzID0gdXNlTWVtbygoKSA9PiBjdXJyZW50RGF0YVNvdXJjZVxuICAgICAgICAubWFwKChyZWNvcmQsIGluZGV4KSA9PiBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCkpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4geyB2YXIgX2E7IHJldHVybiAhKChfYSA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KGtleSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCk7IH0pLCBbY3VycmVudERhdGFTb3VyY2UsIGdldFJvd0tleSwgY2hlY2tib3hQcm9wc01hcF0pO1xuICAgIGNvbnN0IHNlbGVjdGVkU2VsZWN0YWJsZUtleXMgPSB1c2VNZW1vKCgpID0+IHNlbGVjdGFibGVLZXlzLmZpbHRlcigoa2V5KSA9PiBtZXJnZWRTZWxlY3RlZFJvd0tleXMuaW5jbHVkZXMoa2V5KSksIFtzZWxlY3RhYmxlS2V5cywgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzXSk7XG4gICAgY29uc3QgaXNBbGxTZWxlY3RlZCA9IHNlbGVjdGFibGVLZXlzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRTZWxlY3RhYmxlS2V5cy5sZW5ndGggPT09IHNlbGVjdGFibGVLZXlzLmxlbmd0aDtcbiAgICBjb25zdCBpc0luZGV0ZXJtaW5hdGUgPSBzZWxlY3RlZFNlbGVjdGFibGVLZXlzLmxlbmd0aCA+IDAgJiYgIWlzQWxsU2VsZWN0ZWQ7XG4gICAgY29uc3QgcmVzb2x2ZVJlY29yZHMgPSB1c2VNZW1vaXplZEZuKChrZXlzKSA9PiB7XG4gICAgICAgIGlmIChyb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24ucHJlc2VydmVTZWxlY3RlZFJvd0tleXMpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlzXG4gICAgICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBnZXRSZWNvcmRCeUtleShrZXkpKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJlY29yZCkgPT4gcmVjb3JkICE9PSB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50RGF0YVNvdXJjZS5maWx0ZXIoKHJlY29yZCwgaW5kZXgpID0+IGtleXMuaW5jbHVkZXMoZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpKSk7XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlclNlbGVjdGlvbiA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gKF9hID0gcm93U2VsZWN0aW9uID09PSBudWxsIHx8IHJvd1NlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcm93U2VsZWN0aW9uLnR5cGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdjaGVja2JveCc7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gc2VsZWN0aW9uVHlwZSA9PT0gJ3JhZGlvJ1xuICAgICAgICAgICAgPyBbcmVjb3JkS2V5XVxuICAgICAgICAgICAgOiBtZXJnZWRTZWxlY3RlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KVxuICAgICAgICAgICAgICAgID8gbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpXG4gICAgICAgICAgICAgICAgOiBbLi4ubWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCByZWNvcmRLZXldO1xuICAgICAgICBzZXRNZXJnZWRTZWxlY3RlZFJvd0tleXMobmV4dEtleXMpO1xuICAgICAgICAoX2IgPSByb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24ub25DaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHJvd1NlbGVjdGlvbiwgbmV4dEtleXMsIHJlc29sdmVSZWNvcmRzKG5leHRLZXlzKSwgeyB0eXBlOiAnc2luZ2xlJyB9KTtcbiAgICB9KTtcbiAgICBjb25zdCB0cmlnZ2VyU2VsZWN0QWxsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IG5leHRLZXlzO1xuICAgICAgICBsZXQgbWV0aG9kO1xuICAgICAgICBpZiAoaXNBbGxTZWxlY3RlZCkge1xuICAgICAgICAgICAgbmV4dEtleXMgPSBtZXJnZWRTZWxlY3RlZFJvd0tleXMuZmlsdGVyKChrZXkpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gY2hlY2tib3hQcm9wc01hcC5nZXQoa2V5KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkOyB9KTtcbiAgICAgICAgICAgIG1ldGhvZCA9ICdub25lJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkU2VsZWN0ZWQgPSBtZXJnZWRTZWxlY3RlZFJvd0tleXMuZmlsdGVyKChrZXkpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gY2hlY2tib3hQcm9wc01hcC5nZXQoa2V5KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkOyB9KTtcbiAgICAgICAgICAgIG5leHRLZXlzID0gWy4uLmRpc2FibGVkU2VsZWN0ZWQsIC4uLnNlbGVjdGFibGVLZXlzXTtcbiAgICAgICAgICAgIG1ldGhvZCA9ICdhbGwnO1xuICAgICAgICB9XG4gICAgICAgIHNldE1lcmdlZFNlbGVjdGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IHJvd1NlbGVjdGlvbiA9PT0gbnVsbCB8fCByb3dTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJvd1NlbGVjdGlvbi5vbkNoYW5nZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocm93U2VsZWN0aW9uLCBuZXh0S2V5cywgcmVzb2x2ZVJlY29yZHMobmV4dEtleXMpLCB7IHR5cGU6IG1ldGhvZCB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRTZWxlY3RlZFJvd0tleXMsXG4gICAgICAgIGNoZWNrYm94UHJvcHNNYXAsXG4gICAgICAgIGlzQWxsU2VsZWN0ZWQsXG4gICAgICAgIGlzSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgdHJpZ2dlclNlbGVjdGlvbixcbiAgICAgICAgdHJpZ2dlclNlbGVjdEFsbCxcbiAgICB9O1xufTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
151
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNlbGVjdGlvbi50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNlbGVjdGlvbi5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2hvb2tzIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJ1c2VUYWJsZVNlbGVjdGlvbiIsImV4cG9ydHMiLCJfcmVmIiwicm93U2VsZWN0aW9uIiwiZGF0YVNvdXJjZSIsImN1cnJlbnREYXRhU291cmNlIiwiZ2V0Um93S2V5IiwiX2EiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiZGVmYXVsdFNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93S2V5cyIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwibWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwic2V0TWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwia3ZNYXBSZWYiLCJ1c2VSZWYiLCJkYXRhIiwibWFwIiwiTWFwIiwiZ2V0S3ZNYXAiLCJ1c2VNZW1vaXplZEZuIiwiY3VycmVudCIsImkiLCJzZXQiLCJwcmVzZXJ2ZVJlY29yZHNSZWYiLCJnZXRSZWNvcmRCeUtleSIsImtleSIsImdldCIsInVzZUVmZmVjdCIsInByZXNlcnZlU2VsZWN0ZWRSb3dLZXlzIiwibmV4dENhY2hlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJyZWNvcmQiLCJ1bmRlZmluZWQiLCJoYXMiLCJlcnIiLCJjaGVja2JveFByb3BzTWFwIiwidXNlTWVtbyIsImdldENoZWNrYm94UHJvcHMiLCJmb3JFYWNoIiwiaW5kZXgiLCJzZWxlY3RhYmxlS2V5cyIsImZpbHRlciIsImRpc2FibGVkIiwic2VsZWN0ZWRTZWxlY3RhYmxlS2V5cyIsImluY2x1ZGVzIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInJlc29sdmVSZWNvcmRzIiwia2V5cyIsInRyaWdnZXJTZWxlY3Rpb24iLCJyZWNvcmRLZXkiLCJfYiIsInNlbGVjdGlvblR5cGUiLCJ0eXBlIiwibmV4dEtleXMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwib25DaGFuZ2UiLCJ0cmlnZ2VyU2VsZWN0QWxsIiwibWV0aG9kIiwiZGlzYWJsZWRTZWxlY3RlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQWtFLFNBQUFFLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQSxFQUFBLFdBQUFILEVBQUEsSUFBQVQsQ0FBQSxDQUFBUSxNQUFBLEtBQUFLLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUFkLENB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QUNoRixDQUFDLENBQUM7RUFFRixPQUFPO0lBQ0xqRCxxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQnlCLGdCQUFnQixFQUFoQkEsZ0JBQWdCO0lBQ2hCVSxhQUFhLEVBQWJBLGFBQWE7SUFDYkMsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZHLGdCQUFnQixFQUFoQkEsZ0JBQWdCO0lBQ2hCUyxnQkFBZ0IsRUFBaEJBO0VDaENBLENEaUNEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVTZWxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5leHBvcnQgY29uc3QgdXNlVGFibGVTZWxlY3Rpb24gPSAoeyByb3dTZWxlY3Rpb24sIGRhdGFTb3VyY2UsIGN1cnJlbnREYXRhU291cmNlLCBnZXRSb3dLZXksIH0pID0+IHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgW21lcmdlZFNlbGVjdGVkUm93S2V5cywgc2V0TWVyZ2VkU2VsZWN0ZWRSb3dLZXlzXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZSgoX2EgPSByb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uZGVmYXVsdFNlbGVjdGVkUm93S2V5cykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10sIHJvd1NlbGVjdGlvbiA9PT0gbnVsbCB8fCByb3dTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJvd1NlbGVjdGlvbi5zZWxlY3RlZFJvd0tleXMpO1xuICAgIC8vIExhenkga2V54oaScmVjb3JkIG1hcCwgcmVidWlsdCB3aGVuIGRhdGFTb3VyY2UgcmVmZXJlbmNlIGNoYW5nZXNcbiAgICBjb25zdCBrdk1hcFJlZiA9IHVzZVJlZih7IGRhdGE6IFtdLCBtYXA6IG5ldyBNYXAoKSB9KTtcbiAgICBjb25zdCBnZXRLdk1hcCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBpZiAoa3ZNYXBSZWYuY3VycmVudC5kYXRhICE9PSBkYXRhU291cmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFTb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXAuc2V0KGdldFJvd0tleShkYXRhU291cmNlW2ldLCBpKSwgZGF0YVNvdXJjZVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrdk1hcFJlZi5jdXJyZW50ID0geyBkYXRhOiBkYXRhU291cmNlLCBtYXAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga3ZNYXBSZWYuY3VycmVudC5tYXA7XG4gICAgfSk7XG4gICAgLy8gQ2FjaGUgZm9yIHByZXNlcnZlU2VsZWN0ZWRSb3dLZXlzOiBzdG9yZXMga2V54oaScmVjb3JkIGV2ZW4gYWNyb3NzIHBhZ2luYXRpb25cbiAgICBjb25zdCBwcmVzZXJ2ZVJlY29yZHNSZWYgPSB1c2VSZWYobmV3IE1hcCgpKTtcbiAgICBjb25zdCBnZXRSZWNvcmRCeUtleSA9IHVzZU1lbW9pemVkRm4oKGtleSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSBnZXRLdk1hcCgpLmdldChrZXkpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5nZXQoa2V5KTtcbiAgICB9KTtcbiAgICAvLyBVcGRhdGUgY2FjaGUgd2hlbiBzZWxlY3RlZCBrZXlzIGNoYW5nZVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghKHJvd1NlbGVjdGlvbiA9PT0gbnVsbCB8fCByb3dTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJvd1NlbGVjdGlvbi5wcmVzZXJ2ZVNlbGVjdGVkUm93S2V5cykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCByZWNvcmQgPSBnZXRSZWNvcmRCeUtleShrZXkpO1xuICAgICAgICAgICAgaWYgKHJlY29yZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbmV4dENhY2hlLnNldChrZXksIHJlY29yZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIG5leHRDYWNoZS5zZXQoa2V5LCBwcmVzZXJ2ZVJlY29yZHNSZWYuY3VycmVudC5nZXQoa2V5KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJlc2VydmVSZWNvcmRzUmVmLmN1cnJlbnQgPSBuZXh0Q2FjaGU7XG4gICAgfSwgW21lcmdlZFNlbGVjdGVkUm93S2V5cywgcm93U2VsZWN0aW9uID09PSBudWxsIHx8IHJvd1NlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcm93U2VsZWN0aW9uLnByZXNlcnZlU2VsZWN0ZWRSb3dLZXlzLCBnZXRSZWNvcmRCeUtleV0pO1xuICAgIGNvbnN0IGNoZWNrYm94UHJvcHNNYXAgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBpZiAoIShyb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uZ2V0Q2hlY2tib3hQcm9wcykpXG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICBjdXJyZW50RGF0YVNvdXJjZS5mb3JFYWNoKChyZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgcm93U2VsZWN0aW9uLmdldENoZWNrYm94UHJvcHMocmVjb3JkKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH0sIFtjdXJyZW50RGF0YVNvdXJjZSwgZ2V0Um93S2V5LCByb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uZ2V0Q2hlY2tib3hQcm9wc10pO1xuICAgIGNvbnN0IHNlbGVjdGFibGVLZXlzID0gdXNlTWVtbygoKSA9PiBjdXJyZW50RGF0YVNvdXJjZVxuICAgICAgICAubWFwKChyZWNvcmQsIGluZGV4KSA9PiBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCkpXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4geyB2YXIgX2E7IHJldHVybiAhKChfYSA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KGtleSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCk7IH0pLCBbY3VycmVudERhdGFTb3VyY2UsIGdldFJvd0tleSwgY2hlY2tib3hQcm9wc01hcF0pO1xuICAgIGNvbnN0IHNlbGVjdGVkU2VsZWN0YWJsZUtleXMgPSB1c2VNZW1vKCgpID0+IHNlbGVjdGFibGVLZXlzLmZpbHRlcigoa2V5KSA9PiBtZXJnZWRTZWxlY3RlZFJvd0tleXMuaW5jbHVkZXMoa2V5KSksIFtzZWxlY3RhYmxlS2V5cywgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzXSk7XG4gICAgY29uc3QgaXNBbGxTZWxlY3RlZCA9IHNlbGVjdGFibGVLZXlzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRTZWxlY3RhYmxlS2V5cy5sZW5ndGggPT09IHNlbGVjdGFibGVLZXlzLmxlbmd0aDtcbiAgICBjb25zdCBpc0luZGV0ZXJtaW5hdGUgPSBzZWxlY3RlZFNlbGVjdGFibGVLZXlzLmxlbmd0aCA+IDAgJiYgIWlzQWxsU2VsZWN0ZWQ7XG4gICAgY29uc3QgcmVzb2x2ZVJlY29yZHMgPSB1c2VNZW1vaXplZEZuKChrZXlzKSA9PiB7XG4gICAgICAgIGlmIChyb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24ucHJlc2VydmVTZWxlY3RlZFJvd0tleXMpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlzXG4gICAgICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBnZXRSZWNvcmRCeUtleShrZXkpKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHJlY29yZCkgPT4gcmVjb3JkICE9PSB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50RGF0YVNvdXJjZS5maWx0ZXIoKHJlY29yZCwgaW5kZXgpID0+IGtleXMuaW5jbHVkZXMoZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpKSk7XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlclNlbGVjdGlvbiA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gKF9hID0gcm93U2VsZWN0aW9uID09PSBudWxsIHx8IHJvd1NlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogcm93U2VsZWN0aW9uLnR5cGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdjaGVja2JveCc7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gc2VsZWN0aW9uVHlwZSA9PT0gJ3JhZGlvJ1xuICAgICAgICAgICAgPyBbcmVjb3JkS2V5XVxuICAgICAgICAgICAgOiBtZXJnZWRTZWxlY3RlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KVxuICAgICAgICAgICAgICAgID8gbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpXG4gICAgICAgICAgICAgICAgOiBbLi4ubWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCByZWNvcmRLZXldO1xuICAgICAgICBzZXRNZXJnZWRTZWxlY3RlZFJvd0tleXMobmV4dEtleXMpO1xuICAgICAgICAoX2IgPSByb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24ub25DaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHJvd1NlbGVjdGlvbiwgbmV4dEtleXMsIHJlc29sdmVSZWNvcmRzKG5leHRLZXlzKSwgeyB0eXBlOiAnc2luZ2xlJyB9KTtcbiAgICB9KTtcbiAgICBjb25zdCB0cmlnZ2VyU2VsZWN0QWxsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IG5leHRLZXlzO1xuICAgICAgICBsZXQgbWV0aG9kO1xuICAgICAgICBpZiAoaXNBbGxTZWxlY3RlZCkge1xuICAgICAgICAgICAgbmV4dEtleXMgPSBtZXJnZWRTZWxlY3RlZFJvd0tleXMuZmlsdGVyKChrZXkpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gY2hlY2tib3hQcm9wc01hcC5nZXQoa2V5KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkOyB9KTtcbiAgICAgICAgICAgIG1ldGhvZCA9ICdub25lJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkU2VsZWN0ZWQgPSBtZXJnZWRTZWxlY3RlZFJvd0tleXMuZmlsdGVyKChrZXkpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gY2hlY2tib3hQcm9wc01hcC5nZXQoa2V5KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkOyB9KTtcbiAgICAgICAgICAgIG5leHRLZXlzID0gWy4uLmRpc2FibGVkU2VsZWN0ZWQsIC4uLnNlbGVjdGFibGVLZXlzXTtcbiAgICAgICAgICAgIG1ldGhvZCA9ICdhbGwnO1xuICAgICAgICB9XG4gICAgICAgIHNldE1lcmdlZFNlbGVjdGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IHJvd1NlbGVjdGlvbiA9PT0gbnVsbCB8fCByb3dTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJvd1NlbGVjdGlvbi5vbkNoYW5nZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocm93U2VsZWN0aW9uLCBuZXh0S2V5cywgcmVzb2x2ZVJlY29yZHMobmV4dEtleXMpLCB7IHR5cGU6IG1ldGhvZCB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRTZWxlY3RlZFJvd0tleXMsXG4gICAgICAgIGNoZWNrYm94UHJvcHNNYXAsXG4gICAgICAgIGlzQWxsU2VsZWN0ZWQsXG4gICAgICAgIGlzSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgdHJpZ2dlclNlbGVjdGlvbixcbiAgICAgICAgdHJpZ2dlclNlbGVjdEFsbCxcbiAgICB9O1xufTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type HTMLAttributes, type Key, type ReactNode } from 'react';
|
|
2
|
+
import type { TableComponents, TableDirection, TableGetComponentProps, TableLayout, TableProps, TableRecord, TableRowClassName } from '../interface';
|
|
3
|
+
import type { ColumnsType as InternalColumnsType, ExpandableConfig } from '../internal/kernel/interface';
|
|
4
|
+
/** Kernel props that flow identically through `Table` and `VirtualTable`. */
|
|
5
|
+
export interface ForwardedKernelProps<T extends TableRecord> {
|
|
6
|
+
rowKey: string | ((record: T) => Key);
|
|
7
|
+
childrenColumnName?: string;
|
|
8
|
+
indentSize?: number;
|
|
9
|
+
onRow?: TableGetComponentProps<T>;
|
|
10
|
+
rowClassName?: TableRowClassName<T>;
|
|
11
|
+
summary?: (data: readonly T[]) => ReactNode;
|
|
12
|
+
showHeader?: boolean;
|
|
13
|
+
tableLayout?: TableLayout;
|
|
14
|
+
components?: TableComponents<T>;
|
|
15
|
+
direction?: TableDirection;
|
|
16
|
+
rowHoverable?: boolean;
|
|
17
|
+
sticky?: TableProps<T>['sticky'];
|
|
18
|
+
}
|
|
19
|
+
export interface TableSetupResult<T extends TableRecord> {
|
|
20
|
+
prefixCls: string;
|
|
21
|
+
wrapperClassName: string;
|
|
22
|
+
tableClassName: string;
|
|
23
|
+
loading: boolean;
|
|
24
|
+
renderedColumns: InternalColumnsType<T>;
|
|
25
|
+
currentDataSource: T[];
|
|
26
|
+
mergedExpandable: ExpandableConfig<T> | undefined;
|
|
27
|
+
emptyText: ReactNode;
|
|
28
|
+
/** HTML attributes that didn't map to a known TableProps field. Land on the wrapper div. */
|
|
29
|
+
wrapperHtmlProps: HTMLAttributes<HTMLDivElement>;
|
|
30
|
+
forwardedKernelProps: ForwardedKernelProps<T>;
|
|
31
|
+
paginationNode: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Centralises the wiring shared by `Table` and `VirtualTable`:
|
|
35
|
+
* - destructure props
|
|
36
|
+
* - resolve row key
|
|
37
|
+
* - run pipeline / selection / expand / column transforms
|
|
38
|
+
* - build kernel-ready props
|
|
39
|
+
* - split off pass-through HTML attributes so they can land on the outer wrapper
|
|
40
|
+
* div (instead of being spread untyped into the kernel via `rest as object`).
|
|
41
|
+
*/
|
|
42
|
+
export declare const useTableSetup: <T extends TableRecord>(props: TableProps<T>) => TableSetupResult<T>;
|