@1money/component-ui 0.0.47 → 0.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/es/components/Table/core/useTableColumns.d.ts +1 -1
  2. package/es/components/Table/core/useTableColumns.js +13 -3
  3. package/es/components/Table/core/useTableExpand.d.ts +3 -1
  4. package/es/components/Table/core/useTableExpand.js +30 -5
  5. package/es/components/Table/core/useTableSetup.js +23 -3
  6. package/es/components/Table/features/ExpandTrigger.js +9 -2
  7. package/es/components/Table/interface.d.ts +4 -3
  8. package/es/components/Table/internal/kernel/FixedHolder/index.js +1 -2
  9. package/es/components/Table/internal/kernel/Table.d.ts +1 -1
  10. package/es/components/Table/internal/kernel/Table.js +2 -8
  11. package/es/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -2
  12. package/es/components/Table/internal/kernel/VirtualTable/index.js +1 -2
  13. package/es/components/Table/internal/kernel/constant.d.ts +1 -1
  14. package/es/components/Table/internal/kernel/constant.js +1 -1
  15. package/es/components/Table/internal/kernel/hooks/useExpand.js +1 -2
  16. package/es/components/Table/internal/kernel/utils/offsetUtil.js +1 -2
  17. package/es/components/VirtualList/ScrollBar.js +1 -2
  18. package/es/index.css +1 -1
  19. package/lib/components/Table/core/useTableColumns.d.ts +1 -1
  20. package/lib/components/Table/core/useTableColumns.js +13 -3
  21. package/lib/components/Table/core/useTableExpand.d.ts +3 -1
  22. package/lib/components/Table/core/useTableExpand.js +30 -5
  23. package/lib/components/Table/core/useTableSetup.js +23 -3
  24. package/lib/components/Table/features/ExpandTrigger.js +9 -2
  25. package/lib/components/Table/interface.d.ts +4 -3
  26. package/lib/components/Table/internal/kernel/FixedHolder/index.js +1 -2
  27. package/lib/components/Table/internal/kernel/Table.d.ts +1 -1
  28. package/lib/components/Table/internal/kernel/Table.js +2 -8
  29. package/lib/components/Table/internal/kernel/VirtualTable/BodyGrid.js +1 -2
  30. package/lib/components/Table/internal/kernel/VirtualTable/index.js +1 -2
  31. package/lib/components/Table/internal/kernel/constant.d.ts +1 -1
  32. package/lib/components/Table/internal/kernel/constant.js +1 -1
  33. package/lib/components/Table/internal/kernel/hooks/useExpand.js +1 -2
  34. package/lib/components/Table/internal/kernel/utils/offsetUtil.js +1 -2
  35. package/lib/components/VirtualList/ScrollBar.js +1 -2
  36. package/lib/index.css +1 -1
  37. package/package.json +1 -1
  38. package/scripts/mcp-server/examples.generated.json +12 -0
  39. package/scripts/mcp-server/index.generated.json +8 -0
@@ -32,7 +32,7 @@ interface UseTableColumnsConfig<T extends TableRecord = TableRecord> {
32
32
  getRowKey: (record: T, index: number) => Key;
33
33
  }
34
34
  /**
35
- * Returns columns ready to be passed to the rc-table kernel.
35
+ * Returns columns ready to be passed to the table kernel.
36
36
  *
37
37
  * The returned shape IS structurally the kernel's `ColumnsType<T>`:
38
38
  * - Every leaf column's `render` is replaced by `makeRenderTransform`, which
@@ -16,11 +16,21 @@ function makeExpandTransform(config) {
16
16
  triggerExpand = config.triggerExpand,
17
17
  getRowKey = config.getRowKey;
18
18
  var customExpandIcon = expandable === null || expandable === void 0 ? void 0 : expandable.expandIcon;
19
+ var rowExpandable = expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable;
19
20
  return function (columns) {
21
+ var _a;
20
22
  return [{
21
23
  key: '__expand__',
22
- width: 48,
24
+ // Honor `expandable.columnWidth` / `columnTitle` / `fixed`;
25
+ // default to a 48px unlabeled column.
26
+ width: (_a = expandable === null || expandable === void 0 ? void 0 : expandable.columnWidth) !== null && _a !== void 0 ? _a : 48,
27
+ title: expandable === null || expandable === void 0 ? void 0 : expandable.columnTitle,
28
+ fixed: (expandable === null || expandable === void 0 ? void 0 : expandable.fixed) === true ? 'left' : (expandable === null || expandable === void 0 ? void 0 : expandable.fixed) === false ? undefined : expandable === null || expandable === void 0 ? void 0 : expandable.fixed,
23
29
  render: function render(_, record, index) {
30
+ // Honor `rowExpandable`: when the predicate denies a record, render no
31
+ // chevron at all (the row is non-expandable).
32
+ var canExpand = rowExpandable ? rowExpandable(record) : true;
33
+ if (!canExpand) return null;
24
34
  var recordKey = getRowKey(record, index);
25
35
  var expanded = mergedExpandedRowKeys.includes(recordKey);
26
36
  if (customExpandIcon) {
@@ -189,7 +199,7 @@ function makeRenderTransform() {
189
199
  };
190
200
  }
191
201
  /**
192
- * Returns columns ready to be passed to the rc-table kernel.
202
+ * Returns columns ready to be passed to the table kernel.
193
203
  *
194
204
  * The returned shape IS structurally the kernel's `ColumnsType<T>`:
195
205
  * - Every leaf column's `render` is replaced by `makeRenderTransform`, which
@@ -240,4 +250,4 @@ export function useTableColumns(config) {
240
250
  return transformed;
241
251
  }, [columns, variant, expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, size, getRowKey]);
242
252
  }
243
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsImNvbCIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuIiwibWFrZUV4cGFuZFRyYW5zZm9ybSIsImNvbmZpZyIsImV4cGFuZGFibGUiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwiZ2V0Um93S2V5IiwiY3VzdG9tRXhwYW5kSWNvbiIsImV4cGFuZEljb24iLCJjb2x1bW5zIiwia2V5Iiwid2lkdGgiLCJyZW5kZXIiLCJfIiwicmVjb3JkIiwiaW5kZXgiLCJyZWNvcmRLZXkiLCJleHBhbmRlZCIsImluY2x1ZGVzIiwicHJlZml4Q2xzIiwib25FeHBhbmQiLCJyZWMiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwib25Ub2dnbGUiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJtYWtlU2VsZWN0aW9uVHJhbnNmb3JtIiwiX2EiLCJyb3dTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3RlZFJvd0tleXMiLCJjaGVja2JveFByb3BzTWFwIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyU2VsZWN0QWxsIiwic2VsZWN0aW9uVHlwZSIsInR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJjb2x1bW5XaWR0aCIsImZpeGVkIiwidW5kZWZpbmVkIiwicmVuZGVySGVhZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsInJvd1Byb3BzIiwiZ2V0IiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzaXplIiwic29ydGVyIiwic2V0U29ydGVyIiwiZmlsdGVycyIsInNldEZpbHRlcnMiLCJtYXAiLCJjb2x1bW4iLCJfYiIsImlzU29ydGFibGUiLCJCb29sZWFuIiwiYWN0aXZlT3JkZXIiLCJjb2x1bW5LZXkiLCJTdHJpbmciLCJmaWx0ZXJTZWxlY3RlZCIsInVzZXJPbkhlYWRlckNlbGwiLCJvbkhlYWRlckNlbGwiLCJ1c2VyQXR0cnMiLCJvbkZpbHRlckNoYW5nZSIsIm5leHQiLCJjdXJyZW50IiwiX2RlZmluZVByb3BlcnR5IiwibGVuZ3RoIiwidGl0bGUiLCJzb3J0T3JkZXIiLCJvblNvcnRDbGljayIsImN1cnJlbnRTb3J0ZXIiLCJTUEFDRVJfQ09MVU1OX0NMUyIsIm1ha2VTcGFjZXJUcmFuc2Zvcm0iLCJjbGFzc05hbWUiLCJtYWtlUmVuZGVyVHJhbnNmb3JtIiwidmFsdWUiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ2YXJpYW50IiwidHJhbnNmb3JtcyIsInNob3dFeHBhbmRDb2x1bW4iLCJwdXNoIiwic2VsZWN0aW9uVHJhbnNmb3JtIiwidHJhbnNmb3JtZWQiLCJyZWR1Y2UiLCJjb2xzIiwiZm4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDQS9DLFNBQVNDLE9BQU8sUUFBa0IsT0FBTztBQUN6QyxTQUFTQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLFFBQVEsNkJBQTZCO0FBQ3RGLFNBQVNDLGFBQWEsUUFBUSwyQkFBMkI7QUFDekQsU0FBU0MsVUFBVSxRQUFRLHlCQUF5QjtBQUNwRCxTQUFTQyxRQUFRLFFBQVEsdUJBQXVCO0FBQ2hELFNBQVNDLG9CQUFvQixRQUFRLGNBQWM7QUFxQm5ELFNBQVNDLGFBQWFBLENBQ3BCQyxHQUF1QixFQUFBO0VBRXZCLE9BQU8s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a0IsRUFBRTtNQUN0QkgsVUFBVSxDQUFDRSxJQUFJLENBQUNDLGtCQUFrQixDQUFDO0lBQ3JDO0lBQ0FILFVBQVUsQ0FBQ0UsSUFBSSxDQUFDcEMsbUJBQW1CLENBQUNsRCxNQUFNLENBQUMsQ0FBQztJQUM1Q29GLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDTixtQkFBbUIsQ0FBQSxDQUFLLENBQUM7SUFDekMsSUFBSUcsT0FBTyxLQUFLLFFBQVEsRUFBRTtNQUN4QkMsVUFBVSxDQUFDRSxJQUFJLENBQUNSLG1CQUFtQixDQUFBLENBQUssQ0FBQztJQUMzQztJQUVBLElBQU1VLFdBQVcsR0FBR0osVUFBVSxDQUFDSyxNQUFNLENBQUMsVUFBQ0MsSUFBSSxFQUFFQyxFQUFFO01BQUEsT0FBS0EsRUFBRSxDQUFDRCxJQUFJLENBQUM7SUFBQSxHQUFFbkYsT0FBTyxDQUFDO0lBQ3RFLE9BQU9pRixXQUFnRDtFQUN6RCxDQUFDLEVBQUUsQ0FDRGpGLE9BQU8sRUFDUDRFLE9BQU8sRUFDUGxGLFVBQVUsRUFDVjBCLFlBQVksRUFDWnpCLHFCQUFxQixFQUNyQjBCLHFCQUFxQixFQUNyQkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZjVCLGFBQWEsRUFDYjZCLGdCQUFnQixFQUNoQkMsZ0JBQWdCLEVBQ2hCbUIsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsVUFBVSxFQUNWSixJQUFJLEVBQ0ovQyxTQUFTLENBQ1YsQ0FBQztBQUNKIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2wsIFNlbGVjdGlvbkhlYWRlckNvbnRyb2wgfSBmcm9tICcuLi9mZWF0dXJlcy9TZWxlY3Rpb25Db2x1bW4nO1xuaW1wb3J0IHsgRXhwYW5kVHJpZ2dlciB9IGZyb20gJy4uL2ZlYXR1cmVzL0V4cGFuZFRyaWdnZXInO1xuaW1wb3J0IHsgSGVhZGVyQ2VsbCB9IGZyb20gJy4uL3JlbmRlcmVycy9IZWFkZXJDZWxsJztcbmltcG9ydCB7IEJvZHlDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0JvZHlDZWxsJztcbmltcG9ydCB7IFRBQkxFX0RFRkFVTFRfUFJFRklYIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmZ1bmN0aW9uIGlzQ29sdW1uR3JvdXAoY29sKSB7XG4gICAgcmV0dXJuICdjaGlsZHJlbicgaW4gY29sICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIG1ha2VFeHBhbmRUcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgY29uc3QgeyBleHBhbmRhYmxlLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIHRyaWdnZXJFeHBhbmQsIGdldFJvd0tleSB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGN1c3RvbUV4cGFuZEljb24gPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZXhwYW5kSWNvbjtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnX19leHBhbmRfXycsXG4gICAgICAgICAgICB3aWR0aDogNDgsXG4gICAgICAgICAgICByZW5kZXI6IChfLCByZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1c3RvbUV4cGFuZEljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUV4cGFuZEljb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4Q2xzOiBUQUJMRV9ERUZBVUxUX1BSRUZJWCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kOiAocmVjLCBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXhwYW5kKGdldFJvd0tleShyZWMsIGluZGV4KSwgcmVjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goRXhwYW5kVHJpZ2dlciwgeyBleHBhbmRlZDogZXhwYW5kZWQsIG9uVG9nZ2xlOiAoKSA9PiB0cmlnZ2VyRXhwYW5kKHJlY29yZEtleSwgcmVjb3JkKSB9KSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAuLi5jb2x1bW5zLFxuICAgIF07XG59XG5mdW5jdGlvbiBtYWtlU2VsZWN0aW9uVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IHJvd1NlbGVjdGlvbiwgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICBpZiAoIXJvd1NlbGVjdGlvbilcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IChfYSA9IHJvd1NlbGVjdGlvbi50eXBlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnY2hlY2tib3gnO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBrZXk6ICdfX3NlbGVjdGlvbl9fJywgd2lkdGg6IChfYSA9IHJvd1NlbGVjdGlvbi5jb2x1bW5XaWR0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogNDgsIGZpeGVkOiByb3dTZWxlY3Rpb24uZml4ZWQgPyAnbGVmdCcgOiB1bmRlZmluZWQgfSwgKHNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCdcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVySGVhZGVyOiAoKSA9PiAoX2pzeChTZWxlY3Rpb25IZWFkZXJDb250cm9sLCB7IGNoZWNrZWQ6IGlzQWxsU2VsZWN0ZWQsIGluZGV0ZXJtaW5hdGU6IGlzSW5kZXRlcm1pbmF0ZSwgb25DaGFuZ2U6IHRyaWdnZXJTZWxlY3RBbGwgfSkpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHt9KSksIHsgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd1Byb3BzID0gY2hlY2tib3hQcm9wc01hcC5nZXQocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFNlbGVjdGlvbkNvbnRyb2wsIHsgdHlwZTogc2VsZWN0aW9uVHlwZSwgY2hlY2tlZDogbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSksIHJvd1Byb3BzOiByb3dQcm9wcywgb25DaGFuZ2U6ICgpID0+IHRyaWdnZXJTZWxlY3Rpb24ocmVjb3JkS2V5KSB9KSk7XG4gICAgICAgICAgICAgICAgfSB9KSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFyaWFTb3J0Rm9yKG9yZGVyKSB7XG4gICAgaWYgKG9yZGVyID09PSAnYXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIGlmIChvcmRlciA9PT0gJ2Rlc2NlbmQnKVxuICAgICAgICByZXR1cm4gJ2Rlc2NlbmRpbmcnO1xuICAgIHJldHVybiAnbm9uZSc7XG59XG4vLyBTdGFibGUgZW1wdHktZmlsdGVyIHJlZmVyZW5jZS4gV2l0aG91dCB0aGlzLCBgZmlsdGVyc1trZXldID8/IFtdYCBjcmVhdGVzIGFcbi8vIGZyZXNoIGBbXWAgb24gZXZlcnkgcmVuZGVyLCB3aGljaCB0aHJhc2hlcyBgRmlsdGVyVHJpZ2dlcmAnc1xuLy8gYHVzZUVmZmVjdChbc2VsZWN0ZWRLZXlzXSlgIGFuZCBjYXVzZXMgYW4gaW5maW5pdGUgc2V0U3RhdGUgbG9vcCBhZnRlclxuLy8gY29uZmlybSAvIHJlc2V0LlxuY29uc3QgRU1QVFlfRklMVEVSX1ZBTFVFID0gW107XG5mdW5jdGlvbiBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgc2l6ZSwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMgfSA9IGNvbmZpZztcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIGNvbnN0IGlzU29ydGFibGUgPSBCb29sZWFuKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBjb25zdCBhY3RpdmVPcmRlciA9IHNvcnRlci5jb2x1bW5LZXkgPT09IGNvbHVtbi5rZXkgPyAoX2EgPSBzb3J0ZXIub3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwgOiBudWxsO1xuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSBjb2x1bW4ua2V5ICE9IG51bGwgPyBTdHJpbmcoY29sdW1uLmtleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gY29sdW1uS2V5ICE9IG51bGwgPyAoKF9iID0gZmlsdGVyc1tjb2x1bW5LZXldKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBFTVBUWV9GSUxURVJfVkFMVUUpIDogRU1QVFlfRklMVEVSX1ZBTFVFO1xuICAgICAgICAvLyBDb21wb3NlIG9uSGVhZGVyQ2VsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHVzZXItcHJvdmlkZWQgYXR0cmlidXRlcy5cbiAgICAgICAgY29uc3QgdXNlck9uSGVhZGVyQ2VsbCA9IGNvbHVtbi5vbkhlYWRlckNlbGw7XG4gICAgICAgIGNvbnN0IG9uSGVhZGVyQ2VsbCA9IChjb2wsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB1c2VyQXR0cnMgPSAoX2EgPSB1c2VyT25IZWFkZXJDZWxsID09PSBudWxsIHx8IHVzZXJPbkhlYWRlckNlbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVzZXJPbkhlYWRlckNlbGwoY29sLCBpbmRleCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdXNlckF0dHJzKSwgKGlzU29ydGFibGUgPyB7ICdhcmlhLXNvcnQnOiBhcmlhU29ydEZvcihhY3RpdmVPcmRlcikgfSA6IG51bGwpKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25GaWx0ZXJDaGFuZ2UgPSAobmV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbktleSA9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNldEZpbHRlcnMoKGN1cnJlbnQpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQpLCB7IFtjb2x1bW5LZXldOiBuZXh0Lmxlbmd0aCA/IG5leHQgOiBudWxsIH0pKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgb25IZWFkZXJDZWxsLCB0aXRsZTogY29sdW1uLnJlbmRlckhlYWRlclxuICAgICAgICAgICAgICAgID8gY29sdW1uLnJlbmRlckhlYWRlcih7IGNvbHVtbiB9KVxuICAgICAgICAgICAgICAgIDogKF9qc3goSGVhZGVyQ2VsbCwgeyBjb2x1bW46IGNvbHVtbiwgc2l6ZTogc2l6ZSwgc29ydE9yZGVyOiBhY3RpdmVPcmRlciwgb25Tb3J0Q2xpY2s6ICgpID0+IHNldFNvcnRlcigoY3VycmVudFNvcnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjdXJyZW50U29ydGVyLmNvbHVtbktleSAhPT0gY29sdW1uLmtleSB8fCBjdXJyZW50U29ydGVyLm9yZGVyID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFNvcnRlci5vcmRlciA9PT0gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGVzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSksIGZpbHRlclNlbGVjdGVkOiBmaWx0ZXJTZWxlY3RlZCwgb25GaWx0ZXJDaGFuZ2U6IG9uRmlsdGVyQ2hhbmdlIH0pKSB9KTtcbiAgICB9KTtcbn1cbmNvbnN0IFNQQUNFUl9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1zcGFjZXInO1xuZnVuY3Rpb24gbWFrZVNwYWNlclRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IFtcbiAgICAgICAgeyBrZXk6ICdfX3NwYWNlcl9zdGFydF9fJywgd2lkdGg6IDE2LCB0aXRsZTogJycsIGNsYXNzTmFtZTogU1BBQ0VSX0NPTFVNTl9DTFMsIHJlbmRlcjogKCkgPT4gbnVsbCB9LFxuICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICB7IGtleTogJ19fc3BhY2VyX2VuZF9fJywgd2lkdGg6IDE2LCB0aXRsZTogJycsIGNsYXNzTmFtZTogU1BBQ0VSX0NPTFVNTl9DTFMsIHJlbmRlcjogKCkgPT4gbnVsbCB9LFxuICAgIF07XG59XG5mdW5jdGlvbiBtYWtlUmVuZGVyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2x1bW4pKVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29sdW1uKSwgeyByZW5kZXI6ICh2YWx1ZSwgcmVjb3JkLCBpbmRleCkgPT4gQm9keUNlbGwoe1xuICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB9KSB9KTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyBjb2x1bW5zIHJlYWR5IHRvIGJlIHBhc3NlZCB0byB0aGUgcmMtdGFibGUga2VybmVsLlxuICpcbiAqIFRoZSByZXR1cm5lZCBzaGFwZSBJUyBzdHJ1Y3R1cmFsbHkgdGhlIGtlcm5lbCdzIGBDb2x1bW5zVHlwZTxUPmA6XG4gKiAgIC0gRXZlcnkgbGVhZiBjb2x1bW4ncyBgcmVuZGVyYCBpcyByZXBsYWNlZCBieSBgbWFrZVJlbmRlclRyYW5zZm9ybWAsIHdoaWNoXG4gKiAgICAgYWx3YXlzIHJldHVybnMgYSBgUmVhY3ROb2RlYCAoQm9keUNlbGwgaGFuZGxlcyBgVGFibGVDZWxsQ29udGVudFZhbHVlYCAvXG4gKiAgICAgYFRhYmxlUmVuZGVyZWRDZWxsYCBleHRyYXMgYW5kIGVtaXRzIFJlYWN0Tm9kZS9SZW5kZXJlZENlbGwpLlxuICogICAtIEV2ZXJ5IGxlYWYgY29sdW1uJ3MgYHRpdGxlYCBpcyBlaXRoZXIgYSBSZWFjdE5vZGUgb3IgcmVwbGFjZWQgYnlcbiAqICAgICBgPEhlYWRlckNlbGwgLz5gLlxuICogQmVjYXVzZSBUUyBjYW4ndCB0cmFjayB0aGF0IHRob3NlIHJlcGxhY2VtZW50cyBoYXZlIGhhcHBlbmVkIGFjcm9zcyB0aGVcbiAqIGB0cmFuc2Zvcm1zLnJlZHVjZWAgY2hhaW4sIGEgc2luZ2xlIGludGVybmFsIGNhc3QgaXMgcmVxdWlyZWQg4oCUIGNhbGwgc2l0ZXMgbm9cbiAqIGxvbmdlciBuZWVkIHRoZWlyIG93biBgYXMgdW5rbm93biBhcyBJbnRlcm5hbENvbHVtbnNUeXBlPFQ+YCBjYXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVGFibGVDb2x1bW5zKGNvbmZpZykge1xuICAgIGNvbnN0IHsgY29sdW1ucywgdmFyaWFudCwgZXhwYW5kYWJsZSwgcm93U2VsZWN0aW9uLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIG1lcmdlZFNlbGVjdGVkUm93S2V5cywgY2hlY2tib3hQcm9wc01hcCwgaXNBbGxTZWxlY3RlZCwgaXNJbmRldGVybWluYXRlLCB0cmlnZ2VyRXhwYW5kLCB0cmlnZ2VyU2VsZWN0aW9uLCB0cmlnZ2VyU2VsZWN0QWxsLCBzb3J0ZXIsIHNldFNvcnRlciwgZmlsdGVycywgc2V0RmlsdGVycywgc2l6ZSwgZ2V0Um93S2V5LCB9ID0gY29uZmlnO1xuICAgIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtcyA9IFtdO1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSAmJiBleHBhbmRhYmxlLnNob3dFeHBhbmRDb2x1bW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3Rpb25UcmFuc2Zvcm0gPSByb3dTZWxlY3Rpb24gPyBtYWtlU2VsZWN0aW9uVHJhbnNmb3JtKGNvbmZpZykgOiBudWxsO1xuICAgICAgICBpZiAoc2VsZWN0aW9uVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2goc2VsZWN0aW9uVHJhbnNmb3JtKTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpKTtcbiAgICAgICAgdHJhbnNmb3Jtcy5wdXNoKG1ha2VSZW5kZXJUcmFuc2Zvcm0oKSk7XG4gICAgICAgIGlmICh2YXJpYW50ID09PSAnc3Ryb2tlJykge1xuICAgICAgICAgICAgdHJhbnNmb3Jtcy5wdXNoKG1ha2VTcGFjZXJUcmFuc2Zvcm0oKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1zLnJlZHVjZSgoY29scywgZm4pID0+IGZuKGNvbHMpLCBjb2x1bW5zKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICAgIH0sIFtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgdmFyaWFudCxcbiAgICAgICAgZXhwYW5kYWJsZSxcbiAgICAgICAgcm93U2VsZWN0aW9uLFxuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIG1lcmdlZFNlbGVjdGVkUm93S2V5cyxcbiAgICAgICAgY2hlY2tib3hQcm9wc01hcCxcbiAgICAgICAgaXNBbGxTZWxlY3RlZCxcbiAgICAgICAgaXNJbmRldGVybWluYXRlLFxuICAgICAgICB0cmlnZ2VyRXhwYW5kLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0aW9uLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0QWxsLFxuICAgICAgICBzb3J0ZXIsXG4gICAgICAgIHNldFNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgc2V0RmlsdGVycyxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIF0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
253
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsImNvbCIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkcmVuIiwibWFrZUV4cGFuZFRyYW5zZm9ybSIsImNvbmZpZyIsImV4cGFuZGFibGUiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwiZ2V0Um93S2V5IiwiY3VzdG9tRXhwYW5kSWNvbiIsImV4cGFuZEljb24iLCJyb3dFeHBhbmRhYmxlIiwiY29sdW1ucyIsIl9hIiwia2V5Iiwid2lkdGgiLCJjb2x1bW5XaWR0aCIsInRpdGxlIiwiY29sdW1uVGl0bGUiLCJmaXhlZCIsInVuZGVmaW5lZCIsInJlbmRlciIsIl8iLCJyZWNvcmQiLCJpbmRleCIsImNhbkV4cGFuZCIsInJlY29yZEtleSIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJwcmVmaXhDbHMiLCJvbkV4cGFuZCIsInJlYyIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJvblRvZ2dsZSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0iLCJyb3dTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3RlZFJvd0tleXMiLCJjaGVja2JveFByb3BzTWFwIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyU2VsZWN0QWxsIiwic2VsZWN0aW9uVHlwZSIsInR5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJIZWFkZXIiLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsIm9uQ2hhbmdlIiwicm93UHJvcHMiLCJnZXQiLCJhcmlhU29ydEZvciIsIm9yZGVyIiwiRU1QVFlfRklMVEVSX1ZBTFVFIiwibWFrZUhlYWRlclRyYW5zZm9ybSIsInNpemUiLCJzb3J0ZXIiLCJzZXRTb3J0ZXIiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsIm1hcCIsImNvbHVtbiIsIl9iIiwiaXNTb3J0YWJsZSIsIkJvb2xlYW4iLCJhY3RpdmVPcmRlciIsImNvbHVtbktleSIsIlN0cmluZyIsImZpbHRlclNlbGVjdGVkIiwidXNlck9uSGVhZGVyQ2VsbCIsIm9uSGVhZGVyQ2VsbCIsInVzZXJBdHRycyIsIm9uRmlsdGVyQ2hhbmdlIiwibmV4dCIsImN1cnJlbnQiLCJfZGVmaW5lUHJvcGVydHkiLCJsZW5ndGgiLCJzb3J0T3JkZXIiLCJvblNvcnRDbGljayIsImN1cnJlbnRTb3J0ZXIiLCJTUEFDRVJfQ09MVU1OX0NMUyIsIm1ha2VTcGFjZXJUcmFuc2Zvcm0iLCJjbGFzc05hbWUiLCJtYWtlUmVuZGVyVHJhbnNmb3JtIiwidmFsdWUiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ2YXJpYW50IiwidHJhbnNmb3JtcyIsInNob3dFeHBhbmRDb2x1bW4iLCJwdXNoIiwic2VsZWN0aW9uVHJhbnNmb3JtIiwidHJhbnNmb3JtZWQiLCJyZWR1Y2UiLCJjb2xzIiwiZm4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDQS9DLFNBQVNDLE9BQU8sUUFBa0IsT0FBTztBQUN6QyxTQUFTQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLFFBQVEsNkJBQTZCO0FBQ3RGLFNBQVNDLGFBQWEsUUFBUSwyQkFBMkI7QUFDekQsU0FBU0MsVUFBVSxRQUFRLHlCQUF5QjtBQUNwRCxTQUFTQyxRQUFRLFFBQVEsdUJBQXVCO0FBQ2hELFNBQVNDLG9CQUFvQixRQUFRLGNBQWM7QUFxQm5E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QyxrQkFBa0IsQ0FBQztJQUNyQztJQUNBSCxVQUFVLENBQUNFLElBQUksQ0FBQ25DLG1CQUFtQixDQUFDdEQsTUFBTSxDQUFDLENBQUM7SUFDNUN1RixVQUFVLENBQUNFLElBQUksQ0FBQ04sbUJBQW1CLENBQUEsQ0FBSyxDQUFDO0lBQ3pDLElBQUlHLE9BQU8sS0FBSyxRQUFRLEVBQUU7TUFDeEJDLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDUixtQkFBbUIsQ0FBQSxDQUFLLENBQUM7SUFDM0M7SUFFQSxJQUFNVSxXQUFXLEdBQUdKLFVBQVUsQ0FBQ0ssTUFBTSxDQUFDLFVBQUNDLElBQUksRUFBRUMsRUFBRTtNQUFBLE9BQUtBLEVBQUUsQ0FBQ0QsSUFBSSxDQUFDO0lBQUEsR0FBRXJGLE9BQU8sQ0FBQztJQUN0RSxPQUFPbUYsV0FBZ0Q7RUFDekQsQ0FBQyxFQUFFLENBQ0RuRixPQUFPLEVBQ1A4RSxPQUFPLEVBQ1ByRixVQUFVLEVBQ1ZpQyxZQUFZLEVBQ1poQyxxQkFBcUIsRUFDckJpQyxxQkFBcUIsRUFDckJDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxlQUFlLEVBQ2ZuQyxhQUFhLEVBQ2JvQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixFQUNoQmdCLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkosSUFBSSxFQUNKbkQsU0FBUyxDQUNWLENBQUM7QUFDSiIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sLCBTZWxlY3Rpb25IZWFkZXJDb250cm9sIH0gZnJvbSAnLi4vZmVhdHVyZXMvU2VsZWN0aW9uQ29sdW1uJztcbmltcG9ydCB7IEV4cGFuZFRyaWdnZXIgfSBmcm9tICcuLi9mZWF0dXJlcy9FeHBhbmRUcmlnZ2VyJztcbmltcG9ydCB7IEhlYWRlckNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvSGVhZGVyQ2VsbCc7XG5pbXBvcnQgeyBCb2R5Q2VsbCB9IGZyb20gJy4uL3JlbmRlcmVycy9Cb2R5Q2VsbCc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5mdW5jdGlvbiBpc0NvbHVtbkdyb3VwKGNvbCkge1xuICAgIHJldHVybiAnY2hpbGRyZW4nIGluIGNvbCAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbik7XG59XG5mdW5jdGlvbiBtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgZXhwYW5kYWJsZSwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCB0cmlnZ2VyRXhwYW5kLCBnZXRSb3dLZXkgfSA9IGNvbmZpZztcbiAgICBjb25zdCBjdXN0b21FeHBhbmRJY29uID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZEljb247XG4gICAgY29uc3Qgcm93RXhwYW5kYWJsZSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnX19leHBhbmRfXycsXG4gICAgICAgICAgICAgICAgLy8gSG9ub3IgYGV4cGFuZGFibGUuY29sdW1uV2lkdGhgIC8gYGNvbHVtblRpdGxlYCAvIGBmaXhlZGA7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBhIDQ4cHggdW5sYWJlbGVkIGNvbHVtbi5cbiAgICAgICAgICAgICAgICB3aWR0aDogKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmNvbHVtbldpZHRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiA0OCxcbiAgICAgICAgICAgICAgICB0aXRsZTogZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmNvbHVtblRpdGxlLFxuICAgICAgICAgICAgICAgIGZpeGVkOiAoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkKSA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICA/ICdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICA6IChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQpID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkLFxuICAgICAgICAgICAgICAgIHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSG9ub3IgYHJvd0V4cGFuZGFibGVgOiB3aGVuIHRoZSBwcmVkaWNhdGUgZGVuaWVzIGEgcmVjb3JkLCByZW5kZXIgbm9cbiAgICAgICAgICAgICAgICAgICAgLy8gY2hldnJvbiBhdCBhbGwgKHRoZSByb3cgaXMgbm9uLWV4cGFuZGFibGUpLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5FeHBhbmQgPSByb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5FeHBhbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBhbmRlZCA9IG1lcmdlZEV4cGFuZGVkUm93S2V5cy5pbmNsdWRlcyhyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VzdG9tRXhwYW5kSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUV4cGFuZEljb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeENsczogVEFCTEVfREVGQVVMVF9QUkVGSVgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmQ6IChyZWMsIGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV4cGFuZChnZXRSb3dLZXkocmVjLCBpbmRleCksIHJlYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChFeHBhbmRUcmlnZ2VyLCB7IGV4cGFuZGVkOiBleHBhbmRlZCwgb25Ub2dnbGU6ICgpID0+IHRyaWdnZXJFeHBhbmQocmVjb3JkS2V5LCByZWNvcmQpIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uLCBtZXJnZWRTZWxlY3RlZFJvd0tleXMsIGNoZWNrYm94UHJvcHNNYXAsIGlzQWxsU2VsZWN0ZWQsIGlzSW5kZXRlcm1pbmF0ZSwgdHJpZ2dlclNlbGVjdGlvbiwgdHJpZ2dlclNlbGVjdEFsbCwgZ2V0Um93S2V5LCB9ID0gY29uZmlnO1xuICAgIGlmICghcm93U2VsZWN0aW9uKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gKF9hID0gcm93U2VsZWN0aW9uLnR5cGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdjaGVja2JveCc7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGtleTogJ19fc2VsZWN0aW9uX18nLCB3aWR0aDogKF9hID0gcm93U2VsZWN0aW9uLmNvbHVtbldpZHRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiA0OCwgZml4ZWQ6IHJvd1NlbGVjdGlvbi5maXhlZCA/ICdsZWZ0JyA6IHVuZGVmaW5lZCB9LCAoc2VsZWN0aW9uVHlwZSA9PT0gJ2NoZWNrYm94J1xuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJIZWFkZXI6ICgpID0+IChfanN4KFNlbGVjdGlvbkhlYWRlckNvbnRyb2wsIHsgY2hlY2tlZDogaXNBbGxTZWxlY3RlZCwgaW5kZXRlcm1pbmF0ZTogaXNJbmRldGVybWluYXRlLCBvbkNoYW5nZTogdHJpZ2dlclNlbGVjdEFsbCB9KSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge30pKSwgeyByZW5kZXI6IChfLCByZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93UHJvcHMgPSBjaGVja2JveFByb3BzTWFwLmdldChyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goU2VsZWN0aW9uQ29udHJvbCwgeyB0eXBlOiBzZWxlY3Rpb25UeXBlLCBjaGVja2VkOiBtZXJnZWRTZWxlY3RlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KSwgcm93UHJvcHM6IHJvd1Byb3BzLCBvbkNoYW5nZTogKCkgPT4gdHJpZ2dlclNlbGVjdGlvbihyZWNvcmRLZXkpIH0pKTtcbiAgICAgICAgICAgICAgICB9IH0pLFxuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgXTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYXJpYVNvcnRGb3Iob3JkZXIpIHtcbiAgICBpZiAob3JkZXIgPT09ICdhc2NlbmQnKVxuICAgICAgICByZXR1cm4gJ2FzY2VuZGluZyc7XG4gICAgaWYgKG9yZGVyID09PSAnZGVzY2VuZCcpXG4gICAgICAgIHJldHVybiAnZGVzY2VuZGluZyc7XG4gICAgcmV0dXJuICdub25lJztcbn1cbi8vIFN0YWJsZSBlbXB0eS1maWx0ZXIgcmVmZXJlbmNlLiBXaXRob3V0IHRoaXMsIGBmaWx0ZXJzW2tleV0gPz8gW11gIGNyZWF0ZXMgYVxuLy8gZnJlc2ggYFtdYCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIHRocmFzaGVzIGBGaWx0ZXJUcmlnZ2VyYCdzXG4vLyBgdXNlRWZmZWN0KFtzZWxlY3RlZEtleXNdKWAgYW5kIGNhdXNlcyBhbiBpbmZpbml0ZSBzZXRTdGF0ZSBsb29wIGFmdGVyXG4vLyBjb25maXJtIC8gcmVzZXQuXG5jb25zdCBFTVBUWV9GSUxURVJfVkFMVUUgPSBbXTtcbmZ1bmN0aW9uIG1ha2VIZWFkZXJUcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgY29uc3QgeyBzaXplLCBzb3J0ZXIsIHNldFNvcnRlciwgZmlsdGVycywgc2V0RmlsdGVycyB9ID0gY29uZmlnO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2x1bW4pKVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgY29uc3QgaXNTb3J0YWJsZSA9IEJvb2xlYW4oY29sdW1uLnNvcnRlcik7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU9yZGVyID0gc29ydGVyLmNvbHVtbktleSA9PT0gY29sdW1uLmtleSA/IChfYSA9IHNvcnRlci5vcmRlcikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGNvbHVtbktleSA9IGNvbHVtbi5rZXkgIT0gbnVsbCA/IFN0cmluZyhjb2x1bW4ua2V5KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSBjb2x1bW5LZXkgIT0gbnVsbCA/ICgoX2IgPSBmaWx0ZXJzW2NvbHVtbktleV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IEVNUFRZX0ZJTFRFUl9WQUxVRSkgOiBFTVBUWV9GSUxURVJfVkFMVUU7XG4gICAgICAgIC8vIENvbXBvc2Ugb25IZWFkZXJDZWxsIHNvIHdlIGRvbid0IGNsb2JiZXIgdXNlci1wcm92aWRlZCBhdHRyaWJ1dGVzLlxuICAgICAgICBjb25zdCB1c2VyT25IZWFkZXJDZWxsID0gY29sdW1uLm9uSGVhZGVyQ2VsbDtcbiAgICAgICAgY29uc3Qgb25IZWFkZXJDZWxsID0gKGNvbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJBdHRycyA9IChfYSA9IHVzZXJPbkhlYWRlckNlbGwgPT09IG51bGwgfHwgdXNlck9uSGVhZGVyQ2VsbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXNlck9uSGVhZGVyQ2VsbChjb2wsIGluZGV4KSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge307XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB1c2VyQXR0cnMpLCAoaXNTb3J0YWJsZSA/IHsgJ2FyaWEtc29ydCc6IGFyaWFTb3J0Rm9yKGFjdGl2ZU9yZGVyKSB9IDogbnVsbCkpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvbkZpbHRlckNoYW5nZSA9IChuZXh0KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uS2V5ID09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2V0RmlsdGVycygoY3VycmVudCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3VycmVudCksIHsgW2NvbHVtbktleV06IG5leHQubGVuZ3RoID8gbmV4dCA6IG51bGwgfSkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29sdW1uKSwgeyBvbkhlYWRlckNlbGwsIHRpdGxlOiBjb2x1bW4ucmVuZGVySGVhZGVyXG4gICAgICAgICAgICAgICAgPyBjb2x1bW4ucmVuZGVySGVhZGVyKHsgY29sdW1uIH0pXG4gICAgICAgICAgICAgICAgOiAoX2pzeChIZWFkZXJDZWxsLCB7IGNvbHVtbjogY29sdW1uLCBzaXplOiBzaXplLCBzb3J0T3JkZXI6IGFjdGl2ZU9yZGVyLCBvblNvcnRDbGljazogKCkgPT4gc2V0U29ydGVyKChjdXJyZW50U29ydGVyKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGN1cnJlbnRTb3J0ZXIuY29sdW1uS2V5ICE9PSBjb2x1bW4ua2V5IHx8IGN1cnJlbnRTb3J0ZXIub3JkZXIgPT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdhc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjdXJyZW50U29ydGVyLm9yZGVyID09PSAnYXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdkZXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pKSwgZmlsdGVyU2VsZWN0ZWQ6IGZpbHRlclNlbGVjdGVkLCBvbkZpbHRlckNoYW5nZTogb25GaWx0ZXJDaGFuZ2UgfSkpIH0pO1xuICAgIH0pO1xufVxuY29uc3QgU1BBQ0VSX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLXNwYWNlcic7XG5mdW5jdGlvbiBtYWtlU3BhY2VyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gW1xuICAgICAgICB7IGtleTogJ19fc3BhY2VyX3N0YXJ0X18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfZW5kX18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgXTtcbn1cbmZ1bmN0aW9uIG1ha2VSZW5kZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IHJlbmRlcjogKHZhbHVlLCByZWNvcmQsIGluZGV4KSA9PiBCb2R5Q2VsbCh7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIH0pIH0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIGNvbHVtbnMgcmVhZHkgdG8gYmUgcGFzc2VkIHRvIHRoZSB0YWJsZSBrZXJuZWwuXG4gKlxuICogVGhlIHJldHVybmVkIHNoYXBlIElTIHN0cnVjdHVyYWxseSB0aGUga2VybmVsJ3MgYENvbHVtbnNUeXBlPFQ+YDpcbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGByZW5kZXJgIGlzIHJlcGxhY2VkIGJ5IGBtYWtlUmVuZGVyVHJhbnNmb3JtYCwgd2hpY2hcbiAqICAgICBhbHdheXMgcmV0dXJucyBhIGBSZWFjdE5vZGVgIChCb2R5Q2VsbCBoYW5kbGVzIGBUYWJsZUNlbGxDb250ZW50VmFsdWVgIC9cbiAqICAgICBgVGFibGVSZW5kZXJlZENlbGxgIGV4dHJhcyBhbmQgZW1pdHMgUmVhY3ROb2RlL1JlbmRlcmVkQ2VsbCkuXG4gKiAgIC0gRXZlcnkgbGVhZiBjb2x1bW4ncyBgdGl0bGVgIGlzIGVpdGhlciBhIFJlYWN0Tm9kZSBvciByZXBsYWNlZCBieVxuICogICAgIGA8SGVhZGVyQ2VsbCAvPmAuXG4gKiBCZWNhdXNlIFRTIGNhbid0IHRyYWNrIHRoYXQgdGhvc2UgcmVwbGFjZW1lbnRzIGhhdmUgaGFwcGVuZWQgYWNyb3NzIHRoZVxuICogYHRyYW5zZm9ybXMucmVkdWNlYCBjaGFpbiwgYSBzaW5nbGUgaW50ZXJuYWwgY2FzdCBpcyByZXF1aXJlZCDigJQgY2FsbCBzaXRlcyBub1xuICogbG9uZ2VyIG5lZWQgdGhlaXIgb3duIGBhcyB1bmtub3duIGFzIEludGVybmFsQ29sdW1uc1R5cGU8VD5gIGNhc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUYWJsZUNvbHVtbnMoY29uZmlnKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCB2YXJpYW50LCBleHBhbmRhYmxlLCByb3dTZWxlY3Rpb24sIG1lcmdlZEV4cGFuZGVkUm93S2V5cywgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJFeHBhbmQsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzLCBzaXplLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1zID0gW107XG4gICAgICAgIGlmIChleHBhbmRhYmxlICYmIGV4cGFuZGFibGUuc2hvd0V4cGFuZENvbHVtbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXMucHVzaChtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblRyYW5zZm9ybSA9IHJvd1NlbGVjdGlvbiA/IG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSA6IG51bGw7XG4gICAgICAgIGlmIChzZWxlY3Rpb25UcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybXMucHVzaChzZWxlY3Rpb25UcmFuc2Zvcm0pO1xuICAgICAgICB9XG4gICAgICAgIHRyYW5zZm9ybXMucHVzaChtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykpO1xuICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZVJlbmRlclRyYW5zZm9ybSgpKTtcbiAgICAgICAgaWYgKHZhcmlhbnQgPT09ICdzdHJva2UnKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2gobWFrZVNwYWNlclRyYW5zZm9ybSgpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybXMucmVkdWNlKChjb2xzLCBmbikgPT4gZm4oY29scyksIGNvbHVtbnMpO1xuICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XG4gICAgfSwgW1xuICAgICAgICBjb2x1bW5zLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBleHBhbmRhYmxlLFxuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLFxuICAgICAgICBjaGVja2JveFByb3BzTWFwLFxuICAgICAgICBpc0FsbFNlbGVjdGVkLFxuICAgICAgICBpc0luZGV0ZXJtaW5hdGUsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIHRyaWdnZXJTZWxlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJTZWxlY3RBbGwsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgc2V0U29ydGVyLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBzZXRGaWx0ZXJzLFxuICAgICAgICBzaXplLFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgXSk7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,7 +1,9 @@
1
1
  import type { Key } from 'react';
2
2
  import type { TableExpandableConfig, TableRecord } from '../interface';
3
- export declare const useTableExpand: <T extends TableRecord = TableRecord>({ expandable, }: {
3
+ export declare const useTableExpand: <T extends TableRecord = TableRecord>({ expandable, dataSource, getRowKey, }: {
4
4
  expandable?: TableExpandableConfig<T>;
5
+ dataSource?: readonly T[];
6
+ getRowKey?: (record: T, index: number) => Key;
5
7
  }) => {
6
8
  mergedExpandedRowKeys: Key[];
7
9
  triggerExpand: (recordKey: Key, record: T) => void;
@@ -1,15 +1,39 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import { useControlledState, useMemoizedFn } from '@1money/hooks';
4
4
  export var useTableExpand = function useTableExpand(_ref) {
5
- var expandable = _ref.expandable;
6
- var _a;
7
- var _useControlledState = useControlledState((_a = expandable === null || expandable === void 0 ? void 0 : expandable.defaultExpandedRowKeys) !== null && _a !== void 0 ? _a : [], expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowKeys),
5
+ var expandable = _ref.expandable,
6
+ dataSource = _ref.dataSource,
7
+ getRowKey = _ref.getRowKey;
8
+ // Match table: `defaultExpandAllRows` seeds initial expansion with every
9
+ // row whose key is expandable. `rowExpandable` (if present) still gates this.
10
+ var computeDefaultKeys = function computeDefaultKeys() {
11
+ if (expandable === null || expandable === void 0 ? void 0 : expandable.defaultExpandedRowKeys) return _toConsumableArray(expandable.defaultExpandedRowKeys);
12
+ if (!(expandable === null || expandable === void 0 ? void 0 : expandable.defaultExpandAllRows) || !dataSource || !getRowKey) return [];
13
+ var rowExpandable = expandable.rowExpandable;
14
+ return dataSource.map(function (record, index) {
15
+ return {
16
+ record: record,
17
+ key: getRowKey(record, index)
18
+ };
19
+ }).filter(function (_ref2) {
20
+ var record = _ref2.record;
21
+ return rowExpandable ? rowExpandable(record) : true;
22
+ }).map(function (_ref3) {
23
+ var key = _ref3.key;
24
+ return key;
25
+ });
26
+ };
27
+ var _useControlledState = useControlledState(computeDefaultKeys(), expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowKeys),
8
28
  _useControlledState2 = _slicedToArray(_useControlledState, 2),
9
29
  mergedExpandedRowKeys = _useControlledState2[0],
10
30
  setMergedExpandedRowKeys = _useControlledState2[1];
11
31
  var triggerExpand = useMemoizedFn(function (recordKey, record) {
12
32
  var _a, _b;
33
+ // Honor `rowExpandable`: rows the predicate denies cannot be toggled. This
34
+ // also blocks programmatic callers (e.g. expandRowByClick on the kernel)
35
+ // from bypassing the predicate.
36
+ if ((expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable) && !expandable.rowExpandable(record)) return;
13
37
  var expanded = mergedExpandedRowKeys.includes(recordKey);
14
38
  var nextKeys = expanded ? mergedExpandedRowKeys.filter(function (key) {
15
39
  return key !== recordKey;
@@ -22,6 +46,7 @@ export var useTableExpand = function useTableExpand(_ref) {
22
46
  // and delegates to user callbacks
23
47
  var onKernelExpand = useMemoizedFn(function (expanded, record, recordKey) {
24
48
  var _a, _b;
49
+ if ((expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable) && !expandable.rowExpandable(record)) return;
25
50
  var nextKeys = expanded ? [].concat(_toConsumableArray(mergedExpandedRowKeys), [recordKey]) : mergedExpandedRowKeys.filter(function (key) {
26
51
  return key !== recordKey;
27
52
  });
@@ -35,4 +60,4 @@ export var useTableExpand = function useTableExpand(_ref) {
35
60
  onKernelExpand: onKernelExpand
36
61
  };
37
62
  };
38
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwidXNlVGFibGVFeHBhbmQiLCJfcmVmIiwiZXhwYW5kYWJsZSIsIl9hIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsImRlZmF1bHRFeHBhbmRlZFJvd0tleXMiLCJleHBhbmRlZFJvd0tleXMiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwic2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsInJlY29yZEtleSIsInJlY29yZCIsIl9iIiwiZXhwYW5kZWQiLCJpbmNsdWRlcyIsIm5leHRLZXlzIiwiZmlsdGVyIiwia2V5IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwib25FeHBhbmQiLCJjYWxsIiwib25FeHBhbmRlZFJvd3NDaGFuZ2UiLCJvbktlcm5lbEV4cGFuZCJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxTQUFTQSxrQkFBa0IsRUFBRUMsYUFBYSxRQUFRLGVBQWU7QUFHakUsT0FBTyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUFDLElBQUEsRUFJdEI7RUFBQSxJQUhIQyxVQUFVLEdBQUFELElBQUEsQ0FBVkMsVUFBVTtFQ0hSLElBQUlDLEVBQUU7RURPUixJQUFBQyxtQkFBQSxHQUEwRE4sa0JBQWtCLENBQzFFLENBQUFLLEVBQUEsR0FBQUQsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVHLHNCQUFzQixNQUFBLElBQUEsSUFBQUYsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdB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b25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVFeHBhbmQuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUNvbnRyb2xsZWRTdGF0ZSwgdXNlTWVtb2l6ZWRGbiB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuZXhwb3J0IGNvbnN0IHVzZVRhYmxlRXhwYW5kID0gKHsgZXhwYW5kYWJsZSwgfSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBbbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCBzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXNdID0gdXNlQ29udHJvbGxlZFN0YXRlKChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSwgZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93S2V5cyk7XG4gICAgY29uc3QgdHJpZ2dlckV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSwgcmVjb3JkKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IGV4cGFuZGVkID0gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmluY2x1ZGVzKHJlY29yZEtleSk7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gZXhwYW5kZWRcbiAgICAgICAgICAgID8gbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpXG4gICAgICAgICAgICA6IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV07XG4gICAgICAgIHNldE1lcmdlZEV4cGFuZGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZXhwYW5kYWJsZSwgIWV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICAvLyBDYWxsZWQgYnkgdGhlIGtlcm5lbCdzIG9uRXhwYW5kIChlLmcuIGV4cGFuZFJvd0J5Q2xpY2spIOKAlCB1cGRhdGVzIHN0YXRlXG4gICAgLy8gYW5kIGRlbGVnYXRlcyB0byB1c2VyIGNhbGxiYWNrc1xuICAgIGNvbnN0IG9uS2VybmVsRXhwYW5kID0gdXNlTWVtb2l6ZWRGbigoZXhwYW5kZWQsIHJlY29yZCwgcmVjb3JkS2V5KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRLZXlzID0gZXhwYW5kZWRcbiAgICAgICAgICAgID8gWy4uLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgcmVjb3JkS2V5XVxuICAgICAgICAgICAgOiBtZXJnZWRFeHBhbmRlZFJvd0tleXMuZmlsdGVyKGtleSA9PiBrZXkgIT09IHJlY29yZEtleSk7XG4gICAgICAgIHNldE1lcmdlZEV4cGFuZGVkUm93S2V5cyhuZXh0S2V5cyk7XG4gICAgICAgIChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZXhwYW5kYWJsZSwgZXhwYW5kZWQsIHJlY29yZCk7XG4gICAgICAgIChfYiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZGVkUm93c0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoZXhwYW5kYWJsZSwgbmV4dEtleXMpO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgdHJpZ2dlckV4cGFuZCxcbiAgICAgICAgb25LZXJuZWxFeHBhbmQsXG4gICAgfTtcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
63
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC50cyIsImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUV4cGFuZC5qcyJdLCJuYW1lcyI6WyJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VNZW1vaXplZEZuIiwidXNlVGFibGVFeHBhbmQiLCJfcmVmIiwiZXhwYW5kYWJsZSIsImRhdGFTb3VyY2UiLCJnZXRSb3dLZXkiLCJjb21wdXRlRGVmYXVsdEtleXMiLCJkZWZhdWx0RXhwYW5kZWRSb3dLZXlzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZGVmYXVsdEV4cGFuZEFsbFJvd3MiLCJyb3dFeHBhbmRhYmxlIiwibWFwIiwicmVjb3JkIiwiaW5kZXgiLCJrZXkiLCJmaWx0ZXIiLCJfcmVmMiIsIl9yZWYzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsImV4cGFuZGVkUm93S2V5cyIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwicmVjb3JkS2V5IiwiX2EiLCJfYiIsImV4cGFuZGVkIiwiaW5jbHVkZXMiLCJuZXh0S2V5cyIsImNvbmNhdCIsIm9uRXhwYW5kIiwiY2FsbCIsIm9uRXhwYW5kZWRSb3dzQ2hhbmdlIiwib25LZXJuZWxFeHBhbmQiXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0Esa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxlQUFlO0FBR2pFLE9BQU8sSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBQyxJQUFBLEVBUXRCO0VBQUEsSUFQSEMsVUFBVSxHQUFBRCxJQUFBLENBQVZDLFVBQVU7SUFDVkMsVUFBVSxHQUFBRixJQUFBLENBQVZFLFVBQVU7SUFDVkMsU0FBUyxHQUFBSCxJQUFBLENBQVRHLFNBQVM7RUFNVDtFQUNBO0VBQ0EsSUFB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LElBQUFQLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFBTSxJQUFBLENBQUE5QixVQUFBLEVBQUcyQixRQUFRLENBQUM7RUFDOUMsQ0FBQyxDQUFDO0VBRUYsT0FBTztJQUNMUixxQkFBcUIsRUFBckJBLHFCQUFxQjtJQUNyQkUsYUFBYSxFQUFiQSxhQUFhO0lBQ2JXLGNBQWMsRUFBZEE7RUNmQSxDRGdCRDtBQUNILENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlRXhwYW5kLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZU1lbW9pemVkRm4gfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmV4cG9ydCBjb25zdCB1c2VUYWJsZUV4cGFuZCA9ICh7IGV4cGFuZGFibGUsIGRhdGFTb3VyY2UsIGdldFJvd0tleSwgfSkgPT4ge1xuICAgIC8vIE1hdGNoIHRhYmxlOiBgZGVmYXVsdEV4cGFuZEFsbFJvd3NgIHNlZWRzIGluaXRpYWwgZXhwYW5zaW9uIHdpdGggZXZlcnlcbiAgICAvLyByb3cgd2hvc2Uga2V5IGlzIGV4cGFuZGFibGUuIGByb3dFeHBhbmRhYmxlYCAoaWYgcHJlc2VudCkgc3RpbGwgZ2F0ZXMgdGhpcy5cbiAgICBjb25zdCBjb21wdXRlRGVmYXVsdEtleXMgPSAoKSA9PiB7XG4gICAgICAgIGlmIChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZGVmYXVsdEV4cGFuZGVkUm93S2V5cylcbiAgICAgICAgICAgIHJldHVybiBbLi4uZXhwYW5kYWJsZS5kZWZhdWx0RXhwYW5kZWRSb3dLZXlzXTtcbiAgICAgICAgaWYgKCEoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmRlZmF1bHRFeHBhbmRBbGxSb3dzKSB8fCAhZGF0YVNvdXJjZSB8fCAhZ2V0Um93S2V5KVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZVxuICAgICAgICAgICAgLm1hcCgocmVjb3JkLCBpbmRleCkgPT4gKHsgcmVjb3JkLCBrZXk6IGdldFJvd0tleShyZWNvcmQsIGluZGV4KSB9KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgcmVjb3JkIH0pID0+IChyb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZSkpXG4gICAgICAgICAgICAubWFwKCh7IGtleSB9KSA9PiBrZXkpO1xuICAgIH07XG4gICAgY29uc3QgW21lcmdlZEV4cGFuZGVkUm93S2V5cywgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShjb21wdXRlRGVmYXVsdEtleXMoKSwgZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93S2V5cyk7XG4gICAgY29uc3QgdHJpZ2dlckV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKHJlY29yZEtleSwgcmVjb3JkKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIC8vIEhvbm9yIGByb3dFeHBhbmRhYmxlYDogcm93cyB0aGUgcHJlZGljYXRlIGRlbmllcyBjYW5ub3QgYmUgdG9nZ2xlZC4gVGhpc1xuICAgICAgICAvLyBhbHNvIGJsb2NrcyBwcm9ncmFtbWF0aWMgY2FsbGVycyAoZS5nLiBleHBhbmRSb3dCeUNsaWNrIG9uIHRoZSBrZXJuZWwpXG4gICAgICAgIC8vIGZyb20gYnlwYXNzaW5nIHRoZSBwcmVkaWNhdGUuXG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUpICYmICFleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUocmVjb3JkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBtZXJnZWRFeHBhbmRlZFJvd0tleXMuaW5jbHVkZXMocmVjb3JkS2V5KTtcbiAgICAgICAgY29uc3QgbmV4dEtleXMgPSBleHBhbmRlZFxuICAgICAgICAgICAgPyBtZXJnZWRFeHBhbmRlZFJvd0tleXMuZmlsdGVyKGtleSA9PiBrZXkgIT09IHJlY29yZEtleSlcbiAgICAgICAgICAgIDogWy4uLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgcmVjb3JkS2V5XTtcbiAgICAgICAgc2V0TWVyZ2VkRXhwYW5kZWRSb3dLZXlzKG5leHRLZXlzKTtcbiAgICAgICAgKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLm9uRXhwYW5kKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCAhZXhwYW5kZWQsIHJlY29yZCk7XG4gICAgICAgIChfYiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5vbkV4cGFuZGVkUm93c0NoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoZXhwYW5kYWJsZSwgbmV4dEtleXMpO1xuICAgIH0pO1xuICAgIC8vIENhbGxlZCBieSB0aGUga2VybmVsJ3Mgb25FeHBhbmQgKGUuZy4gZXhwYW5kUm93QnlDbGljaykg4oCUIHVwZGF0ZXMgc3RhdGVcbiAgICAvLyBhbmQgZGVsZWdhdGVzIHRvIHVzZXIgY2FsbGJhY2tzXG4gICAgY29uc3Qgb25LZXJuZWxFeHBhbmQgPSB1c2VNZW1vaXplZEZuKChleHBhbmRlZCwgcmVjb3JkLCByZWNvcmRLZXkpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZSkgJiYgIWV4cGFuZGFibGUucm93RXhwYW5kYWJsZShyZWNvcmQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXh0S2V5cyA9IGV4cGFuZGVkXG4gICAgICAgICAgICA/IFsuLi5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHJlY29yZEtleV1cbiAgICAgICAgICAgIDogbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLmZpbHRlcihrZXkgPT4ga2V5ICE9PSByZWNvcmRLZXkpO1xuICAgICAgICBzZXRNZXJnZWRFeHBhbmRlZFJvd0tleXMobmV4dEtleXMpO1xuICAgICAgICAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGV4cGFuZGFibGUsIGV4cGFuZGVkLCByZWNvcmQpO1xuICAgICAgICAoX2IgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUub25FeHBhbmRlZFJvd3NDaGFuZ2UpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGV4cGFuZGFibGUsIG5leHRLZXlzKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIG9uS2VybmVsRXhwYW5kLFxuICAgIH07XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -28,6 +28,7 @@ import { useTableColumns } from './useTableColumns';
28
28
  * div (instead of being spread untyped into the kernel via `rest as object`).
29
29
  */
30
30
  export var useTableSetup = function useTableSetup(props) {
31
+ var _a;
31
32
  var _props$className = props.className,
32
33
  className = _props$className === void 0 ? '' : _props$className,
33
34
  _props$prefixCls = props.prefixCls,
@@ -79,7 +80,9 @@ export var useTableSetup = function useTableSetup(props) {
79
80
  getRowKey: getRowKey
80
81
  });
81
82
  var expand = useTableExpand({
82
- expandable: expandable
83
+ expandable: expandable,
84
+ dataSource: dataSource,
85
+ getRowKey: getRowKey
83
86
  });
84
87
  var renderedColumns = useTableColumns({
85
88
  columns: columns,
@@ -101,15 +104,32 @@ export var useTableSetup = function useTableSetup(props) {
101
104
  setFilters: pipeline.setFilters,
102
105
  getRowKey: getRowKey
103
106
  });
107
+ // Dev-only warning: mixing row-expansion with tree-data (childrenColumnName)
108
+ // produces two chevrons per row (the leftmost __expand__ column from the wrapper
109
+ // plus the kernel's per-indent nest expand). rc-table / antd have the same gap;
110
+ // pick one mode at a time.
111
+ // eslint-disable-next-line no-undef
112
+ if (typeof process !== 'undefined' && ((_a = process.env) === null || _a === void 0 ? void 0 : _a.NODE_ENV) !== 'production') {
113
+ if ((expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowRender) && childrenColumnName !== undefined) {
114
+ console.warn('[components-ui Table] Combining `expandable.expandedRowRender` with `childrenColumnName` is not supported — the leftmost expand column will render alongside the nested tree expander. Use one mode at a time.');
115
+ }
116
+ }
104
117
  var wrappedExpandedRowRender = useMemoizedFn(function (record, index, indent, expanded) {
105
118
  var _a;
119
+ // Honor `rowExpandable`: even if a non-expandable row's key sneaks into
120
+ // `expandedRowKeys`, refuse to render its expansion content.
121
+ if ((expandable === null || expandable === void 0 ? void 0 : expandable.rowExpandable) && !expandable.rowExpandable(record)) return null;
106
122
  return _jsx(ExpandedRowContainer, {
107
123
  children: (_a = expandable === null || expandable === void 0 ? void 0 : expandable.expandedRowRender) === null || _a === void 0 ? void 0 : _a.call(expandable, record, index, indent, expanded)
108
124
  });
109
125
  });
110
126
  // Wire kernel's onExpand (triggered by expandRowByClick) to our state.
111
127
  var kernelOnExpand = useMemoizedFn(function (expanded, record) {
112
- var recordKey = getRowKey(record, dataSource.indexOf(record));
128
+ // The kernel passes a record from `currentDataSource` (post sort/filter/paginate).
129
+ // Looking it up against the raw `dataSource` returns -1 when the consumer
130
+ // recreates the array each render, or a positionally wrong index after sort.
131
+ // Use `currentDataSource` so the index matches what the kernel actually sees.
132
+ var recordKey = getRowKey(record, pipeline.currentDataSource.indexOf(record));
113
133
  expand.onKernelExpand(expanded, record, recordKey);
114
134
  });
115
135
  var mergedExpandable = useMemo(function () {
@@ -172,4 +192,4 @@ export var useTableSetup = function useTableSetup(props) {
172
192
  paginationNode: paginationNode
173
193
  };
174
194
  };
175
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNldHVwLmpzIiwiY29tcG9uZW50cy9UYWJsZS9zcmMvY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlU2V0dXAudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJQYWdpbmF0aW9uIiwiRXhwYW5kZWRSb3dDb250YWluZXIiLCJUYWJsZUVtcHR5U3RhdGUiLCJUQUJMRV9CTE9DSyIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiVEFCTEVfREVGQVVMVF9TSVpFIiwiVEFCTEVfREVGQVVMVF9WQVJJQU5UIiwidXNlVGFibGVEYXRhUGlwZWxpbmUiLCJ1c2VUYWJsZVNlbGVjdGlvbiIsInVzZVRhYmxlRXhwYW5kIiwidXNlVGFibGVDb2x1bW5zIiwidXNlVGFibGVTZXR1cCIsInByb3BzIiwiX3Byb3BzJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJfcHJvcHMkdmFyaWFudCIsInZhcmlhbnQiLCJjb2x1bW5zIiwiZGF0YVNvdXJjZSIsInJvd0tleSIsImVtcHR5IiwiYm9yZGVyZWQiLCJfc2Nyb2xsIiwic2Nyb2xsIiwic3RpY2t5IiwicGFnaW5hdGlvbiIsInJvd1NlbGVjdGlvbiIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsIm9uQ2hhbmdlIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwiaW5kZW50U2l6ZSIsImV4cGFuZGFibGUiLCJvblJvdyIsInJvd0NsYXNzTmFtZSIsInN1bW1hcnkiLCJzaG93SGVhZGVyIiwidGFibGVMYXlvdXQiLCJjb21wb25lbnRzIiwiZGlyZWN0aW9uIiwicm93SG92ZXJhYmxlIiwicmVzdCIsImNscyIsImdldFJvd0tleSIsInJlY29yZCIsImluZGV4IiwiX2EiLCJwaXBlbGluZSIsInNlbGVjdGlvbiIsImN1cnJlbnREYXRhU291cmNlIiwiZXhwYW5kIiwicmVuZGVyZWRDb2x1bW5zIiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsIm1lcmdlZFNlbGVjdGVkUm93S2V5cyIsImNoZWNrYm94UHJvcHNNYXAiLCJpc0FsbFNlbGVjdGVkIiwiaXNJbmRldGVybWluYXRlIiwidHJpZ2dlclNlbGVjdGlvbiIsInRyaWdnZXJTZWxlY3RBbGwiLCJzb3J0ZXIiLCJzZXRTb3J0ZXIiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsIndyYXBwZWRFeHBhbmRlZFJvd1JlbmRlciIsImluZGVudCIsImV4cGFuZGVkIiwiY2hpbGRyZW4iLCJleHBhbmRlZFJvd1JlbmRlciIsImtlcm5lbE9uRXhwYW5kIiwicmVjb3JkS2V5Iiwib25LZXJuZWxFeHBhbmQiLCJtZXJnZWRFeHBhbmRhYmxlIiwiYXNzaWduIiwiZXhwYW5kZWRSb3dLZXlzIiwidW5kZWZpbmVkIiwic2hvd0V4cGFuZENvbHVtbiIsIm9uRXhwYW5kIiwicmVzb2x2ZWRQYWdpbmF0aW9uIiwiY3VycmVudCIsInBhZ2VTaXplIiwicGFnaW5hdGlvbk5vZGUiLCJjb25jYXQiLCJ0b3RhbCIsIm5leHRQYWdlIiwibmV4dFBhZ2VTaXplIiwic2V0UGFnaW5hdGlvbiIsImN1cnJlbnRQYWdpbmF0aW9uIiwid3JhcHBlckNsYXNzTmFtZSIsInRhYmxlQ2xhc3NOYW1lIiwiZW1wdHlUZXh0Iiwid3JhcHBlckh0bWxQcm9wcyIsImZvcndhcmRlZEtlcm5lbFByb3BzIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFL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RUFBVEEsU0FBUztJQUNUNEUsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJDLGNBQWMsRUFBZEEsY0FBYztJQUNkN0QsT0FBTyxFQUFQQSxPQUFPO0lBQ1B1QixlQUFlLEVBQWZBLGVBQWU7SUFDZkYsaUJBQWlCLEVBQUVGLFFBQVEsQ0FBQ0UsaUJBQWlCO0lBQzdDdUIsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJrQixTQUFTLEVBQVRBLFNBQVM7SUFDVEMsZ0JBQWdCLEVBQUVsRCxJQUFJO0lBQ3RCbUQsb0JBQW9CLEVBQUU7TUFDcEJ6RSxNQUFNLEVBQUVBLE1BQXVDO01BQy9DVyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtNQUNsQkMsVUFBVSxFQUFWQSxVQUFVO01BQ1ZFLEtBQUssRUFBTEEsS0FBSztNQUNMQyxZQUFZLEVBQVpBLFlBQVk7TUFDWkMsT0FBTyxFQUFQQSxPQUFPO01BQ1BDLFVBQVUsRUFBVkEsVUFBVTtNQUNWQyxXQUFXLEVBQVhBLFdBQVc7TUFDWEMsVUFBVSxFQUFWQSxVQUFVO01BQ1ZDLFNBQVMsRUFBVEEsU0FBUztNQUNUQyxZQUFZLEVBQVpBLFlBQVk7TUFDWmhCLE1BQU0sRUFBTkE7SURqSEUsQ0NrSEg7SUFDRHlELGNBQWMsRUFBZEE7RURqSEEsQ0NrSEQ7QUFDSCxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNldHVwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgY2xhc3NuYW1lcywgeyBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vUGFnaW5hdGlvbic7XG5pbXBvcnQgeyBFeHBhbmRlZFJvd0NvbnRhaW5lciB9IGZyb20gJy4uL3JlbmRlcmVycy9FeHBhbmRlZFJvd0NvbnRhaW5lcic7XG5pbXBvcnQgeyBUYWJsZUVtcHR5U3RhdGUgfSBmcm9tICcuLi9yZW5kZXJlcnMvRW1wdHlTdGF0ZSc7XG5pbXBvcnQgeyBUQUJMRV9CTE9DSywgVEFCTEVfREVGQVVMVF9QUkVGSVgsIFRBQkxFX0RFRkFVTFRfU0laRSwgVEFCTEVfREVGQVVMVF9WQVJJQU5ULCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VUYWJsZURhdGFQaXBlbGluZSB9IGZyb20gJy4vdXNlVGFibGVEYXRhUGlwZWxpbmUnO1xuaW1wb3J0IHsgdXNlVGFibGVTZWxlY3Rpb24gfSBmcm9tICcuL3VzZVRhYmxlU2VsZWN0aW9uJztcbmltcG9ydCB7IHVzZVRhYmxlRXhwYW5kIH0gZnJvbSAnLi91c2VUYWJsZUV4cGFuZCc7XG5pbXBvcnQgeyB1c2VUYWJsZUNvbHVtbnMgfSBmcm9tICcuL3VzZVRhYmxlQ29sdW1ucyc7XG4vKipcbiAqIENlbnRyYWxpc2VzIHRoZSB3aXJpbmcgc2hhcmVkIGJ5IGBUYWJsZWAgYW5kIGBWaXJ0dWFsVGFibGVgOlxuICogIC0gZGVzdHJ1Y3R1cmUgcHJvcHNcbiAqICAtIHJlc29sdmUgcm93IGtleVxuICogIC0gcnVuIHBpcGVsaW5lIC8gc2VsZWN0aW9uIC8gZXhwYW5kIC8gY29sdW1uIHRyYW5zZm9ybXNcbiAqICAtIGJ1aWxkIGtlcm5lbC1yZWFkeSBwcm9wc1xuICogIC0gc3BsaXQgb2ZmIHBhc3MtdGhyb3VnaCBIVE1MIGF0dHJpYnV0ZXMgc28gdGhleSBjYW4gbGFuZCBvbiB0aGUgb3V0ZXIgd3JhcHBlclxuICogICAgZGl2IChpbnN0ZWFkIG9mIGJlaW5nIHNwcmVhZCB1bnR5cGVkIGludG8gdGhlIGtlcm5lbCB2aWEgYHJlc3QgYXMgb2JqZWN0YCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUYWJsZVNldHVwID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgcHJlZml4Q2xzID0gVEFCTEVfREVGQVVMVF9QUkVGSVgsIHNpemUgPSBUQUJMRV9ERUZBVUxUX1NJWkUsIHZhcmlhbnQgPSBUQUJMRV9ERUZBVUxUX1ZBUklBTlQsIGNvbHVtbnMsIGRhdGFTb3VyY2UsIHJvd0tleSwgZW1wdHksIGJvcmRlcmVkLCBzY3JvbGw6IF9zY3JvbGwsIHN0aWNreSwgcGFnaW5hdGlvbiwgcm93U2VsZWN0aW9uLCBsb2FkaW5nID0gZmFsc2UsIG9uQ2hhbmdlLCBjaGlsZHJlbkNvbHVtbk5hbWUsIGluZGVudFNpemUsIGV4cGFuZGFibGUsIG9uUm93LCByb3dDbGFzc05hbWUsIHN1bW1hcnksIHNob3dIZWFkZXIsIHRhYmxlTGF5b3V0LCBjb21wb25lbnRzLCBkaXJlY3Rpb24sIHJvd0hvdmVyYWJsZSB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcInByZWZpeENsc1wiLCBcInNpemVcIiwgXCJ2YXJpYW50XCIsIFwiY29sdW1uc1wiLCBcImRhdGFTb3VyY2VcIiwgXCJyb3dLZXlcIiwgXCJlbXB0eVwiLCBcImJvcmRlcmVkXCIsIFwic2Nyb2xsXCIsIFwic3RpY2t5XCIsIFwicGFnaW5hdGlvblwiLCBcInJvd1NlbGVjdGlvblwiLCBcImxvYWRpbmdcIiwgXCJvbkNoYW5nZVwiLCBcImNoaWxkcmVuQ29sdW1uTmFtZVwiLCBcImluZGVudFNpemVcIiwgXCJleHBhbmRhYmxlXCIsIFwib25Sb3dcIiwgXCJyb3dDbGFzc05hbWVcIiwgXCJzdW1tYXJ5XCIsIFwic2hvd0hlYWRlclwiLCBcInRhYmxlTGF5b3V0XCIsIFwiY29tcG9uZW50c1wiLCBcImRpcmVjdGlvblwiLCBcInJvd0hvdmVyYWJsZVwiXSk7XG4gICAgdm9pZCBfc2Nyb2xsO1xuICAgIGNvbnN0IGNscyA9IGNsYXNzbmFtZXMoVEFCTEVfQkxPQ0spO1xuICAgIGNvbnN0IGdldFJvd0tleSA9IHVzZU1lbW9pemVkRm4oKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHJvd0tleSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyByb3dLZXkocmVjb3JkKVxuICAgICAgICAgICAgOiAoX2EgPSByZWNvcmRbcm93S2V5ICE9PSBudWxsICYmIHJvd0tleSAhPT0gdm9pZCAwID8gcm93S2V5IDogJ2tleSddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBpbmRleDtcbiAgICB9KTtcbiAgICBjb25zdCBwaXBlbGluZSA9IHVzZVRhYmxlRGF0YVBpcGVsaW5lKHsgY29sdW1ucywgZGF0YVNvdXJjZSwgcGFnaW5hdGlvbiwgb25DaGFuZ2UgfSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdXNlVGFibGVTZWxlY3Rpb24oe1xuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBwaXBlbGluZS5jdXJyZW50RGF0YVNvdXJjZSxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIH0pO1xuICAgIGNvbnN0IGV4cGFuZCA9IHVzZVRhYmxlRXhwYW5kKHsgZXhwYW5kYWJsZSB9KTtcbiAgICBjb25zdCByZW5kZXJlZENvbHVtbnMgPSB1c2VUYWJsZUNvbHVtbnMoe1xuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBzaXplLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBleHBhbmRhYmxlLFxuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXM6IGV4cGFuZC5tZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQ6IGV4cGFuZC50cmlnZ2VyRXhwYW5kLFxuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIG1lcmdlZFNlbGVjdGVkUm93S2V5czogc2VsZWN0aW9uLm1lcmdlZFNlbGVjdGVkUm93S2V5cyxcbiAgICAgICAgY2hlY2tib3hQcm9wc01hcDogc2VsZWN0aW9uLmNoZWNrYm94UHJvcHNNYXAsXG4gICAgICAgIGlzQWxsU2VsZWN0ZWQ6IHNlbGVjdGlvbi5pc0FsbFNlbGVjdGVkLFxuICAgICAgICBpc0luZGV0ZXJtaW5hdGU6IHNlbGVjdGlvbi5pc0luZGV0ZXJtaW5hdGUsXG4gICAgICAgIHRyaWdnZXJTZWxlY3Rpb246IHNlbGVjdGlvbi50cmlnZ2VyU2VsZWN0aW9uLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0QWxsOiBzZWxlY3Rpb24udHJpZ2dlclNlbGVjdEFsbCxcbiAgICAgICAgc29ydGVyOiBwaXBlbGluZS5zb3J0ZXIsXG4gICAgICAgIHNldFNvcnRlcjogcGlwZWxpbmUuc2V0U29ydGVyLFxuICAgICAgICBmaWx0ZXJzOiBwaXBlbGluZS5maWx0ZXJzLFxuICAgICAgICBzZXRGaWx0ZXJzOiBwaXBlbGluZS5zZXRGaWx0ZXJzLFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgfSk7XG4gICAgY29uc3Qgd3JhcHBlZEV4cGFuZGVkUm93UmVuZGVyID0gdXNlTWVtb2l6ZWRGbigocmVjb3JkLCBpbmRleCwgaW5kZW50LCBleHBhbmRlZCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2pzeChFeHBhbmRlZFJvd0NvbnRhaW5lciwgeyBjaGlsZHJlbjogKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCByZWNvcmQsIGluZGV4LCBpbmRlbnQsIGV4cGFuZGVkKSB9KSk7XG4gICAgfSk7XG4gICAgLy8gV2lyZSBrZXJuZWwncyBvbkV4cGFuZCAodHJpZ2dlcmVkIGJ5IGV4cGFuZFJvd0J5Q2xpY2spIHRvIG91ciBzdGF0ZS5cbiAgICBjb25zdCBrZXJuZWxPbkV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKGV4cGFuZGVkLCByZWNvcmQpID0+IHtcbiAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgZGF0YVNvdXJjZS5pbmRleE9mKHJlY29yZCkpO1xuICAgICAgICBleHBhbmQub25LZXJuZWxFeHBhbmQoZXhwYW5kZWQsIHJlY29yZCwgcmVjb3JkS2V5KTtcbiAgICB9KTtcbiAgICBjb25zdCBtZXJnZWRFeHBhbmRhYmxlID0gdXNlTWVtbygoKSA9PiBleHBhbmRhYmxlXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBleHBhbmRhYmxlKSwgeyBleHBhbmRlZFJvd0tleXM6IGV4cGFuZC5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIGV4cGFuZGVkUm93UmVuZGVyOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyXG4gICAgICAgICAgICAgICAgPyB3cmFwcGVkRXhwYW5kZWRSb3dSZW5kZXJcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgc2hvd0V4cGFuZENvbHVtbjogZmFsc2UsIG9uRXhwYW5kOiBrZXJuZWxPbkV4cGFuZCB9KVxuICAgICAgICA6IHVuZGVmaW5lZCwgW2V4cGFuZGFibGUsIGV4cGFuZC5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHdyYXBwZWRFeHBhbmRlZFJvd1JlbmRlciwga2VybmVsT25FeHBhbmRdKTtcbiAgICBjb25zdCByZXNvbHZlZFBhZ2luYXRpb24gPSBwaXBlbGluZS5wYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICA/IHsgY3VycmVudDogMSwgcGFnZVNpemU6IDEwIH1cbiAgICAgICAgOiBwaXBlbGluZS5wYWdpbmF0aW9uO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Ob2RlID0gcGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1wYWdpbmF0aW9uYCwgY2hpbGRyZW46IF9qc3goUGFnaW5hdGlvbiwgeyB0b3RhbDogcGlwZWxpbmUudG90YWwsIHBhZ2VTaXplOiByZXNvbHZlZFBhZ2luYXRpb24ucGFnZVNpemUsIGN1cnJlbnQ6IHJlc29sdmVkUGFnaW5hdGlvbi5jdXJyZW50LCBvbkNoYW5nZTogKG5leHRQYWdlLCBuZXh0UGFnZVNpemUpID0+IHBpcGVsaW5lLnNldFBhZ2luYXRpb24oKGN1cnJlbnRQYWdpbmF0aW9uKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50UGFnaW5hdGlvbiksIHsgY3VycmVudDogbmV4dFBhZ2UsIHBhZ2VTaXplOiBuZXh0UGFnZVNpemUgfSkpKSB9KSB9KSkgOiBudWxsO1xuICAgIGNvbnN0IHdyYXBwZXJDbGFzc05hbWUgPSBqb2luQ2xzKGAke3ByZWZpeENsc30td3JhcHBlcmAsIGxvYWRpbmcgJiYgYCR7cHJlZml4Q2xzfS13cmFwcGVyLS1sb2FkaW5nYCwgYm9yZGVyZWQgJiYgYCR7cHJlZml4Q2xzfS13cmFwcGVyLS1ib3JkZXJlZGApO1xuICAgIGNvbnN0IHRhYmxlQ2xhc3NOYW1lID0gam9pbkNscyhjbHMoKSwgY2xzKHNpemUpLCBjbHModmFyaWFudCksIGNsYXNzTmFtZSk7XG4gICAgY29uc3QgZW1wdHlUZXh0ID0gbG9hZGluZyAmJiAhZGF0YVNvdXJjZS5sZW5ndGggPyBfanN4KFwic3BhblwiLCB7fSkgOiBfanN4KFRhYmxlRW1wdHlTdGF0ZSwgeyBlbXB0eTogZW1wdHkgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJlZml4Q2xzLFxuICAgICAgICB3cmFwcGVyQ2xhc3NOYW1lLFxuICAgICAgICB0YWJsZUNsYXNzTmFtZSxcbiAgICAgICAgbG9hZGluZyxcbiAgICAgICAgcmVuZGVyZWRDb2x1bW5zLFxuICAgICAgICBjdXJyZW50RGF0YVNvdXJjZTogcGlwZWxpbmUuY3VycmVudERhdGFTb3VyY2UsXG4gICAgICAgIG1lcmdlZEV4cGFuZGFibGUsXG4gICAgICAgIGVtcHR5VGV4dCxcbiAgICAgICAgd3JhcHBlckh0bWxQcm9wczogcmVzdCxcbiAgICAgICAgZm9yd2FyZGVkS2VybmVsUHJvcHM6IHtcbiAgICAgICAgICAgIHJvd0tleTogcm93S2V5LFxuICAgICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgICAgICAgaW5kZW50U2l6ZSxcbiAgICAgICAgICAgIG9uUm93LFxuICAgICAgICAgICAgcm93Q2xhc3NOYW1lLFxuICAgICAgICAgICAgc3VtbWFyeSxcbiAgICAgICAgICAgIHNob3dIZWFkZXIsXG4gICAgICAgICAgICB0YWJsZUxheW91dCxcbiAgICAgICAgICAgIGNvbXBvbmVudHMsXG4gICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICByb3dIb3ZlcmFibGUsXG4gICAgICAgICAgICBzdGlja3ksXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2luYXRpb25Ob2RlLFxuICAgIH07XG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
195
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNldHVwLmpzIiwiY29tcG9uZW50cy9UYWJsZS9zcmMvY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlU2V0dXAudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJQYWdpbmF0aW9uIiwiRXhwYW5kZWRSb3dDb250YWluZXIiLCJUYWJsZUVtcHR5U3RhdGUiLCJUQUJMRV9CTE9DSyIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiVEFCTEVfREVGQVVMVF9TSVpFIiwiVEFCTEVfREVGQVVMVF9WQVJJQU5UIiwidXNlVGFibGVEYXRhUGlwZWxpbmUiLCJ1c2VUYWJsZVNlbGVjdGlvbiIsInVzZVRhYmxlRXhwYW5kIiwidXNlVGFibGVDb2x1bW5zIiwidXNlVGFibGVTZXR1cCIsInByb3BzIiwiX2EiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9wcm9wcyRzaXplIiwic2l6ZSIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsImNvbHVtbnMiLCJkYXRhU291cmNlIiwicm93S2V5IiwiZW1wdHkiLCJib3JkZXJlZCIsIl9zY3JvbGwiLCJzY3JvbGwiLCJzdGlja3kiLCJwYWdpbmF0aW9uIiwicm93U2VsZWN0aW9uIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwib25DaGFuZ2UiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJpbmRlbnRTaXplIiwiZXhwYW5kYWJsZSIsIm9uUm93Iiwicm93Q2xhc3NOYW1lIiwic3VtbWFyeSIsInNob3dIZWFkZXIiLCJ0YWJsZUxheW91dCIsImNvbXBvbmVudHMiLCJkaXJlY3Rpb24iLCJyb3dIb3ZlcmFibGUiLCJyZXN0IiwiY2xzIiwiZ2V0Um93S2V5IiwicmVjb3JkIiwiaW5kZXgiLCJwaXBlbGluZSIsInNlbGVjdGlvbiIsImN1cnJlbnREYXRhU291cmNlIiwiZXhwYW5kIiwicmVuZGVyZWRDb2x1bW5zIiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsIm1lcmdlZFNlbGVjdGVkUm93S2V5cyIsImNoZWNrYm94UHJvcHNNYXAiLCJpc0FsbFNlbGVjdGVkIiwiaXNJbmRldGVybWluYXRlIiwidHJpZ2dlclNlbGVjdGlvbiIsInRyaWdnZXJTZWxlY3RBbGwiLCJzb3J0ZXIiLCJzZXRTb3J0ZXIiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImV4cGFuZGVkUm93UmVuZGVyIiwidW5kZWZpbmVkIiwiY29uc29sZSIsIndhcm4iLCJ3cmFwcGVkRXhwYW5kZWRSb3dSZW5kZXIiLCJpbmRlbnQiLCJleHBhbmRlZCIsInJvd0V4cGFuZGFibGUiLCJjaGlsZHJlbiIsImtlcm5lbE9uRXhwYW5kIiwicmVjb3JkS2V5Iiwib25LZXJuZWxFeHBhbmQiLCJtZXJnZWRFeHBhbmRhYmxlIiwiYXNzaWduIiwiZXhwYW5kZWRSb3dLZXlzIiwic2hvd0V4cGFuZENvbHVtbiIsIm9uRXhwYW5kIiwicmVzb2x2ZWRQYWdpbmF0aW9uIiwiY3VycmVudCIsInBhZ2VTaXplIiwicGFnaW5hdGlvbk5vZGUiLCJjb25jYXQiLCJ0b3RhbCIsIm5leHRQYWdlIiwibmV4dFBhZ2VTaXplIiwic2V0UGFnaW5hdGlvbiIsImN1cnJlbnRQYWdpbmF0aW9uIiwid3JhcHBlckNsYXNzTmFtZSIsInRhYmxlQ2xhc3NOYW1lIiwiZW1wdHlUZXh0Iiwid3JhcHBlckh0bWxQcm9wcyIsImZvcndhcmRlZEtlcm5lbFByb3BzIl0sIm1h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QUFnQixFQUFFdkQsSUFBSTtJQUN0QndELG9CQUFvQixFQUFFO01BQ3BCOUUsTUFBTSxFQUFFQSxNQUF1QztNQUMvQ1csa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJDLFVBQVUsRUFBVkEsVUFBVTtNQUNWRSxLQUFLLEVBQUxBLEtBQUs7TUFDTEMsWUFBWSxFQUFaQSxZQUFZO01BQ1pDLE9BQU8sRUFBUEEsT0FBTztNQUNQQyxVQUFVLEVBQVZBLFVBQVU7TUFDVkMsV0FBVyxFQUFYQSxXQUFXO01BQ1hDLFVBQVUsRUFBVkEsVUFBVTtNQUNWQyxTQUFTLEVBQVRBLFNBQVM7TUFDVEMsWUFBWSxFQUFaQSxZQUFZO01BQ1poQixNQUFNLEVBQU5BO0lEcEhFLENDcUhIO0lBQ0Q4RCxjQUFjLEVBQWRBO0VEcEhBLENDcUhEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVTZXR1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtb2l6ZWRGbiB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuaW1wb3J0IGNsYXNzbmFtZXMsIHsgam9pbkNscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uL1BhZ2luYXRpb24nO1xuaW1wb3J0IHsgRXhwYW5kZWRSb3dDb250YWluZXIgfSBmcm9tICcuLi9yZW5kZXJlcnMvRXhwYW5kZWRSb3dDb250YWluZXInO1xuaW1wb3J0IHsgVGFibGVFbXB0eVN0YXRlIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0VtcHR5U3RhdGUnO1xuaW1wb3J0IHsgVEFCTEVfQkxPQ0ssIFRBQkxFX0RFRkFVTFRfUFJFRklYLCBUQUJMRV9ERUZBVUxUX1NJWkUsIFRBQkxFX0RFRkFVTFRfVkFSSUFOVCwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdXNlVGFibGVEYXRhUGlwZWxpbmUgfSBmcm9tICcuL3VzZVRhYmxlRGF0YVBpcGVsaW5lJztcbmltcG9ydCB7IHVzZVRhYmxlU2VsZWN0aW9uIH0gZnJvbSAnLi91c2VUYWJsZVNlbGVjdGlvbic7XG5pbXBvcnQgeyB1c2VUYWJsZUV4cGFuZCB9IGZyb20gJy4vdXNlVGFibGVFeHBhbmQnO1xuaW1wb3J0IHsgdXNlVGFibGVDb2x1bW5zIH0gZnJvbSAnLi91c2VUYWJsZUNvbHVtbnMnO1xuLyoqXG4gKiBDZW50cmFsaXNlcyB0aGUgd2lyaW5nIHNoYXJlZCBieSBgVGFibGVgIGFuZCBgVmlydHVhbFRhYmxlYDpcbiAqICAtIGRlc3RydWN0dXJlIHByb3BzXG4gKiAgLSByZXNvbHZlIHJvdyBrZXlcbiAqICAtIHJ1biBwaXBlbGluZSAvIHNlbGVjdGlvbiAvIGV4cGFuZCAvIGNvbHVtbiB0cmFuc2Zvcm1zXG4gKiAgLSBidWlsZCBrZXJuZWwtcmVhZHkgcHJvcHNcbiAqICAtIHNwbGl0IG9mZiBwYXNzLXRocm91Z2ggSFRNTCBhdHRyaWJ1dGVzIHNvIHRoZXkgY2FuIGxhbmQgb24gdGhlIG91dGVyIHdyYXBwZXJcbiAqICAgIGRpdiAoaW5zdGVhZCBvZiBiZWluZyBzcHJlYWQgdW50eXBlZCBpbnRvIHRoZSBrZXJuZWwgdmlhIGByZXN0IGFzIG9iamVjdGApLlxuICovXG5leHBvcnQgY29uc3QgdXNlVGFibGVTZXR1cCA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSBUQUJMRV9ERUZBVUxUX1BSRUZJWCwgc2l6ZSA9IFRBQkxFX0RFRkFVTFRfU0laRSwgdmFyaWFudCA9IFRBQkxFX0RFRkFVTFRfVkFSSUFOVCwgY29sdW1ucywgZGF0YVNvdXJjZSwgcm93S2V5LCBlbXB0eSwgYm9yZGVyZWQsIHNjcm9sbDogX3Njcm9sbCwgc3RpY2t5LCBwYWdpbmF0aW9uLCByb3dTZWxlY3Rpb24sIGxvYWRpbmcgPSBmYWxzZSwgb25DaGFuZ2UsIGNoaWxkcmVuQ29sdW1uTmFtZSwgaW5kZW50U2l6ZSwgZXhwYW5kYWJsZSwgb25Sb3csIHJvd0NsYXNzTmFtZSwgc3VtbWFyeSwgc2hvd0hlYWRlciwgdGFibGVMYXlvdXQsIGNvbXBvbmVudHMsIGRpcmVjdGlvbiwgcm93SG92ZXJhYmxlIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwic2l6ZVwiLCBcInZhcmlhbnRcIiwgXCJjb2x1bW5zXCIsIFwiZGF0YVNvdXJjZVwiLCBcInJvd0tleVwiLCBcImVtcHR5XCIsIFwiYm9yZGVyZWRcIiwgXCJzY3JvbGxcIiwgXCJzdGlja3lcIiwgXCJwYWdpbmF0aW9uXCIsIFwicm93U2VsZWN0aW9uXCIsIFwibG9hZGluZ1wiLCBcIm9uQ2hhbmdlXCIsIFwiY2hpbGRyZW5Db2x1bW5OYW1lXCIsIFwiaW5kZW50U2l6ZVwiLCBcImV4cGFuZGFibGVcIiwgXCJvblJvd1wiLCBcInJvd0NsYXNzTmFtZVwiLCBcInN1bW1hcnlcIiwgXCJzaG93SGVhZGVyXCIsIFwidGFibGVMYXlvdXRcIiwgXCJjb21wb25lbnRzXCIsIFwiZGlyZWN0aW9uXCIsIFwicm93SG92ZXJhYmxlXCJdKTtcbiAgICB2b2lkIF9zY3JvbGw7XG4gICAgY29uc3QgY2xzID0gY2xhc3NuYW1lcyhUQUJMRV9CTE9DSyk7XG4gICAgY29uc3QgZ2V0Um93S2V5ID0gdXNlTWVtb2l6ZWRGbigocmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygcm93S2V5ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHJvd0tleShyZWNvcmQpXG4gICAgICAgICAgICA6IChfYSA9IHJlY29yZFtyb3dLZXkgIT09IG51bGwgJiYgcm93S2V5ICE9PSB2b2lkIDAgPyByb3dLZXkgOiAna2V5J10pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGluZGV4O1xuICAgIH0pO1xuICAgIGNvbnN0IHBpcGVsaW5lID0gdXNlVGFibGVEYXRhUGlwZWxpbmUoeyBjb2x1bW5zLCBkYXRhU291cmNlLCBwYWdpbmF0aW9uLCBvbkNoYW5nZSB9KTtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB1c2VUYWJsZVNlbGVjdGlvbih7XG4gICAgICAgIHJvd1NlbGVjdGlvbixcbiAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IHBpcGVsaW5lLmN1cnJlbnREYXRhU291cmNlLFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgfSk7XG4gICAgY29uc3QgZXhwYW5kID0gdXNlVGFibGVFeHBhbmQoeyBleHBhbmRhYmxlLCBkYXRhU291cmNlLCBnZXRSb3dLZXkgfSk7XG4gICAgY29uc3QgcmVuZGVyZWRDb2x1bW5zID0gdXNlVGFibGVDb2x1bW5zKHtcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgdmFyaWFudCxcbiAgICAgICAgZXhwYW5kYWJsZSxcbiAgICAgICAgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzOiBleHBhbmQubWVyZ2VkRXhwYW5kZWRSb3dLZXlzLFxuICAgICAgICB0cmlnZ2VyRXhwYW5kOiBleHBhbmQudHJpZ2dlckV4cGFuZCxcbiAgICAgICAgcm93U2VsZWN0aW9uLFxuICAgICAgICBtZXJnZWRTZWxlY3RlZFJvd0tleXM6IHNlbGVjdGlvbi5tZXJnZWRTZWxlY3RlZFJvd0tleXMsXG4gICAgICAgIGNoZWNrYm94UHJvcHNNYXA6IHNlbGVjdGlvbi5jaGVja2JveFByb3BzTWFwLFxuICAgICAgICBpc0FsbFNlbGVjdGVkOiBzZWxlY3Rpb24uaXNBbGxTZWxlY3RlZCxcbiAgICAgICAgaXNJbmRldGVybWluYXRlOiBzZWxlY3Rpb24uaXNJbmRldGVybWluYXRlLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0aW9uOiBzZWxlY3Rpb24udHJpZ2dlclNlbGVjdGlvbixcbiAgICAgICAgdHJpZ2dlclNlbGVjdEFsbDogc2VsZWN0aW9uLnRyaWdnZXJTZWxlY3RBbGwsXG4gICAgICAgIHNvcnRlcjogcGlwZWxpbmUuc29ydGVyLFxuICAgICAgICBzZXRTb3J0ZXI6IHBpcGVsaW5lLnNldFNvcnRlcixcbiAgICAgICAgZmlsdGVyczogcGlwZWxpbmUuZmlsdGVycyxcbiAgICAgICAgc2V0RmlsdGVyczogcGlwZWxpbmUuc2V0RmlsdGVycyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIH0pO1xuICAgIC8vIERldi1vbmx5IHdhcm5pbmc6IG1peGluZyByb3ctZXhwYW5zaW9uIHdpdGggdHJlZS1kYXRhIChjaGlsZHJlbkNvbHVtbk5hbWUpXG4gICAgLy8gcHJvZHVjZXMgdHdvIGNoZXZyb25zIHBlciByb3cgKHRoZSBsZWZ0bW9zdCBfX2V4cGFuZF9fIGNvbHVtbiBmcm9tIHRoZSB3cmFwcGVyXG4gICAgLy8gcGx1cyB0aGUga2VybmVsJ3MgcGVyLWluZGVudCBuZXN0IGV4cGFuZCkuIHJjLXRhYmxlIC8gYW50ZCBoYXZlIHRoZSBzYW1lIGdhcDtcbiAgICAvLyBwaWNrIG9uZSBtb2RlIGF0IGEgdGltZS5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICgoX2EgPSBwcm9jZXNzLmVudikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLk5PREVfRU5WKSAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyKSAmJiBjaGlsZHJlbkNvbHVtbk5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbY29tcG9uZW50cy11aSBUYWJsZV0gQ29tYmluaW5nIGBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyYCB3aXRoIGBjaGlsZHJlbkNvbHVtbk5hbWVgIGlzIG5vdCBzdXBwb3J0ZWQg4oCUIHRoZSBsZWZ0bW9zdCBleHBhbmQgY29sdW1uIHdpbGwgcmVuZGVyIGFsb25nc2lkZSB0aGUgbmVzdGVkIHRyZWUgZXhwYW5kZXIuIFVzZSBvbmUgbW9kZSBhdCBhIHRpbWUuJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgd3JhcHBlZEV4cGFuZGVkUm93UmVuZGVyID0gdXNlTWVtb2l6ZWRGbigocmVjb3JkLCBpbmRleCwgaW5kZW50LCBleHBhbmRlZCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIC8vIEhvbm9yIGByb3dFeHBhbmRhYmxlYDogZXZlbiBpZiBhIG5vbi1leHBhbmRhYmxlIHJvdydzIGtleSBzbmVha3MgaW50b1xuICAgICAgICAvLyBgZXhwYW5kZWRSb3dLZXlzYCwgcmVmdXNlIHRvIHJlbmRlciBpdHMgZXhwYW5zaW9uIGNvbnRlbnQuXG4gICAgICAgIGlmICgoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUpICYmICFleHBhbmRhYmxlLnJvd0V4cGFuZGFibGUocmVjb3JkKSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gKF9qc3goRXhwYW5kZWRSb3dDb250YWluZXIsIHsgY2hpbGRyZW46IChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5leHBhbmRlZFJvd1JlbmRlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZXhwYW5kYWJsZSwgcmVjb3JkLCBpbmRleCwgaW5kZW50LCBleHBhbmRlZCkgfSkpO1xuICAgIH0pO1xuICAgIC8vIFdpcmUga2VybmVsJ3Mgb25FeHBhbmQgKHRyaWdnZXJlZCBieSBleHBhbmRSb3dCeUNsaWNrKSB0byBvdXIgc3RhdGUuXG4gICAgY29uc3Qga2VybmVsT25FeHBhbmQgPSB1c2VNZW1vaXplZEZuKChleHBhbmRlZCwgcmVjb3JkKSA9PiB7XG4gICAgICAgIC8vIFRoZSBrZXJuZWwgcGFzc2VzIGEgcmVjb3JkIGZyb20gYGN1cnJlbnREYXRhU291cmNlYCAocG9zdCBzb3J0L2ZpbHRlci9wYWdpbmF0ZSkuXG4gICAgICAgIC8vIExvb2tpbmcgaXQgdXAgYWdhaW5zdCB0aGUgcmF3IGBkYXRhU291cmNlYCByZXR1cm5zIC0xIHdoZW4gdGhlIGNvbnN1bWVyXG4gICAgICAgIC8vIHJlY3JlYXRlcyB0aGUgYXJyYXkgZWFjaCByZW5kZXIsIG9yIGEgcG9zaXRpb25hbGx5IHdyb25nIGluZGV4IGFmdGVyIHNvcnQuXG4gICAgICAgIC8vIFVzZSBgY3VycmVudERhdGFTb3VyY2VgIHNvIHRoZSBpbmRleCBtYXRjaGVzIHdoYXQgdGhlIGtlcm5lbCBhY3R1YWxseSBzZWVzLlxuICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBwaXBlbGluZS5jdXJyZW50RGF0YVNvdXJjZS5pbmRleE9mKHJlY29yZCkpO1xuICAgICAgICBleHBhbmQub25LZXJuZWxFeHBhbmQoZXhwYW5kZWQsIHJlY29yZCwgcmVjb3JkS2V5KTtcbiAgICB9KTtcbiAgICBjb25zdCBtZXJnZWRFeHBhbmRhYmxlID0gdXNlTWVtbygoKSA9PiBleHBhbmRhYmxlXG4gICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBleHBhbmRhYmxlKSwgeyBleHBhbmRlZFJvd0tleXM6IGV4cGFuZC5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIGV4cGFuZGVkUm93UmVuZGVyOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyXG4gICAgICAgICAgICAgICAgPyB3cmFwcGVkRXhwYW5kZWRSb3dSZW5kZXJcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCwgc2hvd0V4cGFuZENvbHVtbjogZmFsc2UsIG9uRXhwYW5kOiBrZXJuZWxPbkV4cGFuZCB9KVxuICAgICAgICA6IHVuZGVmaW5lZCwgW2V4cGFuZGFibGUsIGV4cGFuZC5tZXJnZWRFeHBhbmRlZFJvd0tleXMsIHdyYXBwZWRFeHBhbmRlZFJvd1JlbmRlciwga2VybmVsT25FeHBhbmRdKTtcbiAgICBjb25zdCByZXNvbHZlZFBhZ2luYXRpb24gPSBwaXBlbGluZS5wYWdpbmF0aW9uID09PSBmYWxzZVxuICAgICAgICA/IHsgY3VycmVudDogMSwgcGFnZVNpemU6IDEwIH1cbiAgICAgICAgOiBwaXBlbGluZS5wYWdpbmF0aW9uO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Ob2RlID0gcGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogYCR7cHJlZml4Q2xzfS1wYWdpbmF0aW9uYCwgY2hpbGRyZW46IF9qc3goUGFnaW5hdGlvbiwgeyB0b3RhbDogcGlwZWxpbmUudG90YWwsIHBhZ2VTaXplOiByZXNvbHZlZFBhZ2luYXRpb24ucGFnZVNpemUsIGN1cnJlbnQ6IHJlc29sdmVkUGFnaW5hdGlvbi5jdXJyZW50LCBvbkNoYW5nZTogKG5leHRQYWdlLCBuZXh0UGFnZVNpemUpID0+IHBpcGVsaW5lLnNldFBhZ2luYXRpb24oKGN1cnJlbnRQYWdpbmF0aW9uKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50UGFnaW5hdGlvbiksIHsgY3VycmVudDogbmV4dFBhZ2UsIHBhZ2VTaXplOiBuZXh0UGFnZVNpemUgfSkpKSB9KSB9KSkgOiBudWxsO1xuICAgIGNvbnN0IHdyYXBwZXJDbGFzc05hbWUgPSBqb2luQ2xzKGAke3ByZWZpeENsc30td3JhcHBlcmAsIGxvYWRpbmcgJiYgYCR7cHJlZml4Q2xzfS13cmFwcGVyLS1sb2FkaW5nYCwgYm9yZGVyZWQgJiYgYCR7cHJlZml4Q2xzfS13cmFwcGVyLS1ib3JkZXJlZGApO1xuICAgIGNvbnN0IHRhYmxlQ2xhc3NOYW1lID0gam9pbkNscyhjbHMoKSwgY2xzKHNpemUpLCBjbHModmFyaWFudCksIGNsYXNzTmFtZSk7XG4gICAgY29uc3QgZW1wdHlUZXh0ID0gbG9hZGluZyAmJiAhZGF0YVNvdXJjZS5sZW5ndGggPyBfanN4KFwic3BhblwiLCB7fSkgOiBfanN4KFRhYmxlRW1wdHlTdGF0ZSwgeyBlbXB0eTogZW1wdHkgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJlZml4Q2xzLFxuICAgICAgICB3cmFwcGVyQ2xhc3NOYW1lLFxuICAgICAgICB0YWJsZUNsYXNzTmFtZSxcbiAgICAgICAgbG9hZGluZyxcbiAgICAgICAgcmVuZGVyZWRDb2x1bW5zLFxuICAgICAgICBjdXJyZW50RGF0YVNvdXJjZTogcGlwZWxpbmUuY3VycmVudERhdGFTb3VyY2UsXG4gICAgICAgIG1lcmdlZEV4cGFuZGFibGUsXG4gICAgICAgIGVtcHR5VGV4dCxcbiAgICAgICAgd3JhcHBlckh0bWxQcm9wczogcmVzdCxcbiAgICAgICAgZm9yd2FyZGVkS2VybmVsUHJvcHM6IHtcbiAgICAgICAgICAgIHJvd0tleTogcm93S2V5LFxuICAgICAgICAgICAgY2hpbGRyZW5Db2x1bW5OYW1lLFxuICAgICAgICAgICAgaW5kZW50U2l6ZSxcbiAgICAgICAgICAgIG9uUm93LFxuICAgICAgICAgICAgcm93Q2xhc3NOYW1lLFxuICAgICAgICAgICAgc3VtbWFyeSxcbiAgICAgICAgICAgIHNob3dIZWFkZXIsXG4gICAgICAgICAgICB0YWJsZUxheW91dCxcbiAgICAgICAgICAgIGNvbXBvbmVudHMsXG4gICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICByb3dIb3ZlcmFibGUsXG4gICAgICAgICAgICBzdGlja3ksXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2luYXRpb25Ob2RlLFxuICAgIH07XG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -10,7 +10,14 @@ export var ExpandTrigger = function ExpandTrigger(_ref) {
10
10
  "aria-label": "Expand row",
11
11
  "aria-expanded": expanded,
12
12
  className: "".concat(TABLE_DEFAULT_PREFIX, "-expand-trigger"),
13
- onClick: onToggle,
13
+ onClick: function onClick(e) {
14
+ // Without stopPropagation, clicks on the chevron would also bubble up
15
+ // to the row, double-firing the kernel's onTriggerExpand handler when
16
+ // `expandRowByClick` is enabled (net effect: no change). Match the
17
+ // behavior of the custom expandIcon path in `useTableColumns`.
18
+ e.stopPropagation();
19
+ onToggle();
20
+ },
14
21
  children: _jsx(Icons, {
15
22
  name: "chevronDown",
16
23
  size: 16,
@@ -22,4 +29,4 @@ export var ExpandTrigger = function ExpandTrigger(_ref) {
22
29
  })
23
30
  });
24
31
  };
25
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvRXhwYW5kVHJpZ2dlci5qcyIsImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvRXhwYW5kVHJpZ2dlci50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIkljb25zIiwiVEFCTEVfREVGQVVMVF9QUkVGSVgiLCJFeHBhbmRUcmlnZ2VyIiwiX3JlZiIsImV4cGFuZGVkIiwib25Ub2dnbGUiLCJyb2xlIiwidHlwZSIsImNsYXNzTmFtZSIsImNvbmNhdCIsIm9uQ2xpY2siLCJjaGlsZHJlbiIsIm5hbWUiLCJzaXplIiwiY29sb3IiLCJzdHlsZSIsInRyYW5zZm9ybSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDQS9DLFNBQVNDLEtBQUssUUFBUSxhQUFhO0FBQ25DLFNBQVNDLG9CQUFvQixRQUFRLGNBQWM7QUFFbkQsT0FBTyxJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUFDLElBQUE7RUFBQSxJQUN4QkMsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7SUFDUkMsUUFBUSxHQUFBRixJQUFBLENBQVJFLFFBQVE7RUFBQSxPQUtSTixJQUFBLENBQUEsUUFBQSxFQUFBO0lBQ0VPLElBQUksRUFBQyxRQUFRO0lBQ2JDLElBQUksRUFBQyxRQUFRO0lBQUEsWUFBQSxFQUNGLFlBQVk7SUFBQSxlQUFBLEVBQ1JILFFBQVE7SUFDdkJJLFNBQVMsS0FBQUMsTUFBQSxDQUFLUixvQkFBb0Isb0JBQWlCO0lBQ25EUyxPQUFPLEVBQUVMLFFBQVE7SUFBQU0sUUFBQSxFQUVqQlosSUFBQSxDQUFDQyxLQUFLLEVBQUE7TUFDSlksSUFBSSxFQUFDLGFBQWE7TUFDbEJDLElBQUksRUFBRSxFQUFFO01BQ1JDLEtBQUssRUFBQyxjQUFjO01BQ3BCTixTQUFTLEtBQUFDLE1BQUEsQ0FBS1Isb0JBQW9CLDBCQUF1QjtNQUN6RGMsS0FBSyxFQUFFO1FBQ0xDLFNBQVMsRUFBRVosUUFBUSxHQUFHLGdCQUFnQixHQUFHYTtNRG5CekM7SUNvQkQsQ0FBQTtFQUNELENBQUEsQ0FDSztBQUFBLENBQ1YiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9mZWF0dXJlcy9FeHBhbmRUcmlnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vLi4vSWNvbnMnO1xuaW1wb3J0IHsgVEFCTEVfREVGQVVMVF9QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuZXhwb3J0IGNvbnN0IEV4cGFuZFRyaWdnZXIgPSAoeyBleHBhbmRlZCwgb25Ub2dnbGUsIH0pID0+IChfanN4KFwiYnV0dG9uXCIsIHsgcm9sZTogJ2J1dHRvbicsIHR5cGU6IFwiYnV0dG9uXCIsIFwiYXJpYS1sYWJlbFwiOiBcIkV4cGFuZCByb3dcIiwgXCJhcmlhLWV4cGFuZGVkXCI6IGV4cGFuZGVkLCBjbGFzc05hbWU6IGAke1RBQkxFX0RFRkFVTFRfUFJFRklYfS1leHBhbmQtdHJpZ2dlcmAsIG9uQ2xpY2s6IG9uVG9nZ2xlLCBjaGlsZHJlbjogX2pzeChJY29ucywgeyBuYW1lOiBcImNoZXZyb25Eb3duXCIsIHNpemU6IDE2LCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiwgY2xhc3NOYW1lOiBgJHtUQUJMRV9ERUZBVUxUX1BSRUZJWH0tZXhwYW5kLXRyaWdnZXJfX2ljb25gLCBzdHlsZToge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBleHBhbmRlZCA/ICdyb3RhdGUoMTgwZGVnKScgOiB1bmRlZmluZWQsXG4gICAgICAgIH0gfSkgfSkpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
32
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvRXhwYW5kVHJpZ2dlci5qcyIsImNvbXBvbmVudHMvVGFibGUvc3JjL2NvbXBvbmVudHMvVGFibGUvZmVhdHVyZXMvRXhwYW5kVHJpZ2dlci50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsIkljb25zIiwiVEFCTEVfREVGQVVMVF9QUkVGSVgiLCJFeHBhbmRUcmlnZ2VyIiwiX3JlZiIsImV4cGFuZGVkIiwib25Ub2dnbGUiLCJyb2xlIiwidHlwZSIsImNsYXNzTmFtZSIsImNvbmNhdCIsIm9uQ2xpY2siLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiY2hpbGRyZW4iLCJuYW1lIiwic2l6ZSIsImNvbG9yIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxLQUFLLFFBQVEsYUFBYTtBQUNuQyxTQUFTQyxvQkFBb0IsUUFBUSxjQUFjO0FBRW5ELE9BQU8sSUFBTUMsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFBQyxJQUFBO0VBQUEsSUFDeEJDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0lBQ1JDLFFBQVEsR0FBQUYsSUFBQSxDQUFSRSxRQUFRO0VBQUEsT0FLUk4sSUFBQSxDQUFBLFFBQUEsRUFBQTtJQUNFTyxJQUFJLEVBQUMsUUFBUTtJQUNiQyxJQUFJLEVBQUMsUUFBUTtJQUFBLFlBQUEsRUFDRixZQUFZO0lBQUEsZUFBQSxFQUNSSCxRQUFRO0lBQ3ZCSSxTQUFTLEtBQUFDLE1BQUEsQ0FBS1Isb0JBQW9CLG9CQUFpQjtJQUNuRFMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUdDLENBQUMsRUFBSTtNQUNiO01BQ0E7TUFDQTtNQUNBO01BQ0FBLENBQUMsQ0FBQ0MsZUFBZSxDQUFBLENBQUU7TUFDbkJQLFFBQVEsQ0FBQSxDQUFFO0lBQ1osQ0FBQztJQUFBUSxRQUFBLEVBRURkLElBQUEsQ0FBQ0MsS0FBSyxFQUFBO01BQ0pjLElBQUksRUFBQyxhQUFhO01BQ2xCQyxJQUFJLEVBQUUsRUFBRTtNQUNSQyxLQUFLLEVBQUMsY0FBYztNQUNwQlIsU0FBUyxLQUFBQyxNQUFBLENBQUtSLG9CQUFvQiwwQkFBdUI7TUFDekRnQixLQUFLLEVBQUU7UUFDTEMsU0FBUyxFQUFFZCxRQUFRLEdBQUcsZ0JBQWdCLEdBQUdlO01EbkJ6QztJQ29CRCxDQUFBO0VBQ0QsQ0FBQSxDQUNLO0FBQUEsQ0FDViIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2ZlYXR1cmVzL0V4cGFuZFRyaWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi8uLi9JY29ucyc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5leHBvcnQgY29uc3QgRXhwYW5kVHJpZ2dlciA9ICh7IGV4cGFuZGVkLCBvblRvZ2dsZSwgfSkgPT4gKF9qc3goXCJidXR0b25cIiwgeyByb2xlOiAnYnV0dG9uJywgdHlwZTogXCJidXR0b25cIiwgXCJhcmlhLWxhYmVsXCI6IFwiRXhwYW5kIHJvd1wiLCBcImFyaWEtZXhwYW5kZWRcIjogZXhwYW5kZWQsIGNsYXNzTmFtZTogYCR7VEFCTEVfREVGQVVMVF9QUkVGSVh9LWV4cGFuZC10cmlnZ2VyYCwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgLy8gV2l0aG91dCBzdG9wUHJvcGFnYXRpb24sIGNsaWNrcyBvbiB0aGUgY2hldnJvbiB3b3VsZCBhbHNvIGJ1YmJsZSB1cFxuICAgICAgICAvLyB0byB0aGUgcm93LCBkb3VibGUtZmlyaW5nIHRoZSBrZXJuZWwncyBvblRyaWdnZXJFeHBhbmQgaGFuZGxlciB3aGVuXG4gICAgICAgIC8vIGBleHBhbmRSb3dCeUNsaWNrYCBpcyBlbmFibGVkIChuZXQgZWZmZWN0OiBubyBjaGFuZ2UpLiBNYXRjaCB0aGVcbiAgICAgICAgLy8gYmVoYXZpb3Igb2YgdGhlIGN1c3RvbSBleHBhbmRJY29uIHBhdGggaW4gYHVzZVRhYmxlQ29sdW1uc2AuXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIG9uVG9nZ2xlKCk7XG4gICAgfSwgY2hpbGRyZW46IF9qc3goSWNvbnMsIHsgbmFtZTogXCJjaGV2cm9uRG93blwiLCBzaXplOiAxNiwgY29sb3I6IFwiY3VycmVudENvbG9yXCIsIGNsYXNzTmFtZTogYCR7VEFCTEVfREVGQVVMVF9QUkVGSVh9LWV4cGFuZC10cmlnZ2VyX19pY29uYCwgc3R5bGU6IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogZXhwYW5kZWQgPyAncm90YXRlKDE4MGRlZyknIDogdW5kZWZpbmVkLFxuICAgICAgICB9IH0pIH0pKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -10,11 +10,10 @@ export type TableSortOrder = 'ascend' | 'descend' | null;
10
10
  export type TableAction = 'paginate' | 'sort' | 'filter';
11
11
  export type TableLayout = 'auto' | 'fixed';
12
12
  export type TableDirection = 'ltr' | 'rtl';
13
- /** Default record shape — matches `rc-table`'s `DefaultRecordType`. */
13
+ /** Default record shape. */
14
14
  export type TableRecord = Record<string, any>;
15
15
  /**
16
16
  * Path used to derive a value from a record. Re-exported from the kernel so the
17
- * public API supports the same shapes as `rc-table` (string / number / array /
18
17
  * recursive deep paths) instead of the previous narrower union.
19
18
  */
20
19
  export type TableDataIndex<T extends TableRecord = TableRecord> = InternalDataIndex<T>;
@@ -196,6 +195,8 @@ export interface TableExpandableConfig<T extends TableRecord = TableRecord> {
196
195
  expandRowByClick?: boolean;
197
196
  showExpandColumn?: boolean;
198
197
  expandIcon?: (props: TableExpandIconProps<T>) => ReactNode;
198
+ /** Header label rendered on the auto-injected expand column. */
199
+ columnTitle?: ReactNode;
199
200
  columnWidth?: number | string;
200
201
  fixed?: 'left' | 'right' | boolean;
201
202
  onExpand?: (expanded: boolean, record: T) => void;
@@ -217,7 +218,7 @@ export interface TableProps<T extends TableRecord = TableRecord> extends Omit<HT
217
218
  /**
218
219
  * Row key for tracking. Accepts:
219
220
  * - `string` — a property name, including synthetic keys not statically known on `T`
220
- * (e.g. records carrying an injected `key` field). Same shape as `rc-table`.
221
+ * (e.g. records carrying an injected `key` field).
221
222
  * - `keyof T` — type-checked property name.
222
223
  * - `(record) => Key` — function form for composite or computed keys.
223
224
  * Defaults to `'key'` at runtime (kernel falls back to row index if the field is absent).
@@ -157,7 +157,6 @@ var FixedHolder = /*#__PURE__*/React.forwardRef(function (props, ref) {
157
157
  style: {
158
158
  tableLayout: tableLayout,
159
159
  minWidth: '100%',
160
- // https://github.com/ant-design/ant-design/issues/54894
161
160
  width: scrollX
162
161
  },
163
162
  children: [isColGroupEmpty ? colGroup : _jsx(ColGroup, {
@@ -178,4 +177,4 @@ if (process.env.NODE_ENV !== 'production') {
178
177
  /** Return a table in div as fixed element which contains sticky info */
179
178
  // export default responseImmutable(FixedHolder);
180
179
  export default /*#__PURE__*/React.memo(FixedHolder);
181
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0ZpeGVkSG9sZGVyL2luZGV4LmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvc3JjL2NvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0ZpeGVkSG9sZGVyL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJ1c2VDb250ZXh0IiwiY2xzeCIsImZpbGxSZWYiLCJSZWFjdCIsInVzZU1lbW8iLCJDb2xHcm91cCIsIlRhYmxlQ29udGV4dCIsImRldlJlbmRlclRpbWVzIiwidXNlQ29sdW1uV2lkdGgiLCJjb2xXaWR0aHMiLCJjb2x1bUNvdW50IiwiY2xvbmVDb2x1bW5zIiwidmFsIiwidW5kZWZpbmVkIiwiam9pbiIsIkZpeGVkSG9sZGVyIiwiZm9yd2FyZFJlZiIsInByb3BzIiwicmVmIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJub0RhdGEiLCJjb2x1bW5zIiwiZmxhdHRlbkNvbHVtbnMiLCJjb2xHcm91cCIsInN0aWNreU9mZnNldHMiLCJkaXJlY3Rpb24iLCJmaXhIZWFkZXIiLCJzdGlja3lUb3BPZmZzZXQiLCJzdGlja3lCb3R0b21PZmZzZXQiLCJzdGlja3lDbGFzc05hbWUiLCJzY3JvbGxYIiwiX3Byb3BzJHRhYmxlTGF5b3V0IiwidGFibGVMYXlvdXQiLCJvblNjcm9sbCIsIm1heENvbnRlbnRTY3JvbGwiLCJjaGlsZHJlbiIsInJlc3RQcm9wcyIsIl91c2VDb250ZXh0IiwicHJlZml4Q2xzIiwic2Nyb2xsYmFyU2l6ZSIsImlzU3RpY2t5IiwiZ2V0Q29tcG9uZW50IiwiVGFibGVDb21wb25lbnQiLCJjb21iaW5hdGlvblNjcm9sbEJhclNpemUiLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJzZXRTY3JvbGxSZWYiLCJ1c2VDYWxsYmFjayIsImVsZW1lbnQiLCJ1c2VFZmZlY3QiLCJvbldoZWVsIiwiY3VycmVudFRhcmdldCIsImRlbHRhWCIsInNjcm9sbExlZnQiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwibWF4U2Nyb2xsV2lkdGgiLCJuZXh0U2Nyb2xsIiwiTWF0aCIsIm1heCIsIm1pbiIsInByZXZlbnREZWZhdWx0Iiwic2Nyb2xsRWxlIiwiY3VycmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXNzaXZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxhc3RDb2x1bW4iLCJTY3JvbGxCYXJDb2x1bW4iLCJmaXhlZCIsInNjcm9sbGJhciIsIm9uSGVhZGVyQ2VsbCIsImNvbmNhdCIsImNvbHVtbnNXaXRoU2Nyb2xsYmFyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyIiwiaGVhZGVyU3RpY2t5T2Zmc2V0cyIsInN0YXJ0IiwiZW5kIiwiYXNzaWduIiwibWFwIiwid2lkdGgiLCJtZXJnZWRDb2x1bW5XaWR0aCIsImlzQ29sR3JvdXBFbXB0eSIsIm5vV2lkdGgiLCJldmVyeSIsInciLCJvdmVyZmxvdyIsInRvcCIsImJvdHRvbSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1pbldpZHRoIiwiZGlzcGxheU5hbWUiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0Ms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QmUsT0FBTyxFQUFFc0Q7TUFBMkIsQ0FBQSxDQUV2QyxFQUNBeEMsUUFBUSxDQUFBcEQsTUFBQSxDQUFBZ0csTUFBQSxDQUFBaEcsTUFBQSxDQUFBZ0csTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUNKM0MsU0FBUyxDQUFBLEVBQUE7UUFDWlosYUFBYSxFQUFFb0QsbUJBQW1CO1FBQ2xDdkQsT0FBTyxFQUFFb0Qsb0JBQW9CO1FBQzdCbkQsY0FBYyxFQUFFcUQ7TUFBMkIsQ0FBQSxDQUFBLENBQzNDO0lBQUEsQ0FBQTtFQUNhLENBQUEsQ0FDYjtBQUVWLENBQUMsQ0FBQztBQUVGLElBQUk1RCxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtFQUN6Q04sV0FBVyxDQUFDaUYsV0FBVyxHQUFHLGFBQWE7QUFDekM7QUFFQTtBQUNBO0FBQ0EsNEJBQWU3RixLQUFLLENBQUM4RixJQUFJLENBQUNsRixXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvRml4ZWRIb2xkZXIvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICcuLi9zZWxlY3Rvci1jb250ZXh0JztcbmltcG9ydCB7IGNsc3ggfSBmcm9tICdjbHN4JztcbmltcG9ydCB7IGZpbGxSZWYgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscy9yZWYnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb2xHcm91cCBmcm9tICcuLi9Db2xHcm91cCc7XG5pbXBvcnQgVGFibGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvVGFibGVDb250ZXh0JztcbmltcG9ydCBkZXZSZW5kZXJUaW1lcyBmcm9tICcuLi9ob29rcy91c2VSZW5kZXJUaW1lcyc7XG5mdW5jdGlvbiB1c2VDb2x1bW5XaWR0aChjb2xXaWR0aHMsIGNvbHVtQ291bnQpIHtcbiAgICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lQ29sdW1ucyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtQ291bnQ7IGkgKz0gMSkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gY29sV2lkdGhzW2ldO1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY2xvbmVDb2x1bW5zW2ldID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lQ29sdW1ucztcbiAgICB9LCBbY29sV2lkdGhzLmpvaW4oJ18nKSwgY29sdW1Db3VudF0pO1xufVxuY29uc3QgRml4ZWRIb2xkZXIgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZGV2UmVuZGVyVGltZXMocHJvcHMpO1xuICAgIH1cbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgc3R5bGUsIG5vRGF0YSwgY29sdW1ucywgZmxhdHRlbkNvbHVtbnMsIGNvbFdpZHRocywgY29sR3JvdXAsIGNvbHVtQ291bnQsIHN0aWNreU9mZnNldHMsIGRpcmVjdGlvbiwgZml4SGVhZGVyLCBzdGlja3lUb3BPZmZzZXQsIHN0aWNreUJvdHRvbU9mZnNldCwgc3RpY2t5Q2xhc3NOYW1lLCBzY3JvbGxYLCB0YWJsZUxheW91dCA9ICdmaXhlZCcsIG9uU2Nyb2xsLCBtYXhDb250ZW50U2Nyb2xsLCBjaGlsZHJlbiB9ID0gcHJvcHMsIHJlc3RQcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJub0RhdGFcIiwgXCJjb2x1bW5zXCIsIFwiZmxhdHRlbkNvbHVtbnNcIiwgXCJjb2xXaWR0aHNcIiwgXCJjb2xHcm91cFwiLCBcImNvbHVtQ291bnRcIiwgXCJzdGlja3lPZmZzZXRzXCIsIFwiZGlyZWN0aW9uXCIsIFwiZml4SGVhZGVyXCIsIFwic3RpY2t5VG9wT2Zmc2V0XCIsIFwic3RpY2t5Qm90dG9tT2Zmc2V0XCIsIFwic3RpY2t5Q2xhc3NOYW1lXCIsIFwic2Nyb2xsWFwiLCBcInRhYmxlTGF5b3V0XCIsIFwib25TY3JvbGxcIiwgXCJtYXhDb250ZW50U2Nyb2xsXCIsIFwiY2hpbGRyZW5cIl0pO1xuICAgIGNvbnN0IHsgcHJlZml4Q2xzLCBzY3JvbGxiYXJTaXplLCBpc1N0aWNreSwgZ2V0Q29tcG9uZW50IH0gPSB1c2VDb250ZXh0KFRhYmxlQ29udGV4dCwgW1xuICAgICAgICAncHJlZml4Q2xzJyxcbiAgICAgICAgJ3Njcm9sbGJhclNpemUnLFxuICAgICAgICAnaXNTdGlja3knLFxuICAgICAgICAnZ2V0Q29tcG9uZW50JyxcbiAgICBdKTtcbiAgICBjb25zdCBUYWJsZUNvbXBvbmVudCA9IGdldENvbXBvbmVudChbJ2hlYWRlcicsICd0YWJsZSddLCAndGFibGUnKTtcbiAgICBjb25zdCBjb21iaW5hdGlvblNjcm9sbEJhclNpemUgPSBpc1N0aWNreSAmJiAhZml4SGVhZGVyID8gMCA6IHNjcm9sbGJhclNpemU7XG4gICAgLy8gUGFzcyB3aGVlbCB0byBzY3JvbGwgZXZlbnRcbiAgICBjb25zdCBzY3JvbGxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgc2V0U2Nyb2xsUmVmID0gUmVhY3QudXNlQ2FsbGJhY2soKGVsZW1lbnQpID0+IHtcbiAgICAgICAgZmlsbFJlZihyZWYsIGVsZW1lbnQpO1xuICAgICAgICBmaWxsUmVmKHNjcm9sbFJlZiwgZWxlbWVudCk7XG4gICAgfSwgW10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50VGFyZ2V0LCBkZWx0YVggfSA9IGU7XG4gICAgICAgICAgICBpZiAoZGVsdGFYKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggfSA9IGN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4U2Nyb2xsV2lkdGggPSBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2Nyb2xsID0gc2Nyb2xsTGVmdCArIGRlbHRhWDtcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0U2Nyb2xsID0gTWF0aC5tYXgoLW1heFNjcm9sbFdpZHRoLCBuZXh0U2Nyb2xsKTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNjcm9sbCA9IE1hdGgubWluKDAsIG5leHRTY3JvbGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNjcm9sbCA9IE1hdGgubWluKG1heFNjcm9sbFdpZHRoLCBuZXh0U2Nyb2xsKTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNjcm9sbCA9IE1hdGgubWF4KDAsIG5leHRTY3JvbGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvblNjcm9sbCh7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IG5leHRTY3JvbGwsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcm9sbEVsZSA9IHNjcm9sbFJlZi5jdXJyZW50O1xuICAgICAgICBzY3JvbGxFbGUgPT09IG51bGwgfHwgc2Nyb2xsRWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY3JvbGxFbGUuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBvbldoZWVsLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgc2Nyb2xsRWxlID09PSBudWxsIHx8IHNjcm9sbEVsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2Nyb2xsRWxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIC8vIEFkZCBzY3JvbGxiYXIgY29sdW1uXG4gICAgY29uc3QgbGFzdENvbHVtbiA9IGZsYXR0ZW5Db2x1bW5zW2ZsYXR0ZW5Db2x1bW5zLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IFNjcm9sbEJhckNvbHVtbiA9IHtcbiAgICAgICAgZml4ZWQ6IGxhc3RDb2x1bW4gPyBsYXN0Q29sdW1uLmZpeGVkIDogbnVsbCxcbiAgICAgICAgc2Nyb2xsYmFyOiB0cnVlLFxuICAgICAgICBvbkhlYWRlckNlbGw6ICgpID0+ICh7XG4gICAgICAgICAgICBjbGFzc05hbWU6IGAke3ByZWZpeENsc30tY2VsbC1zY3JvbGxiYXJgLFxuICAgICAgICB9KSxcbiAgICB9O1xuICAgIGNvbnN0IGNvbHVtbnNXaXRoU2Nyb2xsYmFyID0gdXNlTWVtbygoKSA9PiAoY29tYmluYXRpb25TY3JvbGxCYXJTaXplID8gWy4uLmNvbHVtbnMsIFNjcm9sbEJhckNvbHVtbl0gOiBjb2x1bW5zKSwgW2NvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSwgY29sdW1uc10pO1xuICAgIGNvbnN0IGZsYXR0ZW5Db2x1bW5zV2l0aFNjcm9sbGJhciA9IHVzZU1lbW8oKCkgPT4gKGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSA/IFsuLi5mbGF0dGVuQ29sdW1ucywgU2Nyb2xsQmFyQ29sdW1uXSA6IGZsYXR0ZW5Db2x1bW5zKSwgW2NvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSwgZmxhdHRlbkNvbHVtbnNdKTtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIHN0aWNreSBvZmZzZXRzXG4gICAgY29uc3QgaGVhZGVyU3RpY2t5T2Zmc2V0cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHN0aWNreU9mZnNldHM7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0aWNreU9mZnNldHMpLCB7IFxuICAgICAgICAgICAgLy8gbGVmdDpcbiAgICAgICAgICAgIC8vICAgZGlyZWN0aW9uID09PSAncnRsJyA/IFsuLi5sZWZ0Lm1hcCh3aWR0aCA9PiB3aWR0aCArIGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSksIDBdIDogbGVmdCxcbiAgICAgICAgICAgIC8vIHJpZ2h0OlxuICAgICAgICAgICAgLy8gICBkaXJlY3Rpb24gPT09ICdydGwnID8gcmlnaHQgOiBbLi4ucmlnaHQubWFwKHdpZHRoID0+IHdpZHRoICsgY29tYmluYXRpb25TY3JvbGxCYXJTaXplKSwgMF0sXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsIGVuZDogWy4uLmVuZC5tYXAod2lkdGggPT4gd2lkdGggKyBjb21iaW5hdGlvblNjcm9sbEJhclNpemUpLCAwXSwgaXNTdGlja3kgfSk7XG4gICAgfSwgW2NvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSwgc3RpY2t5T2Zmc2V0cywgaXNTdGlja3ldKTtcbiAgICBjb25zdCBtZXJnZWRDb2x1bW5XaWR0aCA9IHVzZUNvbHVtbldpZHRoKGNvbFdpZHRocywgY29sdW1Db3VudCk7XG4gICAgY29uc3QgaXNDb2xHcm91cEVtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIC8vIHVzZSBvcmlnaW5hbCBDb2xHcm91cCBpZiBubyBkYXRhIG9yIG5vIGNhbGN1bGF0ZWQgY29sdW1uIHdpZHRoLCBvdGhlcndpc2UgdXNlIGNhbGN1bGF0ZWQgY29sdW1uIHdpZHRoXG4gICAgICAgIC8vIFJldHVybiBvcmlnaW5hbCBjb2xHcm91cCBpZiBubyBkYXRhLCBvciBtZXJnZWRDb2x1bW5XaWR0aCBpcyBlbXB0eSwgb3IgYWxsIHdpZHRocyBhcmUgZmFsc3lcbiAgICAgICAgY29uc3Qgbm9XaWR0aCA9ICFtZXJnZWRDb2x1bW5XaWR0aCB8fCAhbWVyZ2VkQ29sdW1uV2lkdGgubGVuZ3RoIHx8IG1lcmdlZENvbHVtbldpZHRoLmV2ZXJ5KHcgPT4gIXcpO1xuICAgICAgICByZXR1cm4gbm9EYXRhIHx8IG5vV2lkdGg7XG4gICAgfSwgW25vRGF0YSwgbWVyZ2VkQ29sdW1uV2lkdGhdKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgb3ZlcmZsb3c6ICdoaWRkZW4nIH0sIChpc1N0aWNreSA/IHsgdG9wOiBzdGlja3lUb3BPZmZzZXQsIGJvdHRvbTogc3RpY2t5Qm90dG9tT2Zmc2V0IH0gOiB7fSkpLCBzdHlsZSksIHJlZjogc2V0U2Nyb2xsUmVmLCBjbGFzc05hbWU6IGNsc3goY2xhc3NOYW1lLCB7XG4gICAgICAgICAgICBbc3RpY2t5Q2xhc3NOYW1lXTogISFzdGlja3lDbGFzc05hbWUsXG4gICAgICAgIH0pLCBjaGlsZHJlbjogX2pzeHMoVGFibGVDb21wb25lbnQsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICB0YWJsZUxheW91dCxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnQtZGVzaWduL2FudC1kZXNpZ24vaXNzdWVzLzU0ODk0XG4gICAgICAgICAgICAgICAgd2lkdGg6IHNjcm9sbFgsXG4gICAgICAgICAgICB9LCBjaGlsZHJlbjogW2lzQ29sR3JvdXBFbXB0eSA/IChjb2xHcm91cCkgOiAoX2pzeChDb2xHcm91cCwgeyBjb2xXaWR0aHM6IFsuLi5tZXJnZWRDb2x1bW5XaWR0aCwgY29tYmluYXRpb25TY3JvbGxCYXJTaXplXSwgY29sdW1Db3VudDogY29sdW1Db3VudCArIDEsIGNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zV2l0aFNjcm9sbGJhciB9KSksIGNoaWxkcmVuKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcmVzdFByb3BzKSwgeyBzdGlja3lPZmZzZXRzOiBoZWFkZXJTdGlja3lPZmZzZXRzLCBjb2x1bW5zOiBjb2x1bW5zV2l0aFNjcm9sbGJhciwgZmxhdHRlbkNvbHVtbnM6IGZsYXR0ZW5Db2x1bW5zV2l0aFNjcm9sbGJhciB9KSldIH0pIH0pKTtcbn0pO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBGaXhlZEhvbGRlci5kaXNwbGF5TmFtZSA9ICdGaXhlZEhvbGRlcic7XG59XG4vKiogUmV0dXJuIGEgdGFibGUgaW4gZGl2IGFzIGZpeGVkIGVsZW1lbnQgd2hpY2ggY29udGFpbnMgc3RpY2t5IGluZm8gKi9cbi8vIGV4cG9ydCBkZWZhdWx0IHJlc3BvbnNlSW1tdXRhYmxlKEZpeGVkSG9sZGVyKTtcbmV4cG9ydCBkZWZhdWx0IFJlYWN0Lm1lbW8oRml4ZWRIb2xkZXIpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
180
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0ZpeGVkSG9sZGVyL2luZGV4LmpzIiwiY29tcG9uZW50cy9UYWJsZS9pbnRlcm5hbC9rZXJuZWwvc3JjL2NvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0ZpeGVkSG9sZGVyL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJ1c2VDb250ZXh0IiwiY2xzeCIsImZpbGxSZWYiLCJSZWFjdCIsInVzZU1lbW8iLCJDb2xHcm91cCIsIlRhYmxlQ29udGV4dCIsImRldlJlbmRlclRpbWVzIiwidXNlQ29sdW1uV2lkdGgiLCJjb2xXaWR0aHMiLCJjb2x1bUNvdW50IiwiY2xvbmVDb2x1bW5zIiwidmFsIiwidW5kZWZpbmVkIiwiam9pbiIsIkZpeGVkSG9sZGVyIiwiZm9yd2FyZFJlZiIsInByb3BzIiwicmVmIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJub0RhdGEiLCJjb2x1bW5zIiwiZmxhdHRlbkNvbHVtbnMiLCJjb2xHcm91cCIsInN0aWNreU9mZnNldHMiLCJkaXJlY3Rpb24iLCJmaXhIZWFkZXIiLCJzdGlja3lUb3BPZmZzZXQiLCJzdGlja3lCb3R0b21PZmZzZXQiLCJzdGlja3lDbGFzc05hbWUiLCJzY3JvbGxYIiwiX3Byb3BzJHRhYmxlTGF5b3V0IiwidGFibGVMYXlvdXQiLCJvblNjcm9sbCIsIm1heENvbnRlbnRTY3JvbGwiLCJjaGlsZHJlbiIsInJlc3RQcm9wcyIsIl91c2VDb250ZXh0IiwicHJlZml4Q2xzIiwic2Nyb2xsYmFyU2l6ZSIsImlzU3RpY2t5IiwiZ2V0Q29tcG9uZW50IiwiVGFibGVDb21wb25lbnQiLCJjb21iaW5hdGlvblNjcm9sbEJhclNpemUiLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJzZXRTY3JvbGxSZWYiLCJ1c2VDYWxsYmFjayIsImVsZW1lbnQiLCJ1c2VFZmZlY3QiLCJvbldoZWVsIiwiY3VycmVudFRhcmdldCIsImRlbHRhWCIsInNjcm9sbExlZnQiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwibWF4U2Nyb2xsV2lkdGgiLCJuZXh0U2Nyb2xsIiwiTWF0aCIsIm1heCIsIm1pbiIsInByZXZlbnREZWZhdWx0Iiwic2Nyb2xsRWxlIiwiY3VycmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXNzaXZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxhc3RDb2x1bW4iLCJTY3JvbGxCYXJDb2x1bW4iLCJmaXhlZCIsInNjcm9sbGJhciIsIm9uSGVhZGVyQ2VsbCIsImNvbmNhdCIsImNvbHVtbnNXaXRoU2Nyb2xsYmFyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyIiwiaGVhZGVyU3RpY2t5T2Zmc2V0cyIsInN0YXJ0IiwiZW5kIiwiYXNzaWduIiwibWFwIiwid2lkdGgiLCJtZXJnZWRDb2x1bW5XaWR0aCIsImlzQ29sR3JvdXBFbXB0eSIsIm5vV2lkdGgiLCJldmVyeSIsInciLCJvdmVyZmxvdyIsInRvcCIsImJvdHRvbSIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1pbldpZHRoIiwiZGlzcGxheU5hbWUiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0Ms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QU8sRUFBRXNEO01BQTJCLENBQUEsQ0FFdkMsRUFDQXhDLFFBQVEsQ0FBQXBELE1BQUEsQ0FBQWdHLE1BQUEsQ0FBQWhHLE1BQUEsQ0FBQWdHLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDSjNDLFNBQVMsQ0FBQSxFQUFBO1FBQ1paLGFBQWEsRUFBRW9ELG1CQUFtQjtRQUNsQ3ZELE9BQU8sRUFBRW9ELG9CQUFvQjtRQUM3Qm5ELGNBQWMsRUFBRXFEO01BQTJCLENBQUEsQ0FBQSxDQUMzQztJQUFBLENBQUE7RUFDYSxDQUFBLENBQ2I7QUFFVixDQUFDLENBQUM7QUFFRixJQUFJNUQsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLEVBQUU7RUFDekNOLFdBQVcsQ0FBQ2lGLFdBQVcsR0FBRyxhQUFhO0FBQ3pDO0FBRUE7QUFDQTtBQUNBLDRCQUFlN0YsS0FBSyxDQUFDOEYsSUFBSSxDQUFDbEYsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvaW50ZXJuYWwva2VybmVsL0ZpeGVkSG9sZGVyL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAnLi4vc2VsZWN0b3ItY29udGV4dCc7XG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBmaWxsUmVmIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbHMvcmVmJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29sR3JvdXAgZnJvbSAnLi4vQ29sR3JvdXAnO1xuaW1wb3J0IFRhYmxlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1RhYmxlQ29udGV4dCc7XG5pbXBvcnQgZGV2UmVuZGVyVGltZXMgZnJvbSAnLi4vaG9va3MvdXNlUmVuZGVyVGltZXMnO1xuZnVuY3Rpb24gdXNlQ29sdW1uV2lkdGgoY29sV2lkdGhzLCBjb2x1bUNvdW50KSB7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBjbG9uZUNvbHVtbnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bUNvdW50OyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGNvbFdpZHRoc1tpXTtcbiAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNsb25lQ29sdW1uc1tpXSA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbG9uZUNvbHVtbnM7XG4gICAgfSwgW2NvbFdpZHRocy5qb2luKCdfJyksIGNvbHVtQ291bnRdKTtcbn1cbmNvbnN0IEZpeGVkSG9sZGVyID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRldlJlbmRlclRpbWVzKHByb3BzKTtcbiAgICB9XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIHN0eWxlLCBub0RhdGEsIGNvbHVtbnMsIGZsYXR0ZW5Db2x1bW5zLCBjb2xXaWR0aHMsIGNvbEdyb3VwLCBjb2x1bUNvdW50LCBzdGlja3lPZmZzZXRzLCBkaXJlY3Rpb24sIGZpeEhlYWRlciwgc3RpY2t5VG9wT2Zmc2V0LCBzdGlja3lCb3R0b21PZmZzZXQsIHN0aWNreUNsYXNzTmFtZSwgc2Nyb2xsWCwgdGFibGVMYXlvdXQgPSAnZml4ZWQnLCBvblNjcm9sbCwgbWF4Q29udGVudFNjcm9sbCwgY2hpbGRyZW4gfSA9IHByb3BzLCByZXN0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwibm9EYXRhXCIsIFwiY29sdW1uc1wiLCBcImZsYXR0ZW5Db2x1bW5zXCIsIFwiY29sV2lkdGhzXCIsIFwiY29sR3JvdXBcIiwgXCJjb2x1bUNvdW50XCIsIFwic3RpY2t5T2Zmc2V0c1wiLCBcImRpcmVjdGlvblwiLCBcImZpeEhlYWRlclwiLCBcInN0aWNreVRvcE9mZnNldFwiLCBcInN0aWNreUJvdHRvbU9mZnNldFwiLCBcInN0aWNreUNsYXNzTmFtZVwiLCBcInNjcm9sbFhcIiwgXCJ0YWJsZUxheW91dFwiLCBcIm9uU2Nyb2xsXCIsIFwibWF4Q29udGVudFNjcm9sbFwiLCBcImNoaWxkcmVuXCJdKTtcbiAgICBjb25zdCB7IHByZWZpeENscywgc2Nyb2xsYmFyU2l6ZSwgaXNTdGlja3ksIGdldENvbXBvbmVudCB9ID0gdXNlQ29udGV4dChUYWJsZUNvbnRleHQsIFtcbiAgICAgICAgJ3ByZWZpeENscycsXG4gICAgICAgICdzY3JvbGxiYXJTaXplJyxcbiAgICAgICAgJ2lzU3RpY2t5JyxcbiAgICAgICAgJ2dldENvbXBvbmVudCcsXG4gICAgXSk7XG4gICAgY29uc3QgVGFibGVDb21wb25lbnQgPSBnZXRDb21wb25lbnQoWydoZWFkZXInLCAndGFibGUnXSwgJ3RhYmxlJyk7XG4gICAgY29uc3QgY29tYmluYXRpb25TY3JvbGxCYXJTaXplID0gaXNTdGlja3kgJiYgIWZpeEhlYWRlciA/IDAgOiBzY3JvbGxiYXJTaXplO1xuICAgIC8vIFBhc3Mgd2hlZWwgdG8gc2Nyb2xsIGV2ZW50XG4gICAgY29uc3Qgc2Nyb2xsUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNldFNjcm9sbFJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGZpbGxSZWYocmVmLCBlbGVtZW50KTtcbiAgICAgICAgZmlsbFJlZihzY3JvbGxSZWYsIGVsZW1lbnQpO1xuICAgIH0sIFtdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmdW5jdGlvbiBvbldoZWVsKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgZGVsdGFYIH0gPSBlO1xuICAgICAgICAgICAgaWYgKGRlbHRhWCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGgsIGNsaWVudFdpZHRoIH0gPSBjdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFNjcm9sbFdpZHRoID0gc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dFNjcm9sbCA9IHNjcm9sbExlZnQgKyBkZWx0YVg7XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFNjcm9sbCA9IE1hdGgubWF4KC1tYXhTY3JvbGxXaWR0aCwgbmV4dFNjcm9sbCk7XG4gICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGwgPSBNYXRoLm1pbigwLCBuZXh0U2Nyb2xsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGwgPSBNYXRoLm1pbihtYXhTY3JvbGxXaWR0aCwgbmV4dFNjcm9sbCk7XG4gICAgICAgICAgICAgICAgICAgIG5leHRTY3JvbGwgPSBNYXRoLm1heCgwLCBuZXh0U2Nyb2xsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25TY3JvbGwoe1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiBuZXh0U2Nyb2xsLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3JvbGxFbGUgPSBzY3JvbGxSZWYuY3VycmVudDtcbiAgICAgICAgc2Nyb2xsRWxlID09PSBudWxsIHx8IHNjcm9sbEVsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2Nyb2xsRWxlLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHNjcm9sbEVsZSA9PT0gbnVsbCB8fCBzY3JvbGxFbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjcm9sbEVsZS5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICAvLyBBZGQgc2Nyb2xsYmFyIGNvbHVtblxuICAgIGNvbnN0IGxhc3RDb2x1bW4gPSBmbGF0dGVuQ29sdW1uc1tmbGF0dGVuQ29sdW1ucy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBTY3JvbGxCYXJDb2x1bW4gPSB7XG4gICAgICAgIGZpeGVkOiBsYXN0Q29sdW1uID8gbGFzdENvbHVtbi5maXhlZCA6IG51bGwsXG4gICAgICAgIHNjcm9sbGJhcjogdHJ1ZSxcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoKSA9PiAoe1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LWNlbGwtc2Nyb2xsYmFyYCxcbiAgICAgICAgfSksXG4gICAgfTtcbiAgICBjb25zdCBjb2x1bW5zV2l0aFNjcm9sbGJhciA9IHVzZU1lbW8oKCkgPT4gKGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSA/IFsuLi5jb2x1bW5zLCBTY3JvbGxCYXJDb2x1bW5dIDogY29sdW1ucyksIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIGNvbHVtbnNdKTtcbiAgICBjb25zdCBmbGF0dGVuQ29sdW1uc1dpdGhTY3JvbGxiYXIgPSB1c2VNZW1vKCgpID0+IChjb21iaW5hdGlvblNjcm9sbEJhclNpemUgPyBbLi4uZmxhdHRlbkNvbHVtbnMsIFNjcm9sbEJhckNvbHVtbl0gOiBmbGF0dGVuQ29sdW1ucyksIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIGZsYXR0ZW5Db2x1bW5zXSk7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBzdGlja3kgb2Zmc2V0c1xuICAgIGNvbnN0IGhlYWRlclN0aWNreU9mZnNldHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBzdGlja3lPZmZzZXRzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGlja3lPZmZzZXRzKSwgeyBcbiAgICAgICAgICAgIC8vIGxlZnQ6XG4gICAgICAgICAgICAvLyAgIGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyBbLi4ubGVmdC5tYXAod2lkdGggPT4gd2lkdGggKyBjb21iaW5hdGlvblNjcm9sbEJhclNpemUpLCAwXSA6IGxlZnQsXG4gICAgICAgICAgICAvLyByaWdodDpcbiAgICAgICAgICAgIC8vICAgZGlyZWN0aW9uID09PSAncnRsJyA/IHJpZ2h0IDogWy4uLnJpZ2h0Lm1hcCh3aWR0aCA9PiB3aWR0aCArIGNvbWJpbmF0aW9uU2Nyb2xsQmFyU2l6ZSksIDBdLFxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LCBlbmQ6IFsuLi5lbmQubWFwKHdpZHRoID0+IHdpZHRoICsgY29tYmluYXRpb25TY3JvbGxCYXJTaXplKSwgMF0sIGlzU3RpY2t5IH0pO1xuICAgIH0sIFtjb21iaW5hdGlvblNjcm9sbEJhclNpemUsIHN0aWNreU9mZnNldHMsIGlzU3RpY2t5XSk7XG4gICAgY29uc3QgbWVyZ2VkQ29sdW1uV2lkdGggPSB1c2VDb2x1bW5XaWR0aChjb2xXaWR0aHMsIGNvbHVtQ291bnQpO1xuICAgIGNvbnN0IGlzQ29sR3JvdXBFbXB0eSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyB1c2Ugb3JpZ2luYWwgQ29sR3JvdXAgaWYgbm8gZGF0YSBvciBubyBjYWxjdWxhdGVkIGNvbHVtbiB3aWR0aCwgb3RoZXJ3aXNlIHVzZSBjYWxjdWxhdGVkIGNvbHVtbiB3aWR0aFxuICAgICAgICAvLyBSZXR1cm4gb3JpZ2luYWwgY29sR3JvdXAgaWYgbm8gZGF0YSwgb3IgbWVyZ2VkQ29sdW1uV2lkdGggaXMgZW1wdHksIG9yIGFsbCB3aWR0aHMgYXJlIGZhbHN5XG4gICAgICAgIGNvbnN0IG5vV2lkdGggPSAhbWVyZ2VkQ29sdW1uV2lkdGggfHwgIW1lcmdlZENvbHVtbldpZHRoLmxlbmd0aCB8fCBtZXJnZWRDb2x1bW5XaWR0aC5ldmVyeSh3ID0+ICF3KTtcbiAgICAgICAgcmV0dXJuIG5vRGF0YSB8fCBub1dpZHRoO1xuICAgIH0sIFtub0RhdGEsIG1lcmdlZENvbHVtbldpZHRoXSk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IG92ZXJmbG93OiAnaGlkZGVuJyB9LCAoaXNTdGlja3kgPyB7IHRvcDogc3RpY2t5VG9wT2Zmc2V0LCBib3R0b206IHN0aWNreUJvdHRvbU9mZnNldCB9IDoge30pKSwgc3R5bGUpLCByZWY6IHNldFNjcm9sbFJlZiwgY2xhc3NOYW1lOiBjbHN4KGNsYXNzTmFtZSwge1xuICAgICAgICAgICAgW3N0aWNreUNsYXNzTmFtZV06ICEhc3RpY2t5Q2xhc3NOYW1lLFxuICAgICAgICB9KSwgY2hpbGRyZW46IF9qc3hzKFRhYmxlQ29tcG9uZW50LCB7IHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgdGFibGVMYXlvdXQsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogc2Nyb2xsWCxcbiAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbaXNDb2xHcm91cEVtcHR5ID8gKGNvbEdyb3VwKSA6IChfanN4KENvbEdyb3VwLCB7IGNvbFdpZHRoczogWy4uLm1lcmdlZENvbHVtbldpZHRoLCBjb21iaW5hdGlvblNjcm9sbEJhclNpemVdLCBjb2x1bUNvdW50OiBjb2x1bUNvdW50ICsgMSwgY29sdW1uczogZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyIH0pKSwgY2hpbGRyZW4oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN0UHJvcHMpLCB7IHN0aWNreU9mZnNldHM6IGhlYWRlclN0aWNreU9mZnNldHMsIGNvbHVtbnM6IGNvbHVtbnNXaXRoU2Nyb2xsYmFyLCBmbGF0dGVuQ29sdW1uczogZmxhdHRlbkNvbHVtbnNXaXRoU2Nyb2xsYmFyIH0pKV0gfSkgfSkpO1xufSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIEZpeGVkSG9sZGVyLmRpc3BsYXlOYW1lID0gJ0ZpeGVkSG9sZGVyJztcbn1cbi8qKiBSZXR1cm4gYSB0YWJsZSBpbiBkaXYgYXMgZml4ZWQgZWxlbWVudCB3aGljaCBjb250YWlucyBzdGlja3kgaW5mbyAqL1xuLy8gZXhwb3J0IGRlZmF1bHQgcmVzcG9uc2VJbW11dGFibGUoRml4ZWRIb2xkZXIpO1xuZXhwb3J0IGRlZmF1bHQgUmVhY3QubWVtbyhGaXhlZEhvbGRlcik7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9