@1money/component-ui 0.1.4-alpha.0 → 0.1.5-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/Table/VirtualTable.js +4 -2
- package/es/components/Table/core/useTableColumns.d.ts +2 -1
- package/es/components/Table/core/useTableColumns.js +24 -10
- package/es/components/Table/core/useTableSetup.js +11 -4
- package/es/components/Table/interface.d.ts +10 -0
- package/es/components/Table/renderers/BodyCell.d.ts +3 -2
- package/es/components/Table/renderers/BodyCell.js +11 -5
- package/es/components/Table/renderers/CellContent.d.ts +3 -2
- package/es/components/Table/renderers/CellContent.js +6 -4
- package/es/components/Table/size.d.ts +18 -0
- package/es/components/Table/size.js +50 -0
- package/es/components/Table/style/Table.css +26 -25
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/lib/components/Table/VirtualTable.js +4 -2
- package/lib/components/Table/core/useTableColumns.d.ts +2 -1
- package/lib/components/Table/core/useTableColumns.js +24 -10
- package/lib/components/Table/core/useTableSetup.js +11 -4
- package/lib/components/Table/interface.d.ts +10 -0
- package/lib/components/Table/renderers/BodyCell.d.ts +3 -2
- package/lib/components/Table/renderers/BodyCell.js +11 -5
- package/lib/components/Table/renderers/CellContent.d.ts +3 -2
- package/lib/components/Table/renderers/CellContent.js +6 -4
- package/lib/components/Table/size.d.ts +18 -0
- package/lib/components/Table/size.js +57 -0
- package/lib/components/Table/style/Table.css +26 -25
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +108 -6
- package/scripts/mcp-server/index.generated.json +188 -24
|
@@ -10,9 +10,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
import { forwardRef, memo } from 'react';
|
|
11
11
|
import { InternalRcVirtualTable as InternalRcVirtualTableRaw } from './internal';
|
|
12
12
|
import { useTableSetup } from './core/useTableSetup';
|
|
13
|
+
import { TABLE_DEFAULT_SIZE, TABLE_SIZE_CONFIG } from './size';
|
|
13
14
|
import { TableShell } from './renderers/TableShell';
|
|
14
15
|
var InternalRcVirtualTable = InternalRcVirtualTableRaw;
|
|
15
16
|
var VirtualTableInner = function VirtualTableInner(props, ref) {
|
|
17
|
+
var _a;
|
|
16
18
|
// `scroll` / `listItemHeight` are VirtualTable-specific and stripped before
|
|
17
19
|
// setup so they don't leak onto the wrapper div via `wrapperHtmlProps`. The
|
|
18
20
|
// virtual kernel needs the narrow numeric `scroll`, so it's passed explicitly
|
|
@@ -28,7 +30,7 @@ var VirtualTableInner = function VirtualTableInner(props, ref) {
|
|
|
28
30
|
prefixCls: setup.prefixCls,
|
|
29
31
|
className: setup.tableClassName,
|
|
30
32
|
scroll: scroll,
|
|
31
|
-
listItemHeight: listItemHeight,
|
|
33
|
+
listItemHeight: listItemHeight !== null && listItemHeight !== void 0 ? listItemHeight : TABLE_SIZE_CONFIG[(_a = rest.size) !== null && _a !== void 0 ? _a : TABLE_DEFAULT_SIZE].rowHeight,
|
|
32
34
|
columns: setup.renderedColumns,
|
|
33
35
|
data: setup.currentDataSource,
|
|
34
36
|
emptyText: setup.emptyText,
|
|
@@ -40,4 +42,4 @@ var VirtualTableBase = /*#__PURE__*/forwardRef(VirtualTableInner);
|
|
|
40
42
|
VirtualTableBase.displayName = 'VirtualTable';
|
|
41
43
|
export var VirtualTable = /*#__PURE__*/memo(VirtualTableBase);
|
|
42
44
|
export default VirtualTable;
|
|
43
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvVmlydHVhbFRhYmxlLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9UYWJsZS9WaXJ0dWFsVGFibGUudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImZvcndhcmRSZWYiLCJtZW1vIiwiSW50ZXJuYWxSY1ZpcnR1YWxUYWJsZSIsIkludGVybmFsUmNWaXJ0dWFsVGFibGVSYXciLCJ1c2VUYWJsZVNldHVwIiwiVEFCTEVfREVGQVVMVF9TSVpFIiwiVEFCTEVfU0laRV9DT05GSUciLCJUYWJsZVNoZWxsIiwiVmlydHVhbFRhYmxlSW5uZXIiLCJwcm9wcyIsInJlZiIsIl9hIiwic2Nyb2xsIiwibGlzdEl0ZW1IZWlnaHQiLCJyZXN0Iiwic2V0dXAiLCJjaGlsZHJlbiIsImFzc2lnbiIsImZvcndhcmRlZEtlcm5lbFByb3BzIiwicHJlZml4Q2xzIiwiY2xhc3NOYW1lIiwidGFibGVDbGFzc05hbWUiLCJzaXplIiwicm93SGVpZ2h0IiwiY29sdW1ucyIsInJlbmRlcmVkQ29sdW1ucyIsImRhdGEiLCJjdXJyZW50RGF0YVNvdXJjZSIsImVtcHR5VGV4dCIsImV4cGFuZGFibGUiLCJtZXJnZWRFeHBhbmRhYmxlIiwiVmlydHVhbFRhYmxlQmFzZSIsImRpc3BsYXlOYW1lIiwiVmlydHVhbFRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FB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QUFFZCxLQUFLLENBQUNlO0lBQWdCLENBQUEsQ0FBQTtFQUNsQyxDQUFBLENBQ1M7QUFFakIsQ0FBQztBQU1ELElBQU1DLGdCQUFnQixnQkFBRy9CLFVBQVUsQ0FBQ1EsaUJBQWlCLENBQStCO0FBRXBGdUIsZ0JBQWdCLENBQUNDLFdBQVcsR0FBRyxjQUFjO0FBRTdDLE9BQU8sSUFBTUMsWUFBWSxnQkFBR2hDLElBQUksQ0FBQzhCLGdCQUFnQixDQUErQjtBQUVoRixlQUFlRSxZQUFZIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvVmlydHVhbFRhYmxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYsIG1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJbnRlcm5hbFJjVmlydHVhbFRhYmxlIGFzIEludGVybmFsUmNWaXJ0dWFsVGFibGVSYXcgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IHVzZVRhYmxlU2V0dXAgfSBmcm9tICcuL2NvcmUvdXNlVGFibGVTZXR1cCc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1NJWkUsIFRBQkxFX1NJWkVfQ09ORklHIH0gZnJvbSAnLi9zaXplJztcbmltcG9ydCB7IFRhYmxlU2hlbGwgfSBmcm9tICcuL3JlbmRlcmVycy9UYWJsZVNoZWxsJztcbmNvbnN0IEludGVybmFsUmNWaXJ0dWFsVGFibGUgPSBJbnRlcm5hbFJjVmlydHVhbFRhYmxlUmF3O1xuY29uc3QgVmlydHVhbFRhYmxlSW5uZXIgPSAocHJvcHMsIHJlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAvLyBgc2Nyb2xsYCAvIGBsaXN0SXRlbUhlaWdodGAgYXJlIFZpcnR1YWxUYWJsZS1zcGVjaWZpYyBhbmQgc3RyaXBwZWQgYmVmb3JlXG4gICAgLy8gc2V0dXAgc28gdGhleSBkb24ndCBsZWFrIG9udG8gdGhlIHdyYXBwZXIgZGl2IHZpYSBgd3JhcHBlckh0bWxQcm9wc2AuIFRoZVxuICAgIC8vIHZpcnR1YWwga2VybmVsIG5lZWRzIHRoZSBuYXJyb3cgbnVtZXJpYyBgc2Nyb2xsYCwgc28gaXQncyBwYXNzZWQgZXhwbGljaXRseVxuICAgIC8vIHJhdGhlciB0aGFuIHRocm91Z2ggdGhlIHNoYXJlZCBgZm9yd2FyZGVkS2VybmVsUHJvcHNgLlxuICAgIGNvbnN0IHsgc2Nyb2xsLCBsaXN0SXRlbUhlaWdodCB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInNjcm9sbFwiLCBcImxpc3RJdGVtSGVpZ2h0XCJdKTtcbiAgICBjb25zdCBzZXR1cCA9IHVzZVRhYmxlU2V0dXAocmVzdCk7XG4gICAgcmV0dXJuIChfanN4KFRhYmxlU2hlbGwsIHsgc2V0dXA6IHNldHVwLCBjaGlsZHJlbjogX2pzeChJbnRlcm5hbFJjVmlydHVhbFRhYmxlLCBPYmplY3QuYXNzaWduKHt9LCBzZXR1cC5mb3J3YXJkZWRLZXJuZWxQcm9wcywgeyByZWY6IHJlZiwgcHJlZml4Q2xzOiBzZXR1cC5wcmVmaXhDbHMsIGNsYXNzTmFtZTogc2V0dXAudGFibGVDbGFzc05hbWUsIHNjcm9sbDogc2Nyb2xsLCBsaXN0SXRlbUhlaWdodDogbGlzdEl0ZW1IZWlnaHQgIT09IG51bGwgJiYgbGlzdEl0ZW1IZWlnaHQgIT09IHZvaWQgMCA/IGxpc3RJdGVtSGVpZ2h0IDogVEFCTEVfU0laRV9DT05GSUdbKF9hID0gcmVzdC5zaXplKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBUQUJMRV9ERUZBVUxUX1NJWkVdLnJvd0hlaWdodCwgY29sdW1uczogc2V0dXAucmVuZGVyZWRDb2x1bW5zLCBkYXRhOiBzZXR1cC5jdXJyZW50RGF0YVNvdXJjZSwgZW1wdHlUZXh0OiBzZXR1cC5lbXB0eVRleHQsIGV4cGFuZGFibGU6IHNldHVwLm1lcmdlZEV4cGFuZGFibGUgfSkpIH0pKTtcbn07XG5jb25zdCBWaXJ0dWFsVGFibGVCYXNlID0gZm9yd2FyZFJlZihWaXJ0dWFsVGFibGVJbm5lcik7XG5WaXJ0dWFsVGFibGVCYXNlLmRpc3BsYXlOYW1lID0gJ1ZpcnR1YWxUYWJsZSc7XG5leHBvcnQgY29uc3QgVmlydHVhbFRhYmxlID0gbWVtbyhWaXJ0dWFsVGFibGVCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFZpcnR1YWxUYWJsZTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { type Key } from 'react';
|
|
2
|
-
import type { TableCheckboxProps, TableColumnType, TableExpandableConfig, TableRecord, TableRowSelection, TableVariant } from '../interface';
|
|
2
|
+
import type { TableCheckboxProps, TableColumnType, TableExpandableConfig, TableRecord, TableRowSelection, TableSize, TableVariant } from '../interface';
|
|
3
3
|
import type { TableFilterState, TableSorterState, Updater } from './useTableDataPipeline';
|
|
4
4
|
import type { ColumnsType as InternalColumnsType } from '../internal/kernel/interface';
|
|
5
5
|
interface UseTableColumnsConfig<T extends TableRecord = TableRecord> {
|
|
6
6
|
columns: TableColumnType<T>[];
|
|
7
7
|
variant: TableVariant;
|
|
8
|
+
size: TableSize;
|
|
8
9
|
expandable?: TableExpandableConfig<T>;
|
|
9
10
|
mergedExpandedRowKeys: Key[];
|
|
10
11
|
triggerExpand: (key: Key, record: T) => void;
|
|
@@ -7,6 +7,7 @@ import { ExpandTrigger } from '../features/ExpandTrigger';
|
|
|
7
7
|
import { HeaderCell } from '../renderers/HeaderCell';
|
|
8
8
|
import { BodyCell } from '../renderers/BodyCell';
|
|
9
9
|
import { TABLE_DEFAULT_PREFIX } from '../constants';
|
|
10
|
+
import { TABLE_SIZE_CONFIG } from '../size';
|
|
10
11
|
import { isColumnGroup } from './columnUtil';
|
|
11
12
|
function makeExpandTransform(config) {
|
|
12
13
|
var expandable = config.expandable,
|
|
@@ -114,11 +115,16 @@ function makeHeaderTransform(config) {
|
|
|
114
115
|
var sorter = config.sorter,
|
|
115
116
|
setSorter = config.setSorter,
|
|
116
117
|
filters = config.filters,
|
|
117
|
-
setFilters = config.setFilters
|
|
118
|
+
setFilters = config.setFilters,
|
|
119
|
+
size = config.size;
|
|
118
120
|
return function (columns) {
|
|
119
121
|
return columns.map(function (column) {
|
|
120
122
|
var _a, _b;
|
|
121
|
-
if (isColumnGroup(column))
|
|
123
|
+
if (isColumnGroup(column)) {
|
|
124
|
+
return Object.assign(Object.assign({}, column), {
|
|
125
|
+
children: makeHeaderTransform(config)(column.children)
|
|
126
|
+
});
|
|
127
|
+
}
|
|
122
128
|
var isSortable = Boolean(column.sorter);
|
|
123
129
|
var activeOrder = sorter.columnKey === column.key ? (_a = sorter.order) !== null && _a !== void 0 ? _a : null : null;
|
|
124
130
|
var columnKey = column.key != null ? String(column.key) : undefined;
|
|
@@ -141,7 +147,9 @@ function makeHeaderTransform(config) {
|
|
|
141
147
|
return Object.assign(Object.assign({}, column), {
|
|
142
148
|
onHeaderCell: onHeaderCell,
|
|
143
149
|
title: column.renderHeader ? column.renderHeader({
|
|
144
|
-
column: column
|
|
150
|
+
column: column,
|
|
151
|
+
size: size,
|
|
152
|
+
fontSize: TABLE_SIZE_CONFIG[size].headerFontSize
|
|
145
153
|
}) : _jsx(HeaderCell, {
|
|
146
154
|
column: column,
|
|
147
155
|
sortOrder: activeOrder,
|
|
@@ -184,10 +192,14 @@ function makeSpacerTransform() {
|
|
|
184
192
|
}]);
|
|
185
193
|
};
|
|
186
194
|
}
|
|
187
|
-
function makeRenderTransform() {
|
|
195
|
+
function makeRenderTransform(size) {
|
|
188
196
|
return function (columns) {
|
|
189
197
|
return columns.map(function (column) {
|
|
190
|
-
if (isColumnGroup(column))
|
|
198
|
+
if (isColumnGroup(column)) {
|
|
199
|
+
return Object.assign(Object.assign({}, column), {
|
|
200
|
+
children: makeRenderTransform(size)(column.children)
|
|
201
|
+
});
|
|
202
|
+
}
|
|
191
203
|
return Object.assign(Object.assign({}, column), {
|
|
192
204
|
// BodyCell is intentionally CALLED as a function, not rendered as
|
|
193
205
|
// `<BodyCell />`. The kernel's `render` contract allows returning either
|
|
@@ -197,6 +209,7 @@ function makeRenderTransform() {
|
|
|
197
209
|
// break cell merging — do not "fix" this into an element.
|
|
198
210
|
render: function render(value, record, index) {
|
|
199
211
|
return BodyCell({
|
|
212
|
+
size: size,
|
|
200
213
|
column: column,
|
|
201
214
|
value: value,
|
|
202
215
|
record: record,
|
|
@@ -223,6 +236,7 @@ function makeRenderTransform() {
|
|
|
223
236
|
export function useTableColumns(config) {
|
|
224
237
|
var columns = config.columns,
|
|
225
238
|
variant = config.variant,
|
|
239
|
+
size = config.size,
|
|
226
240
|
expandable = config.expandable,
|
|
227
241
|
rowSelection = config.rowSelection,
|
|
228
242
|
mergedExpandedRowKeys = config.mergedExpandedRowKeys,
|
|
@@ -253,9 +267,9 @@ export function useTableColumns(config) {
|
|
|
253
267
|
// and intentional. Keep the lists in sync when adding inputs.
|
|
254
268
|
var baseUserColumns = useMemo(function () {
|
|
255
269
|
var cols = makeHeaderTransform(config)(columns);
|
|
256
|
-
cols = makeRenderTransform()(cols);
|
|
270
|
+
cols = makeRenderTransform(size)(cols);
|
|
257
271
|
return cols;
|
|
258
|
-
}, [columns, sorter, filters, setSorter, setFilters]);
|
|
272
|
+
}, [columns, size, sorter, filters, setSorter, setFilters]);
|
|
259
273
|
// The selection / expand prefix carries live selected/expanded state in its
|
|
260
274
|
// render output, which is the signal that re-renders the affected rows — so it
|
|
261
275
|
// must rebuild on every toggle. It is at most two columns, so this is cheap.
|
|
@@ -271,9 +285,9 @@ export function useTableColumns(config) {
|
|
|
271
285
|
// Run the prefix through the same header/render maps the user columns get so
|
|
272
286
|
// the final array is byte-for-byte the original single-pipeline output.
|
|
273
287
|
cols = makeHeaderTransform(config)(cols);
|
|
274
|
-
cols = makeRenderTransform()(cols);
|
|
288
|
+
cols = makeRenderTransform(size)(cols);
|
|
275
289
|
return cols;
|
|
276
|
-
}, [expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, getRowKey]);
|
|
290
|
+
}, [size, expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, getRowKey]);
|
|
277
291
|
return useMemo(function () {
|
|
278
292
|
var cols = [].concat(_toConsumableArray(prefixColumns), _toConsumableArray(baseUserColumns));
|
|
279
293
|
if (variant === 'stroke') {
|
|
@@ -282,4 +296,4 @@ export function useTableColumns(config) {
|
|
|
282
296
|
return cols;
|
|
283
297
|
}, [prefixColumns, baseUserColumns, variant]);
|
|
284
298
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsIm1ha2VFeHBhbmRUcmFuc2Zvcm0iLCJjb25maWciLCJleHBhbmRhYmxlIiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsImdldFJvd0tleSIsImN1c3RvbUV4cGFuZEljb24iLCJleHBhbmRJY29uIiwicm93RXhwYW5kYWJsZSIsImV4cGFuZGVkS2V5U2V0IiwiU2V0IiwiY29sdW1ucyIsIl9hIiwia2V5IiwiY2xhc3NOYW1lIiwiRVhQQU5EX0NPTFVNTl9DTFMiLCJ3aWR0aCIsImNvbHVtbldpZHRoIiwidGl0bGUiLCJjb2x1bW5UaXRsZSIsImZpeGVkIiwidW5kZWZpbmVkIiwicmVuZGVyIiwiXyIsInJlY29yZCIsImluZGV4IiwiY2FuRXhwYW5kIiwicmVjb3JkS2V5IiwiZXhwYW5kZWQiLCJoYXMiLCJwcmVmaXhDbHMiLCJvbkV4cGFuZCIsInJlYyIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJvblRvZ2dsZSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0iLCJyb3dTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3RlZFJvd0tleXMiLCJjaGVja2JveFByb3BzTWFwIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyU2VsZWN0QWxsIiwic2VsZWN0aW9uVHlwZSIsInR5cGUiLCJzZWxlY3RlZEtleVNldCIsIk9iamVjdCIsImFzc2lnbiIsIlNFTEVDVElPTl9DT0xVTU5fQ0xTIiwicmVuZGVySGVhZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsInJvd1Byb3BzIiwiZ2V0IiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzb3J0ZXIiLCJzZXRTb3J0ZXIiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsIm1hcCIsImNvbHVtbiIsIl9iIiwiaXNTb3J0YWJsZSIsIkJvb2xlYW4iLCJhY3RpdmVPcmRlciIsImNvbHVtbktleSIsIlN0cmluZyIsImZpbHRlclNlbGVjdGVkIiwidXNlck9uSGVhZGVyQ2VsbCIsIm9uSGVhZGVyQ2VsbCIsImNvbCIsInVzZXJBdHRycyIsIm9uRmlsdGVyQ2hhbmdlIiwibmV4dCIsImN1cnJlbnQiLCJfZGVmaW5lUHJvcGVydHkiLCJsZW5ndGgiLCJzb3J0T3JkZXIiLCJvblNvcnRDbGljayIsImN1cnJlbnRTb3J0ZXIiLCJTUEFDRVJfQ09MVU1OX0NMUyIsIm1ha2VTcGFjZXJUcmFuc2Zvcm0iLCJtYWtlUmVuZGVyVHJhbnNmb3JtIiwidmFsdWUiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ2YXJpYW50IiwiYmFzZVVzZXJDb2x1bW5zIiwiY29scyIsInByZWZpeENvbHVtbnMiLCJzaG93RXhwYW5kQ29sdW1uIiwic2VsZWN0aW9uVHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxPQUFPLFFBQWtCLE9BQU87QUFDekMsU0FBU0MsZ0JBQWdCLEVBQUVDLHNCQUFzQixRQUFRLDZCQUE2QjtBQUN0RixTQUFTQyxhQUFhLFFBQVEsMkJBQTJCO0FBQ3pELFNBQVNDLFVBQVUsUUFBUSx5QkFBeUI7QUFDcEQsU0FBU0MsUUFBUSxRQUFRLHVCQUF1QjtBQUNoRCxT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TyxLQUFLLFFBQVEsRUFBRTtNQUN4QkUsSUFBSSxHQUFHTixtQkFBbUIsQ0FBQSxDQUFLLENBQUNNLElBQUksQ0FBQztJQUN2QztJQUNBLE9BQU9BLElBQXlDO0VBQ2xELENBQUMsRUFBRSxDQUFDQyxhQUFhLEVBQUVGLGVBQWUsRUFBRUQsT0FBTyxDQUFDLENBQUM7QUFDL0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlQ29sdW1ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbCwgU2VsZWN0aW9uSGVhZGVyQ29udHJvbCB9IGZyb20gJy4uL2ZlYXR1cmVzL1NlbGVjdGlvbkNvbHVtbic7XG5pbXBvcnQgeyBFeHBhbmRUcmlnZ2VyIH0gZnJvbSAnLi4vZmVhdHVyZXMvRXhwYW5kVHJpZ2dlcic7XG5pbXBvcnQgeyBIZWFkZXJDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0hlYWRlckNlbGwnO1xuaW1wb3J0IHsgQm9keUNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvQm9keUNlbGwnO1xuaW1wb3J0IHsgVEFCTEVfREVGQVVMVF9QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNDb2x1bW5Hcm91cCB9IGZyb20gJy4vY29sdW1uVXRpbCc7XG5mdW5jdGlvbiBtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgZXhwYW5kYWJsZSwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCB0cmlnZ2VyRXhwYW5kLCBnZXRSb3dLZXkgfSA9IGNvbmZpZztcbiAgICBjb25zdCBjdXN0b21FeHBhbmRJY29uID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZEljb247XG4gICAgY29uc3Qgcm93RXhwYW5kYWJsZSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgIC8vIE8oMSkgcGVyLXJvdyBleHBhbnNpb24gbG9va3VwIOKAlCBgLmluY2x1ZGVzYCBoZXJlIHJhbiBvbmNlIHBlciByZW5kZXJlZCByb3cuXG4gICAgY29uc3QgZXhwYW5kZWRLZXlTZXQgPSBuZXcgU2V0KG1lcmdlZEV4cGFuZGVkUm93S2V5cyk7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdfX2V4cGFuZF9fJyxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IEVYUEFORF9DT0xVTU5fQ0xTLFxuICAgICAgICAgICAgICAgIC8vIEhvbm9yIGBleHBhbmRhYmxlLmNvbHVtbldpZHRoYCAvIGBjb2x1bW5UaXRsZWAgLyBgZml4ZWRgO1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYSBmaXhlZCAxNnB4IGNvbHVtbiAoY2hldnJvbi1vbmx5LCBwYWRkaW5nOiAwKS5cbiAgICAgICAgICAgICAgICB3aWR0aDogKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmNvbHVtbldpZHRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxNixcbiAgICAgICAgICAgICAgICB0aXRsZTogZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmNvbHVtblRpdGxlLFxuICAgICAgICAgICAgICAgIGZpeGVkOiAoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkKSA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICA/ICdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICA6IChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQpID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkLFxuICAgICAgICAgICAgICAgIHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSG9ub3IgYHJvd0V4cGFuZGFibGVgOiB3aGVuIHRoZSBwcmVkaWNhdGUgZGVuaWVzIGEgcmVjb3JkLCByZW5kZXIgbm9cbiAgICAgICAgICAgICAgICAgICAgLy8gY2hldnJvbiBhdCBhbGwgKHRoZSByb3cgaXMgbm9uLWV4cGFuZGFibGUpLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5FeHBhbmQgPSByb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5FeHBhbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBhbmRlZCA9IGV4cGFuZGVkS2V5U2V0LmhhcyhyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VzdG9tRXhwYW5kSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUV4cGFuZEljb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeENsczogVEFCTEVfREVGQVVMVF9QUkVGSVgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmQ6IChyZWMsIGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV4cGFuZChnZXRSb3dLZXkocmVjLCBpbmRleCksIHJlYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChFeHBhbmRUcmlnZ2VyLCB7IGV4cGFuZGVkOiBleHBhbmRlZCwgcmVjb3JkS2V5OiByZWNvcmRLZXksIHJlY29yZDogcmVjb3JkLCBvblRvZ2dsZTogdHJpZ2dlckV4cGFuZCB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBdO1xuICAgIH07XG59XG5mdW5jdGlvbiBtYWtlU2VsZWN0aW9uVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IHJvd1NlbGVjdGlvbiwgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICBpZiAoIXJvd1NlbGVjdGlvbilcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IChfYSA9IHJvd1NlbGVjdGlvbi50eXBlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnY2hlY2tib3gnO1xuICAgIC8vIE8oMSkgcGVyLXJvdyBzZWxlY3Rpb24gbG9va3VwIOKAlCBgLmluY2x1ZGVzYCBoZXJlIHJhbiBvbmNlIHBlciByZW5kZXJlZCByb3cuXG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlTZXQgPSBuZXcgU2V0KG1lcmdlZFNlbGVjdGVkUm93S2V5cyk7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGtleTogJ19fc2VsZWN0aW9uX18nLCBjbGFzc05hbWU6IFNFTEVDVElPTl9DT0xVTU5fQ0xTLCB3aWR0aDogKF9hID0gcm93U2VsZWN0aW9uLmNvbHVtbldpZHRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxNiwgZml4ZWQ6IHJvd1NlbGVjdGlvbi5maXhlZCA/ICdsZWZ0JyA6IHVuZGVmaW5lZCB9LCAoc2VsZWN0aW9uVHlwZSA9PT0gJ2NoZWNrYm94J1xuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJIZWFkZXI6ICgpID0+IChfanN4KFNlbGVjdGlvbkhlYWRlckNvbnRyb2wsIHsgY2hlY2tlZDogaXNBbGxTZWxlY3RlZCwgaW5kZXRlcm1pbmF0ZTogaXNJbmRldGVybWluYXRlLCBvbkNoYW5nZTogdHJpZ2dlclNlbGVjdEFsbCB9KSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge30pKSwgeyByZW5kZXI6IChfLCByZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93UHJvcHMgPSBjaGVja2JveFByb3BzTWFwLmdldChyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goU2VsZWN0aW9uQ29udHJvbCwgeyB0eXBlOiBzZWxlY3Rpb25UeXBlLCBjaGVja2VkOiBzZWxlY3RlZEtleVNldC5oYXMocmVjb3JkS2V5KSwgcm93UHJvcHM6IHJvd1Byb3BzLCByZWNvcmRLZXk6IHJlY29yZEtleSwgb25DaGFuZ2U6IHRyaWdnZXJTZWxlY3Rpb24gfSkpO1xuICAgICAgICAgICAgICAgIH0gfSksXG4gICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBdO1xuICAgIH07XG59XG5mdW5jdGlvbiBhcmlhU29ydEZvcihvcmRlcikge1xuICAgIGlmIChvcmRlciA9PT0gJ2FzY2VuZCcpXG4gICAgICAgIHJldHVybiAnYXNjZW5kaW5nJztcbiAgICBpZiAob3JkZXIgPT09ICdkZXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdkZXNjZW5kaW5nJztcbiAgICByZXR1cm4gJ25vbmUnO1xufVxuLy8gU3RhYmxlIGVtcHR5LWZpbHRlciByZWZlcmVuY2UuIFdpdGhvdXQgdGhpcywgYGZpbHRlcnNba2V5XSA/PyBbXWAgY3JlYXRlcyBhXG4vLyBmcmVzaCBgW11gIG9uIGV2ZXJ5IHJlbmRlciwgd2hpY2ggdGhyYXNoZXMgYEZpbHRlclRyaWdnZXJgJ3Ncbi8vIGB1c2VFZmZlY3QoW3NlbGVjdGVkS2V5c10pYCBhbmQgY2F1c2VzIGFuIGluZmluaXRlIHNldFN0YXRlIGxvb3AgYWZ0ZXJcbi8vIGNvbmZpcm0gLyByZXNldC5cbmNvbnN0IEVNUFRZX0ZJTFRFUl9WQUxVRSA9IFtdO1xuZnVuY3Rpb24gbWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpIHtcbiAgICBjb25zdCB7IHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICBjb25zdCBpc1NvcnRhYmxlID0gQm9vbGVhbihjb2x1bW4uc29ydGVyKTtcbiAgICAgICAgY29uc3QgYWN0aXZlT3JkZXIgPSBzb3J0ZXIuY29sdW1uS2V5ID09PSBjb2x1bW4ua2V5ID8gKF9hID0gc29ydGVyLm9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsIDogbnVsbDtcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gY29sdW1uLmtleSAhPSBudWxsID8gU3RyaW5nKGNvbHVtbi5rZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IGNvbHVtbktleSAhPSBudWxsID8gKChfYiA9IGZpbHRlcnNbY29sdW1uS2V5XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfRklMVEVSX1ZBTFVFKSA6IEVNUFRZX0ZJTFRFUl9WQUxVRTtcbiAgICAgICAgLy8gQ29tcG9zZSBvbkhlYWRlckNlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB1c2VyLXByb3ZpZGVkIGF0dHJpYnV0ZXMuXG4gICAgICAgIGNvbnN0IHVzZXJPbkhlYWRlckNlbGwgPSBjb2x1bW4ub25IZWFkZXJDZWxsO1xuICAgICAgICBjb25zdCBvbkhlYWRlckNlbGwgPSAoY29sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdXNlckF0dHJzID0gKF9hID0gdXNlck9uSGVhZGVyQ2VsbCA9PT0gbnVsbCB8fCB1c2VyT25IZWFkZXJDZWxsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1c2VyT25IZWFkZXJDZWxsKGNvbCwgaW5kZXgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVzZXJBdHRycyksIChpc1NvcnRhYmxlID8geyAnYXJpYS1zb3J0JzogYXJpYVNvcnRGb3IoYWN0aXZlT3JkZXIpIH0gOiBudWxsKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9uRmlsdGVyQ2hhbmdlID0gKG5leHQpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5LZXkgPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZXRGaWx0ZXJzKChjdXJyZW50KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50KSwgeyBbY29sdW1uS2V5XTogbmV4dC5sZW5ndGggPyBuZXh0IDogbnVsbCB9KSkpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IG9uSGVhZGVyQ2VsbCwgdGl0bGU6IGNvbHVtbi5yZW5kZXJIZWFkZXJcbiAgICAgICAgICAgICAgICA/IGNvbHVtbi5yZW5kZXJIZWFkZXIoeyBjb2x1bW4gfSlcbiAgICAgICAgICAgICAgICA6IChfanN4KEhlYWRlckNlbGwsIHsgY29sdW1uOiBjb2x1bW4sIHNvcnRPcmRlcjogYWN0aXZlT3JkZXIsIG9uU29ydENsaWNrOiAoKSA9PiBzZXRTb3J0ZXIoKGN1cnJlbnRTb3J0ZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogY3VycmVudFNvcnRlci5jb2x1bW5LZXkgIT09IGNvbHVtbi5rZXkgfHwgY3VycmVudFNvcnRlci5vcmRlciA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRTb3J0ZXIub3JkZXIgPT09ICdhc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2Rlc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkpLCBmaWx0ZXJTZWxlY3RlZDogZmlsdGVyU2VsZWN0ZWQsIG9uRmlsdGVyQ2hhbmdlOiBvbkZpbHRlckNoYW5nZSB9KSkgfSk7XG4gICAgfSk7XG59XG5jb25zdCBTUEFDRVJfQ09MVU1OX0NMUyA9ICdvbS1jb21wb25lbnQtdWktdGFibGUtY2VsbC0tc3BhY2VyJztcbmNvbnN0IEVYUEFORF9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1leHBhbmQnO1xuY29uc3QgU0VMRUNUSU9OX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLXNlbGVjdGlvbic7XG5mdW5jdGlvbiBtYWtlU3BhY2VyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gW1xuICAgICAgICB7IGtleTogJ19fc3BhY2VyX3N0YXJ0X18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfZW5kX18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgXTtcbn1cbmZ1bmN0aW9uIG1ha2VSZW5kZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IFxuICAgICAgICAgICAgLy8gQm9keUNlbGwgaXMgaW50ZW50aW9uYWxseSBDQUxMRUQgYXMgYSBmdW5jdGlvbiwgbm90IHJlbmRlcmVkIGFzXG4gICAgICAgICAgICAvLyBgPEJvZHlDZWxsIC8+YC4gVGhlIGtlcm5lbCdzIGByZW5kZXJgIGNvbnRyYWN0IGFsbG93cyByZXR1cm5pbmcgZWl0aGVyXG4gICAgICAgICAgICAvLyBhIFJlYWN0Tm9kZSBvciBhIGB7IGNoaWxkcmVuLCBwcm9wcyB9YCBjZWxsLXNwYW5uaW5nIGRlc2NyaXB0b3IsIGFuZFxuICAgICAgICAgICAgLy8gQm9keUNlbGwgZm9yd2FyZHMgdGhhdCBkZXNjcmlwdG9yIHRocm91Z2ggZm9yIGNvbFNwYW4gLyByb3dTcGFuIHN1cHBvcnQuXG4gICAgICAgICAgICAvLyBXcmFwcGluZyBpdCBpbiBKU1ggd291bGQgY29sbGFwc2UgdGhlIGRlc2NyaXB0b3IgaW50byBhbiBlbGVtZW50IGFuZFxuICAgICAgICAgICAgLy8gYnJlYWsgY2VsbCBtZXJnaW5nIOKAlCBkbyBub3QgXCJmaXhcIiB0aGlzIGludG8gYW4gZWxlbWVudC5cbiAgICAgICAgICAgIHJlbmRlcjogKHZhbHVlLCByZWNvcmQsIGluZGV4KSA9PiBCb2R5Q2VsbCh7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIH0pIH0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIGNvbHVtbnMgcmVhZHkgdG8gYmUgcGFzc2VkIHRvIHRoZSB0YWJsZSBrZXJuZWwuXG4gKlxuICogVGhlIHJldHVybmVkIHNoYXBlIElTIHN0cnVjdHVyYWxseSB0aGUga2VybmVsJ3MgYENvbHVtbnNUeXBlPFQ+YDpcbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGByZW5kZXJgIGlzIHJlcGxhY2VkIGJ5IGBtYWtlUmVuZGVyVHJhbnNmb3JtYCwgd2hpY2hcbiAqICAgICBhbHdheXMgcmV0dXJucyBhIGBSZWFjdE5vZGVgIChCb2R5Q2VsbCBoYW5kbGVzIGBUYWJsZUNlbGxDb250ZW50VmFsdWVgIC9cbiAqICAgICBgVGFibGVSZW5kZXJlZENlbGxgIGV4dHJhcyBhbmQgZW1pdHMgUmVhY3ROb2RlL1JlbmRlcmVkQ2VsbCkuXG4gKiAgIC0gRXZlcnkgbGVhZiBjb2x1bW4ncyBgdGl0bGVgIGlzIGVpdGhlciBhIFJlYWN0Tm9kZSBvciByZXBsYWNlZCBieVxuICogICAgIGA8SGVhZGVyQ2VsbCAvPmAuXG4gKiBCZWNhdXNlIFRTIGNhbid0IHRyYWNrIHRoYXQgdGhvc2UgcmVwbGFjZW1lbnRzIGhhdmUgaGFwcGVuZWQgYWNyb3NzIHRoZVxuICogYHRyYW5zZm9ybXMucmVkdWNlYCBjaGFpbiwgYSBzaW5nbGUgaW50ZXJuYWwgY2FzdCBpcyByZXF1aXJlZCDigJQgY2FsbCBzaXRlcyBub1xuICogbG9uZ2VyIG5lZWQgdGhlaXIgb3duIGBhcyB1bmtub3duIGFzIEludGVybmFsQ29sdW1uc1R5cGU8VD5gIGNhc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUYWJsZUNvbHVtbnMoY29uZmlnKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCB2YXJpYW50LCBleHBhbmRhYmxlLCByb3dTZWxlY3Rpb24sIG1lcmdlZEV4cGFuZGVkUm93S2V5cywgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJFeHBhbmQsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgLy8gVGhlIHVzZXIncyBkYXRhIGNvbHVtbnMgb25seSBkZXBlbmQgb24gdGhlIGhlYWRlciAvIHJlbmRlciBpbnB1dHNcbiAgICAvLyAoc29ydCwgZmlsdGVyKSDigJQgTk9UIG9uIHNlbGVjdGlvbiBvciBleHBhbnNpb24gc3RhdGUuIE1lbW9pc2luZyB0aGVtXG4gICAgLy8gb24gdGhlaXIgb3duIG1lYW5zIHRvZ2dsaW5nIGEgY2hlY2tib3ggb3IgY2hldnJvbiBubyBsb25nZXIgcmVidWlsZHMgYW5kXG4gICAgLy8gcmUtd3JhcHMgdGhlIHJlbmRlciBjbG9zdXJlIG9mICpldmVyeSogZGF0YSBjb2x1bW47IG9ubHkgdGhlIHNtYWxsXG4gICAgLy8gc2VsZWN0aW9uL2V4cGFuZCBwcmVmaXggYmVsb3cgaXMgcmVidWlsdC4gYG1ha2VIZWFkZXJUcmFuc2Zvcm1gIGFuZFxuICAgIC8vIGBtYWtlUmVuZGVyVHJhbnNmb3JtYCBhcmUgcGVyLWNvbHVtbiBpbmRlcGVuZGVudCBtYXBzLCBzbyBhcHBseWluZyB0aGVtIHRvXG4gICAgLy8gdGhlIHVzZXIgY29sdW1ucyBhbmQgdGhlIHByZWZpeCBzZXBhcmF0ZWx5IGFuZCBjb25jYXRlbmF0aW5nIGlzIGVxdWl2YWxlbnRcbiAgICAvLyB0byB0aGUgb3JpZ2luYWwgc2luZ2xlIHJlZHVjZS1jaGFpbi5cbiAgICAvL1xuICAgIC8vIERlcC1saXN0IG5vdGU6IHRoZSB0cmFuc2Zvcm0gZmFjdG9yaWVzIGNhcHR1cmUgdGhlIHdob2xlIGBjb25maWdgLCBidXRcbiAgICAvLyBldmVyeSBjYWxsYmFjayBpbiBpdCAoYHNldFNvcnRlcmAsIGB0cmlnZ2VyRXhwYW5kYCwgYGdldFJvd0tleWAsIOKApikgaXMgYVxuICAgIC8vIHN0YWJsZSBgdXNlTWVtb2l6ZWRGbmAsIHNvIGxpc3RpbmcgdGhlIGdlbnVpbmUgdmFsdWUgaW5wdXRzIGlzIHN1ZmZpY2llbnRcbiAgICAvLyBhbmQgaW50ZW50aW9uYWwuIEtlZXAgdGhlIGxpc3RzIGluIHN5bmMgd2hlbiBhZGRpbmcgaW5wdXRzLlxuICAgIGNvbnN0IGJhc2VVc2VyQ29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IG1ha2VIZWFkZXJUcmFuc2Zvcm0oY29uZmlnKShjb2x1bW5zKTtcbiAgICAgICAgY29scyA9IG1ha2VSZW5kZXJUcmFuc2Zvcm0oKShjb2xzKTtcbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW2NvbHVtbnMsIHNvcnRlciwgZmlsdGVycywgc2V0U29ydGVyLCBzZXRGaWx0ZXJzXSk7XG4gICAgLy8gVGhlIHNlbGVjdGlvbiAvIGV4cGFuZCBwcmVmaXggY2FycmllcyBsaXZlIHNlbGVjdGVkL2V4cGFuZGVkIHN0YXRlIGluIGl0c1xuICAgIC8vIHJlbmRlciBvdXRwdXQsIHdoaWNoIGlzIHRoZSBzaWduYWwgdGhhdCByZS1yZW5kZXJzIHRoZSBhZmZlY3RlZCByb3dzIOKAlCBzbyBpdFxuICAgIC8vIG11c3QgcmVidWlsZCBvbiBldmVyeSB0b2dnbGUuIEl0IGlzIGF0IG1vc3QgdHdvIGNvbHVtbnMsIHNvIHRoaXMgaXMgY2hlYXAuXG4gICAgY29uc3QgcHJlZml4Q29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IFtdO1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSAmJiBleHBhbmRhYmxlLnNob3dFeHBhbmRDb2x1bW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb2xzID0gbWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpKGNvbHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblRyYW5zZm9ybSA9IHJvd1NlbGVjdGlvbiA/IG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSA6IG51bGw7XG4gICAgICAgIGlmIChzZWxlY3Rpb25UcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgIGNvbHMgPSBzZWxlY3Rpb25UcmFuc2Zvcm0oY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUnVuIHRoZSBwcmVmaXggdGhyb3VnaCB0aGUgc2FtZSBoZWFkZXIvcmVuZGVyIG1hcHMgdGhlIHVzZXIgY29sdW1ucyBnZXQgc29cbiAgICAgICAgLy8gdGhlIGZpbmFsIGFycmF5IGlzIGJ5dGUtZm9yLWJ5dGUgdGhlIG9yaWdpbmFsIHNpbmdsZS1waXBlbGluZSBvdXRwdXQuXG4gICAgICAgIGNvbHMgPSBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykoY29scyk7XG4gICAgICAgIGNvbHMgPSBtYWtlUmVuZGVyVHJhbnNmb3JtKCkoY29scyk7XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH0sIFtcbiAgICAgICAgZXhwYW5kYWJsZSxcbiAgICAgICAgcm93U2VsZWN0aW9uLFxuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIG1lcmdlZFNlbGVjdGVkUm93S2V5cyxcbiAgICAgICAgY2hlY2tib3hQcm9wc01hcCxcbiAgICAgICAgaXNBbGxTZWxlY3RlZCxcbiAgICAgICAgaXNJbmRldGVybWluYXRlLFxuICAgICAgICB0cmlnZ2VyRXhwYW5kLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0aW9uLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0QWxsLFxuICAgICAgICBzb3J0ZXIsXG4gICAgICAgIHNldFNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgc2V0RmlsdGVycyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIF0pO1xuICAgIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IGNvbHMgPSBbLi4ucHJlZml4Q29sdW1ucywgLi4uYmFzZVVzZXJDb2x1bW5zXTtcbiAgICAgICAgaWYgKHZhcmlhbnQgPT09ICdzdHJva2UnKSB7XG4gICAgICAgICAgICBjb2xzID0gbWFrZVNwYWNlclRyYW5zZm9ybSgpKGNvbHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH0sIFtwcmVmaXhDb2x1bW5zLCBiYXNlVXNlckNvbHVtbnMsIHZhcmlhbnRdKTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
299
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiVEFCTEVfU0laRV9DT05GSUciLCJpc0NvbHVtbkdyb3VwIiwibWFrZUV4cGFuZFRyYW5zZm9ybSIsImNvbmZpZyIsImV4cGFuZGFibGUiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwiZ2V0Um93S2V5IiwiY3VzdG9tRXhwYW5kSWNvbiIsImV4cGFuZEljb24iLCJyb3dFeHBhbmRhYmxlIiwiZXhwYW5kZWRLZXlTZXQiLCJTZXQiLCJjb2x1bW5zIiwiX2EiLCJrZXkiLCJjbGFzc05hbWUiLCJFWFBBTkRfQ09MVU1OX0NMUyIsIndpZHRoIiwiY29sdW1uV2lkdGgiLCJ0aXRsZSIsImNvbHVtblRpdGxlIiwiZml4ZWQiLCJ1bmRlZmluZWQiLCJyZW5kZXIiLCJfIiwicmVjb3JkIiwiaW5kZXgiLCJjYW5FeHBhbmQiLCJyZWNvcmRLZXkiLCJleHBhbmRlZCIsImhhcyIsInByZWZpeENscyIsIm9uRXhwYW5kIiwicmVjIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsIm9uVG9nZ2xlIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWFrZVNlbGVjdGlvblRyYW5zZm9ybSIsInJvd1NlbGVjdGlvbiIsIm1lcmdlZFNlbGVjdGVkUm93S2V5cyIsImNoZWNrYm94UHJvcHNNYXAiLCJpc0FsbFNlbGVjdGVkIiwiaXNJbmRldGVybWluYXRlIiwidHJpZ2dlclNlbGVjdGlvbiIsInRyaWdnZXJTZWxlY3RBbGwiLCJzZWxlY3Rpb25UeXBlIiwidHlwZSIsInNlbGVjdGVkS2V5U2V0IiwiT2JqZWN0IiwiYXNzaWduIiwiU0VMRUNUSU9OX0NPTFVNTl9DTFMiLCJyZW5kZXJIZWFkZXIiLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsIm9uQ2hhbmdlIiwicm93UHJvcHMiLCJnZXQiLCJhcmlhU29ydEZvciIsIm9yZGVyIiwiRU1QVFlfRklMVEVSX1ZBTFVFIiwibWFrZUhlYWRlclRyYW5zZm9ybSIsInNvcnRlciIsInNldFNvcnRlciIsImZpbHRlcnMiLCJzZXRGaWx0ZXJzIiwic2l6ZSIsIm1hcCIsImNvbHVtbiIsIl9iIiwiY2hpbGRyZW4iLCJpc1NvcnRhYmxlIiwiQm9vbGVhbiIsImFjdGl2ZU9yZGVyIiwiY29sdW1uS2V5IiwiU3RyaW5nIiwiZmlsdGVyU2VsZWN0ZWQiLCJ1c2VyT25IZWFkZXJDZWxsIiwib25IZWFkZXJDZWxsIiwiY29sIiwidXNlckF0dHJzIiwib25GaWx0ZXJDaGFuZ2UiLCJuZXh0IiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsImxlbmd0aCIsImZvbnRTaXplIiwiaGVhZGVyRm9udFNpemUiLCJzb3J0T3JkZXIiLCJvblNvcnRDbGljayIsImN1cnJlbnRTb3J0ZXIiLCJTUEFDRVJfQ09MVU1OX0NMUyIsIm1ha2VTcGFjZXJUcmFuc2Zvcm0iLCJtYWtlUmVuZGVyVHJhbnNmb3JtIiwidmFsdWUiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ2YXJpYW50IiwiYmFzZVVzZXJDb2x1bW5zIiwiY29scyIsInByZWZpeENvbHVtbnMiLCJzaG93RXhwYW5kQ29sdW1uIiwic2VsZWN0aW9uVHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxPQUFPLFFBQWtCLE9BQU87QUFDekMsU0FBU0MsZ0JBQWdCLEVBQUVDLHNCQUFzQixRQUFRLDZCQUE2QjtBQUN0RixTQUFTQyxhQUFhLFFBQVEsMkJBQTJC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QztJQUMxQztJQUNBLElBQU1HLGtCQUFrQixHQUFHOUQsWUFBWSxHQUFHRCxzQkFBc0IsQ0FBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUk7SUFDL0UsSUFBSW9HLGtCQUFrQixFQUFFO01BQ3RCSCxJQUFJLEdBQUdHLGtCQUFrQixDQUFDSCxJQUFJLENBQUM7SUFDakM7SUFDQTtJQUNBO0lBQ0FBLElBQUksR0FBR3JDLG1CQUFtQixDQUFDNUQsTUFBTSxDQUFDLENBQUNpRyxJQUFJLENBQUM7SUFDeENBLElBQUksR0FBR0wsbUJBQW1CLENBQUkzQixJQUFJLENBQUMsQ0FBQ2dDLElBQUksQ0FBQztJQUN6QyxPQUFPQSxJQUFJO0VBQ2IsQ0FBQyxFQUFFLENBQ0RoQyxJQUFJLEVBQ0poRSxVQUFVLEVBQ1ZxQyxZQUFZLEVBQ1pwQyxxQkFBcUIsRUFDckJxQyxxQkFBcUIsRUFDckJDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxlQUFlLEVBQ2Z2QyxhQUFhLEVBQ2J3QyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixFQUNoQmlCLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVjVELFNBQVMsQ0FDVixDQUFDO0VBRUYsT0FBT2QsT0FBTyxDQUFDLFlBQUs7SUFDbEIsSUFBSTJHLElBQUksTUFBQTlELE1BQUEsQ0FBQUMsa0JBQUEsQ0FBTzhELGFBQWEsR0FBQTlELGtCQUFBLENBQUs0RCxlQUFlLEVBQUM7SUFDakQsSUFBSUQsT0FBTyxLQUFLLFFBQVEsRUFBRTtNQUN4QkUsSUFBSSxHQUFHTixtQkFBbUIsQ0FBQSxDQUFLLENBQUNNLElBQUksQ0FBQztJQUN2QztJQUNBLE9BQU9BLElBQXlDO0VBQ2xELENBQUMsRUFBRSxDQUFDQyxhQUFhLEVBQUVGLGVBQWUsRUFBRUQsT0FBTyxDQUFDLENBQUM7QUFDL0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlQ29sdW1ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbCwgU2VsZWN0aW9uSGVhZGVyQ29udHJvbCB9IGZyb20gJy4uL2ZlYXR1cmVzL1NlbGVjdGlvbkNvbHVtbic7XG5pbXBvcnQgeyBFeHBhbmRUcmlnZ2VyIH0gZnJvbSAnLi4vZmVhdHVyZXMvRXhwYW5kVHJpZ2dlcic7XG5pbXBvcnQgeyBIZWFkZXJDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0hlYWRlckNlbGwnO1xuaW1wb3J0IHsgQm9keUNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvQm9keUNlbGwnO1xuaW1wb3J0IHsgVEFCTEVfREVGQVVMVF9QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVEFCTEVfU0laRV9DT05GSUcgfSBmcm9tICcuLi9zaXplJztcbmltcG9ydCB7IGlzQ29sdW1uR3JvdXAgfSBmcm9tICcuL2NvbHVtblV0aWwnO1xuZnVuY3Rpb24gbWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpIHtcbiAgICBjb25zdCB7IGV4cGFuZGFibGUsIG1lcmdlZEV4cGFuZGVkUm93S2V5cywgdHJpZ2dlckV4cGFuZCwgZ2V0Um93S2V5IH0gPSBjb25maWc7XG4gICAgY29uc3QgY3VzdG9tRXhwYW5kSWNvbiA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5leHBhbmRJY29uO1xuICAgIGNvbnN0IHJvd0V4cGFuZGFibGUgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZTtcbiAgICAvLyBPKDEpIHBlci1yb3cgZXhwYW5zaW9uIGxvb2t1cCDigJQgYC5pbmNsdWRlc2AgaGVyZSByYW4gb25jZSBwZXIgcmVuZGVyZWQgcm93LlxuICAgIGNvbnN0IGV4cGFuZGVkS2V5U2V0ID0gbmV3IFNldChtZXJnZWRFeHBhbmRlZFJvd0tleXMpO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnX19leHBhbmRfXycsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBFWFBBTkRfQ09MVU1OX0NMUyxcbiAgICAgICAgICAgICAgICAvLyBIb25vciBgZXhwYW5kYWJsZS5jb2x1bW5XaWR0aGAgLyBgY29sdW1uVGl0bGVgIC8gYGZpeGVkYDtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGEgZml4ZWQgMTZweCBjb2x1bW4gKGNoZXZyb24tb25seSwgcGFkZGluZzogMCkuXG4gICAgICAgICAgICAgICAgd2lkdGg6IChfYSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5jb2x1bW5XaWR0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMTYsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5jb2x1bW5UaXRsZSxcbiAgICAgICAgICAgICAgICBmaXhlZDogKGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5maXhlZCkgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgPyAnbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgOiAoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkKSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5maXhlZCxcbiAgICAgICAgICAgICAgICByZW5kZXI6IChfLCByZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhvbm9yIGByb3dFeHBhbmRhYmxlYDogd2hlbiB0aGUgcHJlZGljYXRlIGRlbmllcyBhIHJlY29yZCwgcmVuZGVyIG5vXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZXZyb24gYXQgYWxsICh0aGUgcm93IGlzIG5vbi1leHBhbmRhYmxlKS5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuRXhwYW5kID0gcm93RXhwYW5kYWJsZSA/IHJvd0V4cGFuZGFibGUocmVjb3JkKSA6IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FuRXhwYW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZEtleVNldC5oYXMocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1c3RvbUV4cGFuZEljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXN0b21FeHBhbmRJY29uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhDbHM6IFRBQkxFX0RFRkFVTFRfUFJFRklYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhwYW5kOiAocmVjLCBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJFeHBhbmQoZ2V0Um93S2V5KHJlYywgaW5kZXgpLCByZWMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goRXhwYW5kVHJpZ2dlciwgeyBleHBhbmRlZDogZXhwYW5kZWQsIHJlY29yZEtleTogcmVjb3JkS2V5LCByZWNvcmQ6IHJlY29yZCwgb25Ub2dnbGU6IHRyaWdnZXJFeHBhbmQgfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgXTtcbiAgICB9O1xufVxuZnVuY3Rpb24gbWFrZVNlbGVjdGlvblRyYW5zZm9ybShjb25maWcpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgeyByb3dTZWxlY3Rpb24sIG1lcmdlZFNlbGVjdGVkUm93S2V5cywgY2hlY2tib3hQcm9wc01hcCwgaXNBbGxTZWxlY3RlZCwgaXNJbmRldGVybWluYXRlLCB0cmlnZ2VyU2VsZWN0aW9uLCB0cmlnZ2VyU2VsZWN0QWxsLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgaWYgKCFyb3dTZWxlY3Rpb24pXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHNlbGVjdGlvblR5cGUgPSAoX2EgPSByb3dTZWxlY3Rpb24udHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2NoZWNrYm94JztcbiAgICAvLyBPKDEpIHBlci1yb3cgc2VsZWN0aW9uIGxvb2t1cCDigJQgYC5pbmNsdWRlc2AgaGVyZSByYW4gb25jZSBwZXIgcmVuZGVyZWQgcm93LlxuICAgIGNvbnN0IHNlbGVjdGVkS2V5U2V0ID0gbmV3IFNldChtZXJnZWRTZWxlY3RlZFJvd0tleXMpO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBrZXk6ICdfX3NlbGVjdGlvbl9fJywgY2xhc3NOYW1lOiBTRUxFQ1RJT05fQ09MVU1OX0NMUywgd2lkdGg6IChfYSA9IHJvd1NlbGVjdGlvbi5jb2x1bW5XaWR0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMTYsIGZpeGVkOiByb3dTZWxlY3Rpb24uZml4ZWQgPyAnbGVmdCcgOiB1bmRlZmluZWQgfSwgKHNlbGVjdGlvblR5cGUgPT09ICdjaGVja2JveCdcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVySGVhZGVyOiAoKSA9PiAoX2pzeChTZWxlY3Rpb25IZWFkZXJDb250cm9sLCB7IGNoZWNrZWQ6IGlzQWxsU2VsZWN0ZWQsIGluZGV0ZXJtaW5hdGU6IGlzSW5kZXRlcm1pbmF0ZSwgb25DaGFuZ2U6IHRyaWdnZXJTZWxlY3RBbGwgfSkpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHt9KSksIHsgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd1Byb3BzID0gY2hlY2tib3hQcm9wc01hcC5nZXQocmVjb3JkS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFNlbGVjdGlvbkNvbnRyb2wsIHsgdHlwZTogc2VsZWN0aW9uVHlwZSwgY2hlY2tlZDogc2VsZWN0ZWRLZXlTZXQuaGFzKHJlY29yZEtleSksIHJvd1Byb3BzOiByb3dQcm9wcywgcmVjb3JkS2V5OiByZWNvcmRLZXksIG9uQ2hhbmdlOiB0cmlnZ2VyU2VsZWN0aW9uIH0pKTtcbiAgICAgICAgICAgICAgICB9IH0pLFxuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgXTtcbiAgICB9O1xufVxuZnVuY3Rpb24gYXJpYVNvcnRGb3Iob3JkZXIpIHtcbiAgICBpZiAob3JkZXIgPT09ICdhc2NlbmQnKVxuICAgICAgICByZXR1cm4gJ2FzY2VuZGluZyc7XG4gICAgaWYgKG9yZGVyID09PSAnZGVzY2VuZCcpXG4gICAgICAgIHJldHVybiAnZGVzY2VuZGluZyc7XG4gICAgcmV0dXJuICdub25lJztcbn1cbi8vIFN0YWJsZSBlbXB0eS1maWx0ZXIgcmVmZXJlbmNlLiBXaXRob3V0IHRoaXMsIGBmaWx0ZXJzW2tleV0gPz8gW11gIGNyZWF0ZXMgYVxuLy8gZnJlc2ggYFtdYCBvbiBldmVyeSByZW5kZXIsIHdoaWNoIHRocmFzaGVzIGBGaWx0ZXJUcmlnZ2VyYCdzXG4vLyBgdXNlRWZmZWN0KFtzZWxlY3RlZEtleXNdKWAgYW5kIGNhdXNlcyBhbiBpbmZpbml0ZSBzZXRTdGF0ZSBsb29wIGFmdGVyXG4vLyBjb25maXJtIC8gcmVzZXQuXG5jb25zdCBFTVBUWV9GSUxURVJfVkFMVUUgPSBbXTtcbmZ1bmN0aW9uIG1ha2VIZWFkZXJUcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgY29uc3QgeyBzb3J0ZXIsIHNldFNvcnRlciwgZmlsdGVycywgc2V0RmlsdGVycywgc2l6ZSB9ID0gY29uZmlnO1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoaXNDb2x1bW5Hcm91cChjb2x1bW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IGNoaWxkcmVuOiBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykoY29sdW1uLmNoaWxkcmVuKSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc1NvcnRhYmxlID0gQm9vbGVhbihjb2x1bW4uc29ydGVyKTtcbiAgICAgICAgY29uc3QgYWN0aXZlT3JkZXIgPSBzb3J0ZXIuY29sdW1uS2V5ID09PSBjb2x1bW4ua2V5ID8gKF9hID0gc29ydGVyLm9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsIDogbnVsbDtcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gY29sdW1uLmtleSAhPSBudWxsID8gU3RyaW5nKGNvbHVtbi5rZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IGNvbHVtbktleSAhPSBudWxsID8gKChfYiA9IGZpbHRlcnNbY29sdW1uS2V5XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfRklMVEVSX1ZBTFVFKSA6IEVNUFRZX0ZJTFRFUl9WQUxVRTtcbiAgICAgICAgLy8gQ29tcG9zZSBvbkhlYWRlckNlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB1c2VyLXByb3ZpZGVkIGF0dHJpYnV0ZXMuXG4gICAgICAgIGNvbnN0IHVzZXJPbkhlYWRlckNlbGwgPSBjb2x1bW4ub25IZWFkZXJDZWxsO1xuICAgICAgICBjb25zdCBvbkhlYWRlckNlbGwgPSAoY29sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdXNlckF0dHJzID0gKF9hID0gdXNlck9uSGVhZGVyQ2VsbCA9PT0gbnVsbCB8fCB1c2VyT25IZWFkZXJDZWxsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1c2VyT25IZWFkZXJDZWxsKGNvbCwgaW5kZXgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVzZXJBdHRycyksIChpc1NvcnRhYmxlID8geyAnYXJpYS1zb3J0JzogYXJpYVNvcnRGb3IoYWN0aXZlT3JkZXIpIH0gOiBudWxsKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9uRmlsdGVyQ2hhbmdlID0gKG5leHQpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5LZXkgPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZXRGaWx0ZXJzKChjdXJyZW50KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50KSwgeyBbY29sdW1uS2V5XTogbmV4dC5sZW5ndGggPyBuZXh0IDogbnVsbCB9KSkpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IG9uSGVhZGVyQ2VsbCwgdGl0bGU6IGNvbHVtbi5yZW5kZXJIZWFkZXJcbiAgICAgICAgICAgICAgICA/IGNvbHVtbi5yZW5kZXJIZWFkZXIoeyBjb2x1bW4sIHNpemUsIGZvbnRTaXplOiBUQUJMRV9TSVpFX0NPTkZJR1tzaXplXS5oZWFkZXJGb250U2l6ZSB9KVxuICAgICAgICAgICAgICAgIDogKF9qc3goSGVhZGVyQ2VsbCwgeyBjb2x1bW46IGNvbHVtbiwgc29ydE9yZGVyOiBhY3RpdmVPcmRlciwgb25Tb3J0Q2xpY2s6ICgpID0+IHNldFNvcnRlcigoY3VycmVudFNvcnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjdXJyZW50U29ydGVyLmNvbHVtbktleSAhPT0gY29sdW1uLmtleSB8fCBjdXJyZW50U29ydGVyLm9yZGVyID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFNvcnRlci5vcmRlciA9PT0gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGVzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSksIGZpbHRlclNlbGVjdGVkOiBmaWx0ZXJTZWxlY3RlZCwgb25GaWx0ZXJDaGFuZ2U6IG9uRmlsdGVyQ2hhbmdlIH0pKSB9KTtcbiAgICB9KTtcbn1cbmNvbnN0IFNQQUNFUl9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1zcGFjZXInO1xuY29uc3QgRVhQQU5EX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLWV4cGFuZCc7XG5jb25zdCBTRUxFQ1RJT05fQ09MVU1OX0NMUyA9ICdvbS1jb21wb25lbnQtdWktdGFibGUtY2VsbC0tc2VsZWN0aW9uJztcbmZ1bmN0aW9uIG1ha2VTcGFjZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBbXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfc3RhcnRfXycsIHdpZHRoOiAxNiwgdGl0bGU6ICcnLCBjbGFzc05hbWU6IFNQQUNFUl9DT0xVTU5fQ0xTLCByZW5kZXI6ICgpID0+IG51bGwgfSxcbiAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgeyBrZXk6ICdfX3NwYWNlcl9lbmRfXycsIHdpZHRoOiAxNiwgdGl0bGU6ICcnLCBjbGFzc05hbWU6IFNQQUNFUl9DT0xVTU5fQ0xTLCByZW5kZXI6ICgpID0+IG51bGwgfSxcbiAgICBdO1xufVxuZnVuY3Rpb24gbWFrZVJlbmRlclRyYW5zZm9ybShzaXplKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgY2hpbGRyZW46IG1ha2VSZW5kZXJUcmFuc2Zvcm0oc2l6ZSkoY29sdW1uLmNoaWxkcmVuKSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IFxuICAgICAgICAgICAgLy8gQm9keUNlbGwgaXMgaW50ZW50aW9uYWxseSBDQUxMRUQgYXMgYSBmdW5jdGlvbiwgbm90IHJlbmRlcmVkIGFzXG4gICAgICAgICAgICAvLyBgPEJvZHlDZWxsIC8+YC4gVGhlIGtlcm5lbCdzIGByZW5kZXJgIGNvbnRyYWN0IGFsbG93cyByZXR1cm5pbmcgZWl0aGVyXG4gICAgICAgICAgICAvLyBhIFJlYWN0Tm9kZSBvciBhIGB7IGNoaWxkcmVuLCBwcm9wcyB9YCBjZWxsLXNwYW5uaW5nIGRlc2NyaXB0b3IsIGFuZFxuICAgICAgICAgICAgLy8gQm9keUNlbGwgZm9yd2FyZHMgdGhhdCBkZXNjcmlwdG9yIHRocm91Z2ggZm9yIGNvbFNwYW4gLyByb3dTcGFuIHN1cHBvcnQuXG4gICAgICAgICAgICAvLyBXcmFwcGluZyBpdCBpbiBKU1ggd291bGQgY29sbGFwc2UgdGhlIGRlc2NyaXB0b3IgaW50byBhbiBlbGVtZW50IGFuZFxuICAgICAgICAgICAgLy8gYnJlYWsgY2VsbCBtZXJnaW5nIOKAlCBkbyBub3QgXCJmaXhcIiB0aGlzIGludG8gYW4gZWxlbWVudC5cbiAgICAgICAgICAgIHJlbmRlcjogKHZhbHVlLCByZWNvcmQsIGluZGV4KSA9PiBCb2R5Q2VsbCh7XG4gICAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgfSkgfSk7XG4gICAgfSk7XG59XG4vKipcbiAqIFJldHVybnMgY29sdW1ucyByZWFkeSB0byBiZSBwYXNzZWQgdG8gdGhlIHRhYmxlIGtlcm5lbC5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgc2hhcGUgSVMgc3RydWN0dXJhbGx5IHRoZSBrZXJuZWwncyBgQ29sdW1uc1R5cGU8VD5gOlxuICogICAtIEV2ZXJ5IGxlYWYgY29sdW1uJ3MgYHJlbmRlcmAgaXMgcmVwbGFjZWQgYnkgYG1ha2VSZW5kZXJUcmFuc2Zvcm1gLCB3aGljaFxuICogICAgIGFsd2F5cyByZXR1cm5zIGEgYFJlYWN0Tm9kZWAgKEJvZHlDZWxsIGhhbmRsZXMgYFRhYmxlQ2VsbENvbnRlbnRWYWx1ZWAgL1xuICogICAgIGBUYWJsZVJlbmRlcmVkQ2VsbGAgZXh0cmFzIGFuZCBlbWl0cyBSZWFjdE5vZGUvUmVuZGVyZWRDZWxsKS5cbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGB0aXRsZWAgaXMgZWl0aGVyIGEgUmVhY3ROb2RlIG9yIHJlcGxhY2VkIGJ5XG4gKiAgICAgYDxIZWFkZXJDZWxsIC8+YC5cbiAqIEJlY2F1c2UgVFMgY2FuJ3QgdHJhY2sgdGhhdCB0aG9zZSByZXBsYWNlbWVudHMgaGF2ZSBoYXBwZW5lZCBhY3Jvc3MgdGhlXG4gKiBgdHJhbnNmb3Jtcy5yZWR1Y2VgIGNoYWluLCBhIHNpbmdsZSBpbnRlcm5hbCBjYXN0IGlzIHJlcXVpcmVkIOKAlCBjYWxsIHNpdGVzIG5vXG4gKiBsb25nZXIgbmVlZCB0aGVpciBvd24gYGFzIHVua25vd24gYXMgSW50ZXJuYWxDb2x1bW5zVHlwZTxUPmAgY2FzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRhYmxlQ29sdW1ucyhjb25maWcpIHtcbiAgICBjb25zdCB7IGNvbHVtbnMsIHZhcmlhbnQsIHNpemUsIGV4cGFuZGFibGUsIHJvd1NlbGVjdGlvbiwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCBtZXJnZWRTZWxlY3RlZFJvd0tleXMsIGNoZWNrYm94UHJvcHNNYXAsIGlzQWxsU2VsZWN0ZWQsIGlzSW5kZXRlcm1pbmF0ZSwgdHJpZ2dlckV4cGFuZCwgdHJpZ2dlclNlbGVjdGlvbiwgdHJpZ2dlclNlbGVjdEFsbCwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICAvLyBUaGUgdXNlcidzIGRhdGEgY29sdW1ucyBvbmx5IGRlcGVuZCBvbiB0aGUgaGVhZGVyIC8gcmVuZGVyIGlucHV0c1xuICAgIC8vIChzb3J0LCBmaWx0ZXIpIOKAlCBOT1Qgb24gc2VsZWN0aW9uIG9yIGV4cGFuc2lvbiBzdGF0ZS4gTWVtb2lzaW5nIHRoZW1cbiAgICAvLyBvbiB0aGVpciBvd24gbWVhbnMgdG9nZ2xpbmcgYSBjaGVja2JveCBvciBjaGV2cm9uIG5vIGxvbmdlciByZWJ1aWxkcyBhbmRcbiAgICAvLyByZS13cmFwcyB0aGUgcmVuZGVyIGNsb3N1cmUgb2YgKmV2ZXJ5KiBkYXRhIGNvbHVtbjsgb25seSB0aGUgc21hbGxcbiAgICAvLyBzZWxlY3Rpb24vZXhwYW5kIHByZWZpeCBiZWxvdyBpcyByZWJ1aWx0LiBgbWFrZUhlYWRlclRyYW5zZm9ybWAgYW5kXG4gICAgLy8gYG1ha2VSZW5kZXJUcmFuc2Zvcm1gIGFyZSBwZXItY29sdW1uIGluZGVwZW5kZW50IG1hcHMsIHNvIGFwcGx5aW5nIHRoZW0gdG9cbiAgICAvLyB0aGUgdXNlciBjb2x1bW5zIGFuZCB0aGUgcHJlZml4IHNlcGFyYXRlbHkgYW5kIGNvbmNhdGVuYXRpbmcgaXMgZXF1aXZhbGVudFxuICAgIC8vIHRvIHRoZSBvcmlnaW5hbCBzaW5nbGUgcmVkdWNlLWNoYWluLlxuICAgIC8vXG4gICAgLy8gRGVwLWxpc3Qgbm90ZTogdGhlIHRyYW5zZm9ybSBmYWN0b3JpZXMgY2FwdHVyZSB0aGUgd2hvbGUgYGNvbmZpZ2AsIGJ1dFxuICAgIC8vIGV2ZXJ5IGNhbGxiYWNrIGluIGl0IChgc2V0U29ydGVyYCwgYHRyaWdnZXJFeHBhbmRgLCBgZ2V0Um93S2V5YCwg4oCmKSBpcyBhXG4gICAgLy8gc3RhYmxlIGB1c2VNZW1vaXplZEZuYCwgc28gbGlzdGluZyB0aGUgZ2VudWluZSB2YWx1ZSBpbnB1dHMgaXMgc3VmZmljaWVudFxuICAgIC8vIGFuZCBpbnRlbnRpb25hbC4gS2VlcCB0aGUgbGlzdHMgaW4gc3luYyB3aGVuIGFkZGluZyBpbnB1dHMuXG4gICAgY29uc3QgYmFzZVVzZXJDb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBjb2xzID0gbWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpKGNvbHVtbnMpO1xuICAgICAgICBjb2xzID0gbWFrZVJlbmRlclRyYW5zZm9ybShzaXplKShjb2xzKTtcbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW2NvbHVtbnMsIHNpemUsIHNvcnRlciwgZmlsdGVycywgc2V0U29ydGVyLCBzZXRGaWx0ZXJzXSk7XG4gICAgLy8gVGhlIHNlbGVjdGlvbiAvIGV4cGFuZCBwcmVmaXggY2FycmllcyBsaXZlIHNlbGVjdGVkL2V4cGFuZGVkIHN0YXRlIGluIGl0c1xuICAgIC8vIHJlbmRlciBvdXRwdXQsIHdoaWNoIGlzIHRoZSBzaWduYWwgdGhhdCByZS1yZW5kZXJzIHRoZSBhZmZlY3RlZCByb3dzIOKAlCBzbyBpdFxuICAgIC8vIG11c3QgcmVidWlsZCBvbiBldmVyeSB0b2dnbGUuIEl0IGlzIGF0IG1vc3QgdHdvIGNvbHVtbnMsIHNvIHRoaXMgaXMgY2hlYXAuXG4gICAgY29uc3QgcHJlZml4Q29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IFtdO1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSAmJiBleHBhbmRhYmxlLnNob3dFeHBhbmRDb2x1bW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb2xzID0gbWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpKGNvbHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblRyYW5zZm9ybSA9IHJvd1NlbGVjdGlvbiA/IG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSA6IG51bGw7XG4gICAgICAgIGlmIChzZWxlY3Rpb25UcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgIGNvbHMgPSBzZWxlY3Rpb25UcmFuc2Zvcm0oY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUnVuIHRoZSBwcmVmaXggdGhyb3VnaCB0aGUgc2FtZSBoZWFkZXIvcmVuZGVyIG1hcHMgdGhlIHVzZXIgY29sdW1ucyBnZXQgc29cbiAgICAgICAgLy8gdGhlIGZpbmFsIGFycmF5IGlzIGJ5dGUtZm9yLWJ5dGUgdGhlIG9yaWdpbmFsIHNpbmdsZS1waXBlbGluZSBvdXRwdXQuXG4gICAgICAgIGNvbHMgPSBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykoY29scyk7XG4gICAgICAgIGNvbHMgPSBtYWtlUmVuZGVyVHJhbnNmb3JtKHNpemUpKGNvbHMpO1xuICAgICAgICByZXR1cm4gY29scztcbiAgICB9LCBbXG4gICAgICAgIHNpemUsXG4gICAgICAgIGV4cGFuZGFibGUsXG4gICAgICAgIHJvd1NlbGVjdGlvbixcbiAgICAgICAgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLFxuICAgICAgICBtZXJnZWRTZWxlY3RlZFJvd0tleXMsXG4gICAgICAgIGNoZWNrYm94UHJvcHNNYXAsXG4gICAgICAgIGlzQWxsU2VsZWN0ZWQsXG4gICAgICAgIGlzSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgdHJpZ2dlckV4cGFuZCxcbiAgICAgICAgdHJpZ2dlclNlbGVjdGlvbixcbiAgICAgICAgdHJpZ2dlclNlbGVjdEFsbCxcbiAgICAgICAgc29ydGVyLFxuICAgICAgICBzZXRTb3J0ZXIsXG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIHNldEZpbHRlcnMsXG4gICAgICAgIGdldFJvd0tleSxcbiAgICBdKTtcbiAgICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBjb2xzID0gWy4uLnByZWZpeENvbHVtbnMsIC4uLmJhc2VVc2VyQ29sdW1uc107XG4gICAgICAgIGlmICh2YXJpYW50ID09PSAnc3Ryb2tlJykge1xuICAgICAgICAgICAgY29scyA9IG1ha2VTcGFjZXJUcmFuc2Zvcm0oKShjb2xzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29scztcbiAgICB9LCBbcHJlZml4Q29sdW1ucywgYmFzZVVzZXJDb2x1bW5zLCB2YXJpYW50XSk7XG59IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -16,6 +16,7 @@ import { Spinner } from '../../Spinner';
|
|
|
16
16
|
import { ExpandedRowContainer } from '../renderers/ExpandedRowContainer';
|
|
17
17
|
import { TableEmptyState } from '../renderers/EmptyState';
|
|
18
18
|
import { TABLE_BLOCK, TABLE_DEFAULT_PREFIX, TABLE_DEFAULT_VARIANT } from '../constants';
|
|
19
|
+
import { TABLE_DEFAULT_SIZE, tableSizeCssVars } from '../size';
|
|
19
20
|
import { useTableDataPipeline } from './useTableDataPipeline';
|
|
20
21
|
import { useTableSelection } from './useTableSelection';
|
|
21
22
|
import { useTableExpand } from './useTableExpand';
|
|
@@ -38,6 +39,9 @@ export var useTableSetup = function useTableSetup(props) {
|
|
|
38
39
|
prefixCls = _props$prefixCls === void 0 ? TABLE_DEFAULT_PREFIX : _props$prefixCls,
|
|
39
40
|
_props$variant = props.variant,
|
|
40
41
|
variant = _props$variant === void 0 ? TABLE_DEFAULT_VARIANT : _props$variant,
|
|
42
|
+
_props$size = props.size,
|
|
43
|
+
size = _props$size === void 0 ? TABLE_DEFAULT_SIZE : _props$size,
|
|
44
|
+
style = props.style,
|
|
41
45
|
columns = props.columns,
|
|
42
46
|
dataSource = props.dataSource,
|
|
43
47
|
rowKey = props.rowKey,
|
|
@@ -63,7 +67,7 @@ export var useTableSetup = function useTableSetup(props) {
|
|
|
63
67
|
direction = props.direction,
|
|
64
68
|
rowHoverable = props.rowHoverable,
|
|
65
69
|
onScroll = props.onScroll,
|
|
66
|
-
rest = __rest(props, ["className", "prefixCls", "variant", "columns", "dataSource", "rowKey", "empty", "bordered", "scroll", "sticky", "pagination", "rowSelection", "loading", "onChange", "childrenColumnName", "indentSize", "expandable", "onRow", "rowClassName", "summary", "footer", "showHeader", "tableLayout", "components", "direction", "rowHoverable", "onScroll"]);
|
|
70
|
+
rest = __rest(props, ["className", "prefixCls", "variant", "size", "style", "columns", "dataSource", "rowKey", "empty", "bordered", "scroll", "sticky", "pagination", "rowSelection", "loading", "onChange", "childrenColumnName", "indentSize", "expandable", "onRow", "rowClassName", "summary", "footer", "showHeader", "tableLayout", "components", "direction", "rowHoverable", "onScroll"]);
|
|
67
71
|
// Pulled out of `rest` so it doesn't land on the wrapper div; each entry point
|
|
68
72
|
// forwards its own `scroll` to the kernel (see ForwardedKernelProps note).
|
|
69
73
|
void _scroll;
|
|
@@ -103,6 +107,7 @@ export var useTableSetup = function useTableSetup(props) {
|
|
|
103
107
|
var renderedColumns = useTableColumns({
|
|
104
108
|
columns: columns,
|
|
105
109
|
variant: variant,
|
|
110
|
+
size: size,
|
|
106
111
|
expandable: expandable,
|
|
107
112
|
mergedExpandedRowKeys: expand.mergedExpandedRowKeys,
|
|
108
113
|
triggerExpand: expand.triggerExpand,
|
|
@@ -176,7 +181,7 @@ export var useTableSetup = function useTableSetup(props) {
|
|
|
176
181
|
})
|
|
177
182
|
}) : null;
|
|
178
183
|
var wrapperClassName = joinCls("".concat(prefixCls, "-wrapper"), isLoading && "".concat(prefixCls, "-wrapper--loading"), bordered && "".concat(prefixCls, "-wrapper--bordered"));
|
|
179
|
-
var tableClassName = joinCls(cls(), cls(variant), rowHoverable === false && cls('no-hover'), className);
|
|
184
|
+
var tableClassName = joinCls(cls(), cls(variant), cls(size), rowHoverable === false && cls('no-hover'), className);
|
|
180
185
|
var emptyText = isLoading && !dataSource.length ? _jsx("span", {}) : _jsx(TableEmptyState, {
|
|
181
186
|
empty: empty
|
|
182
187
|
});
|
|
@@ -190,7 +195,9 @@ export var useTableSetup = function useTableSetup(props) {
|
|
|
190
195
|
currentDataSource: pipeline.currentDataSource,
|
|
191
196
|
mergedExpandable: mergedExpandable,
|
|
192
197
|
emptyText: emptyText,
|
|
193
|
-
wrapperHtmlProps: rest,
|
|
198
|
+
wrapperHtmlProps: Object.assign(Object.assign({}, rest), {
|
|
199
|
+
style: Object.assign(Object.assign({}, tableSizeCssVars(size)), style)
|
|
200
|
+
}),
|
|
194
201
|
forwardedKernelProps: {
|
|
195
202
|
rowKey: rowKey,
|
|
196
203
|
childrenColumnName: childrenColumnName,
|
|
@@ -210,4 +217,4 @@ export var useTableSetup = function useTableSetup(props) {
|
|
|
210
217
|
paginationNode: paginationNode
|
|
211
218
|
};
|
|
212
219
|
};
|
|
213
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNldHVwLmpzIiwiY29tcG9uZW50cy9UYWJsZS9zcmMvY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlU2V0dXAudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJ1c2VMb2NhbGUiLCJQYWdpbmF0aW9uIiwiU3Bpbm5lciIsIkV4cGFuZGVkUm93Q29udGFpbmVyIiwiVGFibGVFbXB0eVN0YXRlIiwiVEFCTEVfQkxPQ0siLCJUQUJMRV9ERUZBVUxUX1BSRUZJWCIsIlRBQkxFX0RFRkFVTFRfVkFSSUFOVCIsInVzZVRhYmxlRGF0YVBpcGVsaW5lIiwidXNlVGFibGVTZWxlY3Rpb24iLCJ1c2VUYWJsZUV4cGFuZCIsInVzZVRhYmxlQ29sdW1ucyIsInVzZVRhYmxlU2V0dXAiLCJwcm9wcyIsIl9hIiwiX2IiLCJfYyIsImxvY2FsZSIsIl9wcm9wcyRjbGFzc05hbWUiLCJjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiX3Byb3BzJHZhcmlhbnQiLCJ2YXJpYW50IiwiY29sdW1ucyIsImRhdGFTb3VyY2UiLCJyb3dLZXkiLCJlbXB0eSIsImJvcmRlcmVkIiwiX3Njcm9sbCIsInNjcm9sbCIsInN0aWNreSIsInBhZ2luYXRpb24iLCJyb3dTZWxlY3Rpb24iLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJvbkNoYW5nZSIsImNoaWxkcmVuQ29sdW1uTmFtZSIsImluZGVudFNpemUiLCJleHBhbmRhYmxlIiwib25Sb3ciLCJyb3dDbGFzc05hbWUiLCJzdW1tYXJ5IiwiZm9vdGVyIiwic2hvd0hlYWRlciIsInRhYmxlTGF5b3V0IiwiY29tcG9uZW50cyIsImRpcmVjdGlvbiIsInJvd0hvdmVyYWJsZSIsIm9uU2Nyb2xsIiwicmVzdCIsImNscyIsImxvYWRpbmdDb25maWciLCJzcGlubmluZyIsImlzTG9hZGluZyIsImxvYWRpbmdJbmRpY2F0b3IiLCJpbmRpY2F0b3IiLCJ0eXBlIiwidGl0bGUiLCJnZXRSb3dLZXkiLCJyZWNvcmQiLCJpbmRleCIsInBpcGVsaW5lIiwic2VsZWN0aW9uIiwiY3VycmVudERhdGFTb3VyY2UiLCJleHBhbmQiLCJyZW5kZXJlZENvbHVtbnMiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwibWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwiY2hlY2tib3hQcm9wc01hcCIsImlzQWxsU2VsZWN0ZWQiLCJpc0luZGV0ZXJtaW5hdGUiLCJ0cmlnZ2VyU2VsZWN0aW9uIiwidHJpZ2dlclNlbGVjdEFsbCIsInNvcnRlciIsInNldFNvcnRlciIsImZpbHRlcnMiLCJzZXRGaWx0ZXJzIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXhwYW5kZWRSb3dSZW5kZXIiLCJ1bmRlZmluZWQiLCJjb25zb2xlIiwid2FybiIsIndyYXBwZWRFeHBhbmRlZFJvd1JlbmRlciIsImluZGVudCIsImV4cGFuZGVkIiwicm93RXhwYW5kYWJsZSIsImNoaWxkcmVuIiwia2VybmVsT25FeHBhbmQiLCJyZWNvcmRLZXkiLCJvbktlcm5lbEV4cGFuZCIsIm1lcmdlZEV4cGFuZGFibGUiLCJhc3NpZ24iLCJleHBhbmRlZFJvd0tleXMiLCJzaG93RXhwYW5kQ29sdW1uIiwib25FeHBhbmQiLCJyZXNvbHZlZFBhZ2luYXRpb24iLCJjdXJyZW50IiwicGFnZVNpemUiLCJwYWdpbmF0aW9uTm9kZSIsImNvbmNhdCIsInRvdGFsIiwibmV4dFBhZ2UiLCJuZXh0UGFnZVNpemUiLCJzZXRQYWdpbmF0aW9uIiwiY3VycmVudFBhZ2luYXRpb24iLCJ3cmFwcGVyQ2xhc3NOYW1lIiwidGFibGVDbGFzc05hbWUiLCJlbXB0eVRleHQiLCJ3cmFwcGVySHRtbFByb3BzIiwiZm9yd2FyZGVkS2VybmVsUHJvcHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUNDLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBR1YsQ0FBQyxDQUFDRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDO0VBQ3pCO0VBQ0osT0FBT1Is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QUFWQSxVQUFVO01BQ1ZDLFdBQVcsRUFBWEEsV0FBVztNQUNYQyxVQUFVLEVBQVZBLFVBQVU7TUFDVkMsU0FBUyxFQUFUQSxTQUFTO01BQ1RDLFlBQVksRUFBWkEsWUFBWTtNQUNaakIsTUFBTSxFQUFOQSxNQUFNO01BQ05rQixRQUFRLEVBQVJBO0lENUlFLENDNklIO0lBQ0RxRCxjQUFjLEVBQWRBO0VENUlBLENDNklEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVTZXR1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCBjbGFzc25hbWVzLCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uL0NvbmZpZ1Byb3ZpZGVyJztcbmltcG9ydCB7IFBhZ2luYXRpb24gfSBmcm9tICcuLi8uLi9QYWdpbmF0aW9uJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi9TcGlubmVyJztcbmltcG9ydCB7IEV4cGFuZGVkUm93Q29udGFpbmVyIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0V4cGFuZGVkUm93Q29udGFpbmVyJztcbmltcG9ydCB7IFRhYmxlRW1wdHlTdGF0ZSB9IGZyb20gJy4uL3JlbmRlcmVycy9FbXB0eVN0YXRlJztcbmltcG9ydCB7IFRBQkxFX0JMT0NLLCBUQUJMRV9ERUZBVUxUX1BSRUZJWCwgVEFCTEVfREVGQVVMVF9WQVJJQU5ULCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VUYWJsZURhdGFQaXBlbGluZSB9IGZyb20gJy4vdXNlVGFibGVEYXRhUGlwZWxpbmUnO1xuaW1wb3J0IHsgdXNlVGFibGVTZWxlY3Rpb24gfSBmcm9tICcuL3VzZVRhYmxlU2VsZWN0aW9uJztcbmltcG9ydCB7IHVzZVRhYmxlRXhwYW5kIH0gZnJvbSAnLi91c2VUYWJsZUV4cGFuZCc7XG5pbXBvcnQgeyB1c2VUYWJsZUNvbHVtbnMgfSBmcm9tICcuL3VzZVRhYmxlQ29sdW1ucyc7XG4vKipcbiAqIENlbnRyYWxpc2VzIHRoZSB3aXJpbmcgc2hhcmVkIGJ5IGBUYWJsZWAgYW5kIGBWaXJ0dWFsVGFibGVgOlxuICogIC0gZGVzdHJ1Y3R1cmUgcHJvcHNcbiAqICAtIHJlc29sdmUgcm93IGtleVxuICogIC0gcnVuIHBpcGVsaW5lIC8gc2VsZWN0aW9uIC8gZXhwYW5kIC8gY29sdW1uIHRyYW5zZm9ybXNcbiAqICAtIGJ1aWxkIGtlcm5lbC1yZWFkeSBwcm9wc1xuICogIC0gc3BsaXQgb2ZmIHBhc3MtdGhyb3VnaCBIVE1MIGF0dHJpYnV0ZXMgc28gdGhleSBjYW4gbGFuZCBvbiB0aGUgb3V0ZXIgd3JhcHBlclxuICogICAgZGl2IChpbnN0ZWFkIG9mIGJlaW5nIHNwcmVhZCB1bnR5cGVkIGludG8gdGhlIGtlcm5lbCB2aWEgYHJlc3QgYXMgb2JqZWN0YCkuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VUYWJsZVNldHVwID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgbG9jYWxlID0gdXNlTG9jYWxlKCdUYWJsZScpO1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9IFRBQkxFX0RFRkFVTFRfUFJFRklYLCB2YXJpYW50ID0gVEFCTEVfREVGQVVMVF9WQVJJQU5ULCBjb2x1bW5zLCBkYXRhU291cmNlLCByb3dLZXksIGVtcHR5LCBib3JkZXJlZCwgc2Nyb2xsOiBfc2Nyb2xsLCBzdGlja3ksIHBhZ2luYXRpb24sIHJvd1NlbGVjdGlvbiwgbG9hZGluZyA9IGZhbHNlLCBvbkNoYW5nZSwgY2hpbGRyZW5Db2x1bW5OYW1lLCBpbmRlbnRTaXplLCBleHBhbmRhYmxlLCBvblJvdywgcm93Q2xhc3NOYW1lLCBzdW1tYXJ5LCBmb290ZXIsIHNob3dIZWFkZXIsIHRhYmxlTGF5b3V0LCBjb21wb25lbnRzLCBkaXJlY3Rpb24sIHJvd0hvdmVyYWJsZSwgb25TY3JvbGwgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIiwgXCJwcmVmaXhDbHNcIiwgXCJ2YXJpYW50XCIsIFwiY29sdW1uc1wiLCBcImRhdGFTb3VyY2VcIiwgXCJyb3dLZXlcIiwgXCJlbXB0eVwiLCBcImJvcmRlcmVkXCIsIFwic2Nyb2xsXCIsIFwic3RpY2t5XCIsIFwicGFnaW5hdGlvblwiLCBcInJvd1NlbGVjdGlvblwiLCBcImxvYWRpbmdcIiwgXCJvbkNoYW5nZVwiLCBcImNoaWxkcmVuQ29sdW1uTmFtZVwiLCBcImluZGVudFNpemVcIiwgXCJleHBhbmRhYmxlXCIsIFwib25Sb3dcIiwgXCJyb3dDbGFzc05hbWVcIiwgXCJzdW1tYXJ5XCIsIFwiZm9vdGVyXCIsIFwic2hvd0hlYWRlclwiLCBcInRhYmxlTGF5b3V0XCIsIFwiY29tcG9uZW50c1wiLCBcImRpcmVjdGlvblwiLCBcInJvd0hvdmVyYWJsZVwiLCBcIm9uU2Nyb2xsXCJdKTtcbiAgICAvLyBQdWxsZWQgb3V0IG9mIGByZXN0YCBzbyBpdCBkb2Vzbid0IGxhbmQgb24gdGhlIHdyYXBwZXIgZGl2OyBlYWNoIGVudHJ5IHBvaW50XG4gICAgLy8gZm9yd2FyZHMgaXRzIG93biBgc2Nyb2xsYCB0byB0aGUga2VybmVsIChzZWUgRm9yd2FyZGVkS2VybmVsUHJvcHMgbm90ZSkuXG4gICAgdm9pZCBfc2Nyb2xsO1xuICAgIGNvbnN0IGNscyA9IGNsYXNzbmFtZXMoVEFCTEVfQkxPQ0spO1xuICAgIC8vIGBsb2FkaW5nYCBhY2NlcHRzIGEgYm9vbGVhbiBvciBhbiBvYmplY3Qgb3ZlcnJpZGUuIFRoZSBvYmplY3QgZm9ybSBkZWZhdWx0c1xuICAgIC8vIGBzcGlubmluZ2AgdG8gdHJ1ZSAocGFzc2luZyBhIGNvbmZpZyBpbXBsaWVzIGludGVudCB0byBzaG93IHRoZSBvdmVybGF5KSBhbmRcbiAgICAvLyBmYWxscyBiYWNrIHRvIHRoZSBicmFuZCBTcGlubmVyIHdoZW4gbm8gY3VzdG9tIGBpbmRpY2F0b3JgIGlzIHN1cHBsaWVkLlxuICAgIGNvbnN0IGxvYWRpbmdDb25maWcgPSB0eXBlb2YgbG9hZGluZyA9PT0gJ2Jvb2xlYW4nID8geyBzcGlubmluZzogbG9hZGluZyB9IDogbG9hZGluZztcbiAgICBjb25zdCBpc0xvYWRpbmcgPSAoX2EgPSBsb2FkaW5nQ29uZmlnLnNwaW5uaW5nKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgIGNvbnN0IGxvYWRpbmdJbmRpY2F0b3IgPSAoX2IgPSBsb2FkaW5nQ29uZmlnLmluZGljYXRvcikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogX2pzeChTcGlubmVyLCB7IHR5cGU6IFwiYnJhbmRcIiwgdGl0bGU6IGxvY2FsZS5sb2FkaW5nIH0pO1xuICAgIGNvbnN0IGdldFJvd0tleSA9IHVzZU1lbW9pemVkRm4oKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHJvd0tleSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyByb3dLZXkocmVjb3JkKVxuICAgICAgICAgICAgOiAoX2EgPSByZWNvcmRbcm93S2V5ICE9PSBudWxsICYmIHJvd0tleSAhPT0gdm9pZCAwID8gcm93S2V5IDogJ2tleSddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBpbmRleDtcbiAgICB9KTtcbiAgICBjb25zdCBwaXBlbGluZSA9IHVzZVRhYmxlRGF0YVBpcGVsaW5lKHsgY29sdW1ucywgZGF0YVNvdXJjZSwgcGFnaW5hdGlvbiwgb25DaGFuZ2UgfSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdXNlVGFibGVTZWxlY3Rpb24oe1xuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBwaXBlbGluZS5jdXJyZW50RGF0YVNvdXJjZSxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIH0pO1xuICAgIGNvbnN0IGV4cGFuZCA9IHVzZVRhYmxlRXhwYW5kKHsgZXhwYW5kYWJsZSwgZGF0YVNvdXJjZSwgZ2V0Um93S2V5IH0pO1xuICAgIGNvbnN0IHJlbmRlcmVkQ29sdW1ucyA9IHVzZVRhYmxlQ29sdW1ucyh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIHZhcmlhbnQsXG4gICAgICAgIGV4cGFuZGFibGUsXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5czogZXhwYW5kLm1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgdHJpZ2dlckV4cGFuZDogZXhwYW5kLnRyaWdnZXJFeHBhbmQsXG4gICAgICAgIHJvd1NlbGVjdGlvbixcbiAgICAgICAgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzOiBzZWxlY3Rpb24ubWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLFxuICAgICAgICBjaGVja2JveFByb3BzTWFwOiBzZWxlY3Rpb24uY2hlY2tib3hQcm9wc01hcCxcbiAgICAgICAgaXNBbGxTZWxlY3RlZDogc2VsZWN0aW9uLmlzQWxsU2VsZWN0ZWQsXG4gICAgICAgIGlzSW5kZXRlcm1pbmF0ZTogc2VsZWN0aW9uLmlzSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgdHJpZ2dlclNlbGVjdGlvbjogc2VsZWN0aW9uLnRyaWdnZXJTZWxlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJTZWxlY3RBbGw6IHNlbGVjdGlvbi50cmlnZ2VyU2VsZWN0QWxsLFxuICAgICAgICBzb3J0ZXI6IHBpcGVsaW5lLnNvcnRlcixcbiAgICAgICAgc2V0U29ydGVyOiBwaXBlbGluZS5zZXRTb3J0ZXIsXG4gICAgICAgIGZpbHRlcnM6IHBpcGVsaW5lLmZpbHRlcnMsXG4gICAgICAgIHNldEZpbHRlcnM6IHBpcGVsaW5lLnNldEZpbHRlcnMsXG4gICAgICAgIGdldFJvd0tleSxcbiAgICB9KTtcbiAgICAvLyBEZXYtb25seSB3YXJuaW5nOiBtaXhpbmcgcm93LWV4cGFuc2lvbiB3aXRoIHRyZWUtZGF0YSAoY2hpbGRyZW5Db2x1bW5OYW1lKVxuICAgIC8vIHByb2R1Y2VzIHR3byBjaGV2cm9ucyBwZXIgcm93ICh0aGUgbGVmdG1vc3QgX19leHBhbmRfXyBjb2x1bW4gZnJvbSB0aGUgd3JhcHBlclxuICAgIC8vIHBsdXMgdGhlIGtlcm5lbCdzIHBlci1pbmRlbnQgbmVzdCBleHBhbmQpLiByYy10YWJsZSBoYXMgdGhlIHNhbWUgZ2FwO1xuICAgIC8vIHBpY2sgb25lIG1vZGUgYXQgYSB0aW1lLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgKChfYyA9IHByb2Nlc3MuZW52KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuTk9ERV9FTlYpICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXIpICYmIGNoaWxkcmVuQ29sdW1uTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tjb21wb25lbnRzLXVpIFRhYmxlXSBDb21iaW5pbmcgYGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXJgIHdpdGggYGNoaWxkcmVuQ29sdW1uTmFtZWAgaXMgbm90IHN1cHBvcnRlZCDigJQgdGhlIGxlZnRtb3N0IGV4cGFuZCBjb2x1bW4gd2lsbCByZW5kZXIgYWxvbmdzaWRlIHRoZSBuZXN0ZWQgdHJlZSBleHBhbmRlci4gVXNlIG9uZSBtb2RlIGF0IGEgdGltZS4nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB3cmFwcGVkRXhwYW5kZWRSb3dSZW5kZXIgPSB1c2VNZW1vaXplZEZuKChyZWNvcmQsIGluZGV4LCBpbmRlbnQsIGV4cGFuZGVkKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gSG9ub3IgYHJvd0V4cGFuZGFibGVgOiBldmVuIGlmIGEgbm9uLWV4cGFuZGFibGUgcm93J3Mga2V5IHNuZWFrcyBpbnRvXG4gICAgICAgIC8vIGBleHBhbmRlZFJvd0tleXNgLCByZWZ1c2UgdG8gcmVuZGVyIGl0cyBleHBhbnNpb24gY29udGVudC5cbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZSkgJiYgIWV4cGFuZGFibGUucm93RXhwYW5kYWJsZShyZWNvcmQpKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiAoX2pzeChFeHBhbmRlZFJvd0NvbnRhaW5lciwgeyBjaGlsZHJlbjogKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCByZWNvcmQsIGluZGV4LCBpbmRlbnQsIGV4cGFuZGVkKSB9KSk7XG4gICAgfSk7XG4gICAgLy8gV2lyZSBrZXJuZWwncyBvbkV4cGFuZCAodHJpZ2dlcmVkIGJ5IGV4cGFuZFJvd0J5Q2xpY2spIHRvIG91ciBzdGF0ZS5cbiAgICBjb25zdCBrZXJuZWxPbkV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKGV4cGFuZGVkLCByZWNvcmQpID0+IHtcbiAgICAgICAgLy8gVGhlIGtlcm5lbCBwYXNzZXMgYSByZWNvcmQgZnJvbSBgY3VycmVudERhdGFTb3VyY2VgIChwb3N0IHNvcnQvZmlsdGVyL3BhZ2luYXRlKS5cbiAgICAgICAgLy8gTG9va2luZyBpdCB1cCBhZ2FpbnN0IHRoZSByYXcgYGRhdGFTb3VyY2VgIHJldHVybnMgLTEgd2hlbiB0aGUgY29uc3VtZXJcbiAgICAgICAgLy8gcmVjcmVhdGVzIHRoZSBhcnJheSBlYWNoIHJlbmRlciwgb3IgYSBwb3NpdGlvbmFsbHkgd3JvbmcgaW5kZXggYWZ0ZXIgc29ydC5cbiAgICAgICAgLy8gVXNlIGBjdXJyZW50RGF0YVNvdXJjZWAgc28gdGhlIGluZGV4IG1hdGNoZXMgd2hhdCB0aGUga2VybmVsIGFjdHVhbGx5IHNlZXMuXG4gICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIHBpcGVsaW5lLmN1cnJlbnREYXRhU291cmNlLmluZGV4T2YocmVjb3JkKSk7XG4gICAgICAgIGV4cGFuZC5vbktlcm5lbEV4cGFuZChleHBhbmRlZCwgcmVjb3JkLCByZWNvcmRLZXkpO1xuICAgIH0pO1xuICAgIGNvbnN0IG1lcmdlZEV4cGFuZGFibGUgPSB1c2VNZW1vKCgpID0+IGV4cGFuZGFibGVcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGV4cGFuZGFibGUpLCB7IGV4cGFuZGVkUm93S2V5czogZXhwYW5kLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgZXhwYW5kZWRSb3dSZW5kZXI6IGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXJcbiAgICAgICAgICAgICAgICA/IHdyYXBwZWRFeHBhbmRlZFJvd1JlbmRlclxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBzaG93RXhwYW5kQ29sdW1uOiBmYWxzZSwgb25FeHBhbmQ6IGtlcm5lbE9uRXhwYW5kIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLCBbZXhwYW5kYWJsZSwgZXhwYW5kLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgd3JhcHBlZEV4cGFuZGVkUm93UmVuZGVyLCBrZXJuZWxPbkV4cGFuZF0pO1xuICAgIGNvbnN0IHJlc29sdmVkUGFnaW5hdGlvbiA9IHBpcGVsaW5lLnBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgID8geyBjdXJyZW50OiAxLCBwYWdlU2l6ZTogMTAgfVxuICAgICAgICA6IHBpcGVsaW5lLnBhZ2luYXRpb247XG4gICAgY29uc3QgcGFnaW5hdGlvbk5vZGUgPSBwYWdpbmF0aW9uICE9PSBmYWxzZSA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LXBhZ2luYXRpb25gLCBjaGlsZHJlbjogX2pzeChQYWdpbmF0aW9uLCB7IHRvdGFsOiBwaXBlbGluZS50b3RhbCwgcGFnZVNpemU6IHJlc29sdmVkUGFnaW5hdGlvbi5wYWdlU2l6ZSwgY3VycmVudDogcmVzb2x2ZWRQYWdpbmF0aW9uLmN1cnJlbnQsIG9uQ2hhbmdlOiAobmV4dFBhZ2UsIG5leHRQYWdlU2l6ZSkgPT4gcGlwZWxpbmUuc2V0UGFnaW5hdGlvbigoY3VycmVudFBhZ2luYXRpb24pID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnRQYWdpbmF0aW9uKSwgeyBjdXJyZW50OiBuZXh0UGFnZSwgcGFnZVNpemU6IG5leHRQYWdlU2l6ZSB9KSkpIH0pIH0pKSA6IG51bGw7XG4gICAgY29uc3Qgd3JhcHBlckNsYXNzTmFtZSA9IGpvaW5DbHMoYCR7cHJlZml4Q2xzfS13cmFwcGVyYCwgaXNMb2FkaW5nICYmIGAke3ByZWZpeENsc30td3JhcHBlci0tbG9hZGluZ2AsIGJvcmRlcmVkICYmIGAke3ByZWZpeENsc30td3JhcHBlci0tYm9yZGVyZWRgKTtcbiAgICBjb25zdCB0YWJsZUNsYXNzTmFtZSA9IGpvaW5DbHMoY2xzKCksIGNscyh2YXJpYW50KSwgcm93SG92ZXJhYmxlID09PSBmYWxzZSAmJiBjbHMoJ25vLWhvdmVyJyksIGNsYXNzTmFtZSk7XG4gICAgY29uc3QgZW1wdHlUZXh0ID0gaXNMb2FkaW5nICYmICFkYXRhU291cmNlLmxlbmd0aCA/IF9qc3goXCJzcGFuXCIsIHt9KSA6IF9qc3goVGFibGVFbXB0eVN0YXRlLCB7IGVtcHR5OiBlbXB0eSB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcmVmaXhDbHMsXG4gICAgICAgIHdyYXBwZXJDbGFzc05hbWUsXG4gICAgICAgIHRhYmxlQ2xhc3NOYW1lLFxuICAgICAgICBsb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdJbmRpY2F0b3IsXG4gICAgICAgIHJlbmRlcmVkQ29sdW1ucyxcbiAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IHBpcGVsaW5lLmN1cnJlbnREYXRhU291cmNlLFxuICAgICAgICBtZXJnZWRFeHBhbmRhYmxlLFxuICAgICAgICBlbXB0eVRleHQsXG4gICAgICAgIHdyYXBwZXJIdG1sUHJvcHM6IHJlc3QsXG4gICAgICAgIGZvcndhcmRlZEtlcm5lbFByb3BzOiB7XG4gICAgICAgICAgICByb3dLZXk6IHJvd0tleSxcbiAgICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZSxcbiAgICAgICAgICAgIGluZGVudFNpemUsXG4gICAgICAgICAgICBvblJvdyxcbiAgICAgICAgICAgIHJvd0NsYXNzTmFtZSxcbiAgICAgICAgICAgIHN1bW1hcnksXG4gICAgICAgICAgICBmb290ZXIsXG4gICAgICAgICAgICBzaG93SGVhZGVyLFxuICAgICAgICAgICAgdGFibGVMYXlvdXQsXG4gICAgICAgICAgICBjb21wb25lbnRzLFxuICAgICAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICAgICAgcm93SG92ZXJhYmxlLFxuICAgICAgICAgICAgc3RpY2t5LFxuICAgICAgICAgICAgb25TY3JvbGwsXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2luYXRpb25Ob2RlLFxuICAgIH07XG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
220
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZVNldHVwLmpzIiwiY29tcG9uZW50cy9UYWJsZS9zcmMvY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlU2V0dXAudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsInVzZU1lbW8iLCJ1c2VNZW1vaXplZEZuIiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJ1c2VMb2NhbGUiLCJQYWdpbmF0aW9uIiwiU3Bpbm5lciIsIkV4cGFuZGVkUm93Q29udGFpbmVyIiwiVGFibGVFbXB0eVN0YXRlIiwiVEFCTEVfQkxPQ0siLCJUQUJMRV9ERUZBVUxUX1BSRUZJWCIsIlRBQkxFX0RFRkFVTFRfVkFSSUFOVCIsIlRBQkxFX0RFRkFVTFRfU0laRSIsInRhYmxlU2l6ZUNzc1ZhcnMiLCJ1c2VUYWJsZURhdGFQaXBlbGluZSIsInVzZVRhYmxlU2VsZWN0aW9uIiwidXNlVGFibGVFeHBhbmQiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ1c2VUYWJsZVNldHVwIiwicHJvcHMiLCJfYSIsIl9iIiwiX2MiLCJsb2NhbGUiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRzaXplIiwic2l6ZSIsInN0eWxlIiwiY29sdW1ucyIsImRhdGFTb3VyY2UiLCJyb3dLZXkiLCJlbXB0eSIsImJvcmRlcmVkIiwiX3Njcm9sbCIsInNjcm9sbCIsInN0aWNreSIsInBhZ2luYXRpb24iLCJyb3dTZWxlY3Rpb24iLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJvbkNoYW5nZSIsImNoaWxkcmVuQ29sdW1uTmFtZSIsImluZGVudFNpemUiLCJleHBhbmRhYmxlIiwib25Sb3ciLCJyb3dDbGFzc05hbWUiLCJzdW1tYXJ5IiwiZm9vdGVyIiwic2hvd0hlYWRlciIsInRhYmxlTGF5b3V0IiwiY29tcG9uZW50cyIsImRpcmVjdGlvbiIsInJvd0hvdmVyYWJsZSIsIm9uU2Nyb2xsIiwicmVzdCIsImNscyIsImxvYWRpbmdDb25maWciLCJzcGlubmluZyIsImlzTG9hZGluZyIsImxvYWRpbmdJbmRpY2F0b3IiLCJpbmRpY2F0b3IiLCJ0eXBlIiwidGl0bGUiLCJnZXRSb3dLZXkiLCJyZWNvcmQiLCJpbmRleCIsInBpcGVsaW5lIiwic2VsZWN0aW9uIiwiY3VycmVudERhdGFTb3VyY2UiLCJleHBhbmQiLCJyZW5kZXJlZENvbHVtbnMiLCJtZXJnZWRFeHBhbmRlZFJvd0tleXMiLCJ0cmlnZ2VyRXhwYW5kIiwibWVyZ2VkU2VsZWN0ZWRSb3dLZXlzIiwiY2hlY2tib3hQcm9wc01hcCIsImlzQWxsU2VsZWN0ZWQiLCJpc0luZGV0ZXJtaW5hdGUiLCJ0cmlnZ2VyU2VsZWN0aW9uIiwidHJpZ2dlclNlbGVjdEFsbCIsInNvcnRlciIsInNldFNvcnRlciIsImZpbHRlcnMiLCJzZXRGaWx0ZXJzIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXhwYW5kZWRSb3dSZW5kZXIiLCJ1bmRlZmluZWQiLCJjb25zb2xlIiwid2FybiIsIndyYXBwZWRFeHBhbmRlZFJvd1JlbmRlciIsImluZGVudCIsImV4cGFuZGVkIiwicm93RXhwYW5kYWJsZSIsImNoaWxkcmVuIiwia2VybmVsT25FeHBhbmQiLCJyZWNvcmRLZXkiLCJvbktlcm5lbEV4cGFuZCIsIm1lcmdlZEV4cGFuZGFibGUiLCJhc3NpZ24iLCJleHBhbmRlZFJvd0tleXMiLCJzaG93RXhwYW5kQ29sdW1uIiwib25FeHBhbmQiLCJyZXNvbHZlZFBhZ2luYXRpb24iLCJjdXJyZW50IiwicGFnZVNpemUiLCJwYWdpbmF0aW9uTm9kZSIsImNvbmNhdCIsInRvdGFsIiwibmV4dFBhZ2UiLCJuZXh0UGFnZVNpemUiLCJzZXRQYWdpbmF0aW9uIiwiY3VycmVudFBhZ2luYXRpb24iLCJ3cmFwcGVyQ2xhc3NOYW1lIiwidGFibGVDbGFzc05hbWUiLCJlbXB0eVRleHQiLCJ3cmFwcGVySHRtbFByb3BzIiwiZm9yd2FyZGVkS2VybmVsUHJvcHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUNDLENBQUMsQ0FBQ08sQ0FBQyxD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O0lBQ2ZGLGlCQUFpQixFQUFFRixRQUFRLENBQUNFLGlCQUFpQjtJQUM3QzhCLGdCQUFnQixFQUFoQkEsZ0JBQWdCO0lBQ2hCaUIsU0FBUyxFQUFUQSxTQUFTO0lBQ1RDLGdCQUFnQixFQUFBcEksTUFBQSxDQUFBbUgsTUFBQSxDQUFBbkgsTUFBQSxDQUFBbUgsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFPN0MsSUFBSSxDQUFBLEVBQUE7TUFBRTNCLEtBQUssRUFBQTNDLE1BQUEsQ0FBQW1ILE1BQUEsQ0FBQW5ILE1BQUEsQ0FBQW1ILE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTzNGLGdCQUFnQixDQUFDa0IsSUFBSSxDQUFDLENBQUEsRUFBS0MsS0FBSztJQUFBLENBQUEsQ0FBSTtJQUM3RTBGLG9CQUFvQixFQUFFO01BQ3BCdkYsTUFBTSxFQUFFQSxNQUF1QztNQUMvQ1csa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJDLFVBQVUsRUFBVkEsVUFBVTtNQUNWRSxLQUFLLEVBQUxBLEtBQUs7TUFDTEMsWUFBWSxFQUFaQSxZQUFZO01BQ1pDLE9BQU8sRUFBUEEsT0FBTztNQUNQQyxNQUFNLEVBQU5BLE1BQU07TUFDTkMsVUFBVSxFQUFWQSxVQUFVO01BQ1ZDLFdBQVcsRUFBWEEsV0FBVztNQUNYQyxVQUFVLEVBQVZBLFVBQVU7TUFDVkMsU0FBUyxFQUFUQSxTQUFTO01BQ1RDLFlBQVksRUFBWkEsWUFBWTtNQUNaakIsTUFBTSxFQUFOQSxNQUFNO01BQ05rQixRQUFRLEVBQVJBO0lEL0lFLENDZ0pIO0lBQ0RxRCxjQUFjLEVBQWRBO0VEL0lBLENDZ0pEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVTZXR1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCBjbGFzc25hbWVzLCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uL0NvbmZpZ1Byb3ZpZGVyJztcbmltcG9ydCB7IFBhZ2luYXRpb24gfSBmcm9tICcuLi8uLi9QYWdpbmF0aW9uJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuLi8uLi9TcGlubmVyJztcbmltcG9ydCB7IEV4cGFuZGVkUm93Q29udGFpbmVyIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0V4cGFuZGVkUm93Q29udGFpbmVyJztcbmltcG9ydCB7IFRhYmxlRW1wdHlTdGF0ZSB9IGZyb20gJy4uL3JlbmRlcmVycy9FbXB0eVN0YXRlJztcbmltcG9ydCB7IFRBQkxFX0JMT0NLLCBUQUJMRV9ERUZBVUxUX1BSRUZJWCwgVEFCTEVfREVGQVVMVF9WQVJJQU5ULCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1NJWkUsIHRhYmxlU2l6ZUNzc1ZhcnMgfSBmcm9tICcuLi9zaXplJztcbmltcG9ydCB7IHVzZVRhYmxlRGF0YVBpcGVsaW5lIH0gZnJvbSAnLi91c2VUYWJsZURhdGFQaXBlbGluZSc7XG5pbXBvcnQgeyB1c2VUYWJsZVNlbGVjdGlvbiB9IGZyb20gJy4vdXNlVGFibGVTZWxlY3Rpb24nO1xuaW1wb3J0IHsgdXNlVGFibGVFeHBhbmQgfSBmcm9tICcuL3VzZVRhYmxlRXhwYW5kJztcbmltcG9ydCB7IHVzZVRhYmxlQ29sdW1ucyB9IGZyb20gJy4vdXNlVGFibGVDb2x1bW5zJztcbi8qKlxuICogQ2VudHJhbGlzZXMgdGhlIHdpcmluZyBzaGFyZWQgYnkgYFRhYmxlYCBhbmQgYFZpcnR1YWxUYWJsZWA6XG4gKiAgLSBkZXN0cnVjdHVyZSBwcm9wc1xuICogIC0gcmVzb2x2ZSByb3cga2V5XG4gKiAgLSBydW4gcGlwZWxpbmUgLyBzZWxlY3Rpb24gLyBleHBhbmQgLyBjb2x1bW4gdHJhbnNmb3Jtc1xuICogIC0gYnVpbGQga2VybmVsLXJlYWR5IHByb3BzXG4gKiAgLSBzcGxpdCBvZmYgcGFzcy10aHJvdWdoIEhUTUwgYXR0cmlidXRlcyBzbyB0aGV5IGNhbiBsYW5kIG9uIHRoZSBvdXRlciB3cmFwcGVyXG4gKiAgICBkaXYgKGluc3RlYWQgb2YgYmVpbmcgc3ByZWFkIHVudHlwZWQgaW50byB0aGUga2VybmVsIHZpYSBgcmVzdCBhcyBvYmplY3RgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVRhYmxlU2V0dXAgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCBsb2NhbGUgPSB1c2VMb2NhbGUoJ1RhYmxlJyk7XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgcHJlZml4Q2xzID0gVEFCTEVfREVGQVVMVF9QUkVGSVgsIHZhcmlhbnQgPSBUQUJMRV9ERUZBVUxUX1ZBUklBTlQsIHNpemUgPSBUQUJMRV9ERUZBVUxUX1NJWkUsIHN0eWxlLCBjb2x1bW5zLCBkYXRhU291cmNlLCByb3dLZXksIGVtcHR5LCBib3JkZXJlZCwgc2Nyb2xsOiBfc2Nyb2xsLCBzdGlja3ksIHBhZ2luYXRpb24sIHJvd1NlbGVjdGlvbiwgbG9hZGluZyA9IGZhbHNlLCBvbkNoYW5nZSwgY2hpbGRyZW5Db2x1bW5OYW1lLCBpbmRlbnRTaXplLCBleHBhbmRhYmxlLCBvblJvdywgcm93Q2xhc3NOYW1lLCBzdW1tYXJ5LCBmb290ZXIsIHNob3dIZWFkZXIsIHRhYmxlTGF5b3V0LCBjb21wb25lbnRzLCBkaXJlY3Rpb24sIHJvd0hvdmVyYWJsZSwgb25TY3JvbGwgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIiwgXCJwcmVmaXhDbHNcIiwgXCJ2YXJpYW50XCIsIFwic2l6ZVwiLCBcInN0eWxlXCIsIFwiY29sdW1uc1wiLCBcImRhdGFTb3VyY2VcIiwgXCJyb3dLZXlcIiwgXCJlbXB0eVwiLCBcImJvcmRlcmVkXCIsIFwic2Nyb2xsXCIsIFwic3RpY2t5XCIsIFwicGFnaW5hdGlvblwiLCBcInJvd1NlbGVjdGlvblwiLCBcImxvYWRpbmdcIiwgXCJvbkNoYW5nZVwiLCBcImNoaWxkcmVuQ29sdW1uTmFtZVwiLCBcImluZGVudFNpemVcIiwgXCJleHBhbmRhYmxlXCIsIFwib25Sb3dcIiwgXCJyb3dDbGFzc05hbWVcIiwgXCJzdW1tYXJ5XCIsIFwiZm9vdGVyXCIsIFwic2hvd0hlYWRlclwiLCBcInRhYmxlTGF5b3V0XCIsIFwiY29tcG9uZW50c1wiLCBcImRpcmVjdGlvblwiLCBcInJvd0hvdmVyYWJsZVwiLCBcIm9uU2Nyb2xsXCJdKTtcbiAgICAvLyBQdWxsZWQgb3V0IG9mIGByZXN0YCBzbyBpdCBkb2Vzbid0IGxhbmQgb24gdGhlIHdyYXBwZXIgZGl2OyBlYWNoIGVudHJ5IHBvaW50XG4gICAgLy8gZm9yd2FyZHMgaXRzIG93biBgc2Nyb2xsYCB0byB0aGUga2VybmVsIChzZWUgRm9yd2FyZGVkS2VybmVsUHJvcHMgbm90ZSkuXG4gICAgdm9pZCBfc2Nyb2xsO1xuICAgIGNvbnN0IGNscyA9IGNsYXNzbmFtZXMoVEFCTEVfQkxPQ0spO1xuICAgIC8vIGBsb2FkaW5nYCBhY2NlcHRzIGEgYm9vbGVhbiBvciBhbiBvYmplY3Qgb3ZlcnJpZGUuIFRoZSBvYmplY3QgZm9ybSBkZWZhdWx0c1xuICAgIC8vIGBzcGlubmluZ2AgdG8gdHJ1ZSAocGFzc2luZyBhIGNvbmZpZyBpbXBsaWVzIGludGVudCB0byBzaG93IHRoZSBvdmVybGF5KSBhbmRcbiAgICAvLyBmYWxscyBiYWNrIHRvIHRoZSBicmFuZCBTcGlubmVyIHdoZW4gbm8gY3VzdG9tIGBpbmRpY2F0b3JgIGlzIHN1cHBsaWVkLlxuICAgIGNvbnN0IGxvYWRpbmdDb25maWcgPSB0eXBlb2YgbG9hZGluZyA9PT0gJ2Jvb2xlYW4nID8geyBzcGlubmluZzogbG9hZGluZyB9IDogbG9hZGluZztcbiAgICBjb25zdCBpc0xvYWRpbmcgPSAoX2EgPSBsb2FkaW5nQ29uZmlnLnNwaW5uaW5nKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgIGNvbnN0IGxvYWRpbmdJbmRpY2F0b3IgPSAoX2IgPSBsb2FkaW5nQ29uZmlnLmluZGljYXRvcikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogX2pzeChTcGlubmVyLCB7IHR5cGU6IFwiYnJhbmRcIiwgdGl0bGU6IGxvY2FsZS5sb2FkaW5nIH0pO1xuICAgIGNvbnN0IGdldFJvd0tleSA9IHVzZU1lbW9pemVkRm4oKHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gdHlwZW9mIHJvd0tleSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyByb3dLZXkocmVjb3JkKVxuICAgICAgICAgICAgOiAoX2EgPSByZWNvcmRbcm93S2V5ICE9PSBudWxsICYmIHJvd0tleSAhPT0gdm9pZCAwID8gcm93S2V5IDogJ2tleSddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBpbmRleDtcbiAgICB9KTtcbiAgICBjb25zdCBwaXBlbGluZSA9IHVzZVRhYmxlRGF0YVBpcGVsaW5lKHsgY29sdW1ucywgZGF0YVNvdXJjZSwgcGFnaW5hdGlvbiwgb25DaGFuZ2UgfSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdXNlVGFibGVTZWxlY3Rpb24oe1xuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIGN1cnJlbnREYXRhU291cmNlOiBwaXBlbGluZS5jdXJyZW50RGF0YVNvdXJjZSxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIH0pO1xuICAgIGNvbnN0IGV4cGFuZCA9IHVzZVRhYmxlRXhwYW5kKHsgZXhwYW5kYWJsZSwgZGF0YVNvdXJjZSwgZ2V0Um93S2V5IH0pO1xuICAgIGNvbnN0IHJlbmRlcmVkQ29sdW1ucyA9IHVzZVRhYmxlQ29sdW1ucyh7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIHZhcmlhbnQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGV4cGFuZGFibGUsXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5czogZXhwYW5kLm1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgdHJpZ2dlckV4cGFuZDogZXhwYW5kLnRyaWdnZXJFeHBhbmQsXG4gICAgICAgIHJvd1NlbGVjdGlvbixcbiAgICAgICAgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzOiBzZWxlY3Rpb24ubWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLFxuICAgICAgICBjaGVja2JveFByb3BzTWFwOiBzZWxlY3Rpb24uY2hlY2tib3hQcm9wc01hcCxcbiAgICAgICAgaXNBbGxTZWxlY3RlZDogc2VsZWN0aW9uLmlzQWxsU2VsZWN0ZWQsXG4gICAgICAgIGlzSW5kZXRlcm1pbmF0ZTogc2VsZWN0aW9uLmlzSW5kZXRlcm1pbmF0ZSxcbiAgICAgICAgdHJpZ2dlclNlbGVjdGlvbjogc2VsZWN0aW9uLnRyaWdnZXJTZWxlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJTZWxlY3RBbGw6IHNlbGVjdGlvbi50cmlnZ2VyU2VsZWN0QWxsLFxuICAgICAgICBzb3J0ZXI6IHBpcGVsaW5lLnNvcnRlcixcbiAgICAgICAgc2V0U29ydGVyOiBwaXBlbGluZS5zZXRTb3J0ZXIsXG4gICAgICAgIGZpbHRlcnM6IHBpcGVsaW5lLmZpbHRlcnMsXG4gICAgICAgIHNldEZpbHRlcnM6IHBpcGVsaW5lLnNldEZpbHRlcnMsXG4gICAgICAgIGdldFJvd0tleSxcbiAgICB9KTtcbiAgICAvLyBEZXYtb25seSB3YXJuaW5nOiBtaXhpbmcgcm93LWV4cGFuc2lvbiB3aXRoIHRyZWUtZGF0YSAoY2hpbGRyZW5Db2x1bW5OYW1lKVxuICAgIC8vIHByb2R1Y2VzIHR3byBjaGV2cm9ucyBwZXIgcm93ICh0aGUgbGVmdG1vc3QgX19leHBhbmRfXyBjb2x1bW4gZnJvbSB0aGUgd3JhcHBlclxuICAgIC8vIHBsdXMgdGhlIGtlcm5lbCdzIHBlci1pbmRlbnQgbmVzdCBleHBhbmQpLiByYy10YWJsZSBoYXMgdGhlIHNhbWUgZ2FwO1xuICAgIC8vIHBpY2sgb25lIG1vZGUgYXQgYSB0aW1lLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgKChfYyA9IHByb2Nlc3MuZW52KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuTk9ERV9FTlYpICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXIpICYmIGNoaWxkcmVuQ29sdW1uTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tjb21wb25lbnRzLXVpIFRhYmxlXSBDb21iaW5pbmcgYGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXJgIHdpdGggYGNoaWxkcmVuQ29sdW1uTmFtZWAgaXMgbm90IHN1cHBvcnRlZCDigJQgdGhlIGxlZnRtb3N0IGV4cGFuZCBjb2x1bW4gd2lsbCByZW5kZXIgYWxvbmdzaWRlIHRoZSBuZXN0ZWQgdHJlZSBleHBhbmRlci4gVXNlIG9uZSBtb2RlIGF0IGEgdGltZS4nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB3cmFwcGVkRXhwYW5kZWRSb3dSZW5kZXIgPSB1c2VNZW1vaXplZEZuKChyZWNvcmQsIGluZGV4LCBpbmRlbnQsIGV4cGFuZGVkKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gSG9ub3IgYHJvd0V4cGFuZGFibGVgOiBldmVuIGlmIGEgbm9uLWV4cGFuZGFibGUgcm93J3Mga2V5IHNuZWFrcyBpbnRvXG4gICAgICAgIC8vIGBleHBhbmRlZFJvd0tleXNgLCByZWZ1c2UgdG8gcmVuZGVyIGl0cyBleHBhbnNpb24gY29udGVudC5cbiAgICAgICAgaWYgKChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUucm93RXhwYW5kYWJsZSkgJiYgIWV4cGFuZGFibGUucm93RXhwYW5kYWJsZShyZWNvcmQpKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiAoX2pzeChFeHBhbmRlZFJvd0NvbnRhaW5lciwgeyBjaGlsZHJlbjogKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZGVkUm93UmVuZGVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChleHBhbmRhYmxlLCByZWNvcmQsIGluZGV4LCBpbmRlbnQsIGV4cGFuZGVkKSB9KSk7XG4gICAgfSk7XG4gICAgLy8gV2lyZSBrZXJuZWwncyBvbkV4cGFuZCAodHJpZ2dlcmVkIGJ5IGV4cGFuZFJvd0J5Q2xpY2spIHRvIG91ciBzdGF0ZS5cbiAgICBjb25zdCBrZXJuZWxPbkV4cGFuZCA9IHVzZU1lbW9pemVkRm4oKGV4cGFuZGVkLCByZWNvcmQpID0+IHtcbiAgICAgICAgLy8gVGhlIGtlcm5lbCBwYXNzZXMgYSByZWNvcmQgZnJvbSBgY3VycmVudERhdGFTb3VyY2VgIChwb3N0IHNvcnQvZmlsdGVyL3BhZ2luYXRlKS5cbiAgICAgICAgLy8gTG9va2luZyBpdCB1cCBhZ2FpbnN0IHRoZSByYXcgYGRhdGFTb3VyY2VgIHJldHVybnMgLTEgd2hlbiB0aGUgY29uc3VtZXJcbiAgICAgICAgLy8gcmVjcmVhdGVzIHRoZSBhcnJheSBlYWNoIHJlbmRlciwgb3IgYSBwb3NpdGlvbmFsbHkgd3JvbmcgaW5kZXggYWZ0ZXIgc29ydC5cbiAgICAgICAgLy8gVXNlIGBjdXJyZW50RGF0YVNvdXJjZWAgc28gdGhlIGluZGV4IG1hdGNoZXMgd2hhdCB0aGUga2VybmVsIGFjdHVhbGx5IHNlZXMuXG4gICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIHBpcGVsaW5lLmN1cnJlbnREYXRhU291cmNlLmluZGV4T2YocmVjb3JkKSk7XG4gICAgICAgIGV4cGFuZC5vbktlcm5lbEV4cGFuZChleHBhbmRlZCwgcmVjb3JkLCByZWNvcmRLZXkpO1xuICAgIH0pO1xuICAgIGNvbnN0IG1lcmdlZEV4cGFuZGFibGUgPSB1c2VNZW1vKCgpID0+IGV4cGFuZGFibGVcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGV4cGFuZGFibGUpLCB7IGV4cGFuZGVkUm93S2V5czogZXhwYW5kLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgZXhwYW5kZWRSb3dSZW5kZXI6IGV4cGFuZGFibGUuZXhwYW5kZWRSb3dSZW5kZXJcbiAgICAgICAgICAgICAgICA/IHdyYXBwZWRFeHBhbmRlZFJvd1JlbmRlclxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLCBzaG93RXhwYW5kQ29sdW1uOiBmYWxzZSwgb25FeHBhbmQ6IGtlcm5lbE9uRXhwYW5kIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLCBbZXhwYW5kYWJsZSwgZXhwYW5kLm1lcmdlZEV4cGFuZGVkUm93S2V5cywgd3JhcHBlZEV4cGFuZGVkUm93UmVuZGVyLCBrZXJuZWxPbkV4cGFuZF0pO1xuICAgIGNvbnN0IHJlc29sdmVkUGFnaW5hdGlvbiA9IHBpcGVsaW5lLnBhZ2luYXRpb24gPT09IGZhbHNlXG4gICAgICAgID8geyBjdXJyZW50OiAxLCBwYWdlU2l6ZTogMTAgfVxuICAgICAgICA6IHBpcGVsaW5lLnBhZ2luYXRpb247XG4gICAgY29uc3QgcGFnaW5hdGlvbk5vZGUgPSBwYWdpbmF0aW9uICE9PSBmYWxzZSA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXhDbHN9LXBhZ2luYXRpb25gLCBjaGlsZHJlbjogX2pzeChQYWdpbmF0aW9uLCB7IHRvdGFsOiBwaXBlbGluZS50b3RhbCwgcGFnZVNpemU6IHJlc29sdmVkUGFnaW5hdGlvbi5wYWdlU2l6ZSwgY3VycmVudDogcmVzb2x2ZWRQYWdpbmF0aW9uLmN1cnJlbnQsIG9uQ2hhbmdlOiAobmV4dFBhZ2UsIG5leHRQYWdlU2l6ZSkgPT4gcGlwZWxpbmUuc2V0UGFnaW5hdGlvbigoY3VycmVudFBhZ2luYXRpb24pID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnRQYWdpbmF0aW9uKSwgeyBjdXJyZW50OiBuZXh0UGFnZSwgcGFnZVNpemU6IG5leHRQYWdlU2l6ZSB9KSkpIH0pIH0pKSA6IG51bGw7XG4gICAgY29uc3Qgd3JhcHBlckNsYXNzTmFtZSA9IGpvaW5DbHMoYCR7cHJlZml4Q2xzfS13cmFwcGVyYCwgaXNMb2FkaW5nICYmIGAke3ByZWZpeENsc30td3JhcHBlci0tbG9hZGluZ2AsIGJvcmRlcmVkICYmIGAke3ByZWZpeENsc30td3JhcHBlci0tYm9yZGVyZWRgKTtcbiAgICBjb25zdCB0YWJsZUNsYXNzTmFtZSA9IGpvaW5DbHMoY2xzKCksIGNscyh2YXJpYW50KSwgY2xzKHNpemUpLCByb3dIb3ZlcmFibGUgPT09IGZhbHNlICYmIGNscygnbm8taG92ZXInKSwgY2xhc3NOYW1lKTtcbiAgICBjb25zdCBlbXB0eVRleHQgPSBpc0xvYWRpbmcgJiYgIWRhdGFTb3VyY2UubGVuZ3RoID8gX2pzeChcInNwYW5cIiwge30pIDogX2pzeChUYWJsZUVtcHR5U3RhdGUsIHsgZW1wdHk6IGVtcHR5IH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHByZWZpeENscyxcbiAgICAgICAgd3JhcHBlckNsYXNzTmFtZSxcbiAgICAgICAgdGFibGVDbGFzc05hbWUsXG4gICAgICAgIGxvYWRpbmc6IGlzTG9hZGluZyxcbiAgICAgICAgbG9hZGluZ0luZGljYXRvcixcbiAgICAgICAgcmVuZGVyZWRDb2x1bW5zLFxuICAgICAgICBjdXJyZW50RGF0YVNvdXJjZTogcGlwZWxpbmUuY3VycmVudERhdGFTb3VyY2UsXG4gICAgICAgIG1lcmdlZEV4cGFuZGFibGUsXG4gICAgICAgIGVtcHR5VGV4dCxcbiAgICAgICAgd3JhcHBlckh0bWxQcm9wczogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN0KSwgeyBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0YWJsZVNpemVDc3NWYXJzKHNpemUpKSwgc3R5bGUpIH0pLFxuICAgICAgICBmb3J3YXJkZWRLZXJuZWxQcm9wczoge1xuICAgICAgICAgICAgcm93S2V5OiByb3dLZXksXG4gICAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWUsXG4gICAgICAgICAgICBpbmRlbnRTaXplLFxuICAgICAgICAgICAgb25Sb3csXG4gICAgICAgICAgICByb3dDbGFzc05hbWUsXG4gICAgICAgICAgICBzdW1tYXJ5LFxuICAgICAgICAgICAgZm9vdGVyLFxuICAgICAgICAgICAgc2hvd0hlYWRlcixcbiAgICAgICAgICAgIHRhYmxlTGF5b3V0LFxuICAgICAgICAgICAgY29tcG9uZW50cyxcbiAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgIHJvd0hvdmVyYWJsZSxcbiAgICAgICAgICAgIHN0aWNreSxcbiAgICAgICAgICAgIG9uU2Nyb2xsLFxuICAgICAgICB9LFxuICAgICAgICBwYWdpbmF0aW9uTm9kZSxcbiAgICB9O1xufTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -2,7 +2,9 @@ import type React from 'react';
|
|
|
2
2
|
import type { CSSProperties, HTMLAttributes, Key, ReactNode } from 'react';
|
|
3
3
|
import type { CheckboxProps } from "../Checkbox";
|
|
4
4
|
import type { EmptyProps } from "../Empty";
|
|
5
|
+
import type { TypographyBodySize, TypographyLabelSize } from "../Typography";
|
|
5
6
|
import type { DataIndex as InternalDataIndex } from './internal/kernel/interface';
|
|
7
|
+
export type TableSize = 'large' | 'small' | 'extra-small';
|
|
6
8
|
export type TableVariant = 'fill' | 'stroke';
|
|
7
9
|
export type TableAlign = 'left' | 'center' | 'right';
|
|
8
10
|
export type TableSortOrder = 'ascend' | 'descend' | null;
|
|
@@ -24,9 +26,15 @@ export interface TablePaginationConfig {
|
|
|
24
26
|
}
|
|
25
27
|
export interface TableCellRenderMeta<T extends TableRecord = TableRecord> {
|
|
26
28
|
column: TableColumn<T>;
|
|
29
|
+
size: TableSize;
|
|
30
|
+
/** Pass to Typography.Body for custom content that follows the table size. */
|
|
31
|
+
fontSize: TypographyBodySize;
|
|
27
32
|
}
|
|
28
33
|
export interface TableHeaderRenderMeta<T extends TableRecord = TableRecord> {
|
|
29
34
|
column: TableColumn<T>;
|
|
35
|
+
size: TableSize;
|
|
36
|
+
/** Pass to Typography.Label for custom header content. */
|
|
37
|
+
fontSize: TypographyLabelSize;
|
|
30
38
|
}
|
|
31
39
|
export interface TableCellContentValue {
|
|
32
40
|
primary: ReactNode;
|
|
@@ -235,6 +243,8 @@ export interface TableProps<T extends TableRecord = TableRecord> extends Omit<HT
|
|
|
235
243
|
* Defaults to `'key'` at runtime (kernel falls back to row index if the field is absent).
|
|
236
244
|
*/
|
|
237
245
|
rowKey?: string | keyof T | ((record: T) => Key);
|
|
246
|
+
/** Typography and cell density. Defaults to small, preserving the original layout. */
|
|
247
|
+
size?: TableSize;
|
|
238
248
|
variant?: TableVariant;
|
|
239
249
|
bordered?: boolean;
|
|
240
250
|
scroll?: {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { TableColumn, TableRecord } from '../interface';
|
|
2
|
-
export declare const BodyCell: <T extends TableRecord = TableRecord>({ column, value, record, index, }: {
|
|
1
|
+
import type { TableColumn, TableRecord, TableSize } from '../interface';
|
|
2
|
+
export declare const BodyCell: <T extends TableRecord = TableRecord>({ size, column, value, record, index, }: {
|
|
3
|
+
size: TableSize;
|
|
3
4
|
column: TableColumn<T>;
|
|
4
5
|
value: unknown;
|
|
5
6
|
record: T;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { TABLE_SIZE_CONFIG } from '../size';
|
|
3
4
|
import { CellContent } from './CellContent';
|
|
4
5
|
var isCellContentValue = function isCellContentValue(value) {
|
|
5
6
|
return !!value && _typeof(value) === 'object' && 'primary' in value;
|
|
@@ -12,16 +13,20 @@ var isRenderedCell = function isRenderedCell(value) {
|
|
|
12
13
|
return 'props' in obj && _typeof(obj.props) === 'object';
|
|
13
14
|
};
|
|
14
15
|
export var BodyCell = function BodyCell(_ref) {
|
|
15
|
-
var
|
|
16
|
+
var size = _ref.size,
|
|
17
|
+
column = _ref.column,
|
|
16
18
|
value = _ref.value,
|
|
17
19
|
record = _ref.record,
|
|
18
20
|
index = _ref.index;
|
|
19
21
|
var rendered = column.render ? column.render(value, record, index, {
|
|
20
|
-
column: column
|
|
22
|
+
column: column,
|
|
23
|
+
size: size,
|
|
24
|
+
fontSize: TABLE_SIZE_CONFIG[size].fontSize
|
|
21
25
|
}) : value;
|
|
22
26
|
if (isRenderedCell(rendered)) {
|
|
23
27
|
var inner = isCellContentValue(rendered.children) ? _jsx(CellContent, {
|
|
24
|
-
value: rendered.children
|
|
28
|
+
value: rendered.children,
|
|
29
|
+
size: size
|
|
25
30
|
}) : rendered.children;
|
|
26
31
|
return {
|
|
27
32
|
children: inner,
|
|
@@ -30,11 +35,12 @@ export var BodyCell = function BodyCell(_ref) {
|
|
|
30
35
|
}
|
|
31
36
|
if (isCellContentValue(rendered)) {
|
|
32
37
|
return _jsx(CellContent, {
|
|
33
|
-
value: rendered
|
|
38
|
+
value: rendered,
|
|
39
|
+
size: size
|
|
34
40
|
});
|
|
35
41
|
}
|
|
36
42
|
return _jsx(_Fragment, {
|
|
37
43
|
children: rendered
|
|
38
44
|
});
|
|
39
45
|
};
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvcmVuZGVyZXJzL0JvZHlDZWxsLmpzIiwiY29tcG9uZW50cy9UYWJsZS9zcmMvY29tcG9uZW50cy9UYWJsZS9yZW5kZXJlcnMvQm9keUNlbGwudHN4Il0sIm5hbWVzIjpbImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlRBQkxFX1NJWkVfQ09ORklHIiwiQ2VsbENvbnRlbnQiLCJpc0NlbGxDb250ZW50VmFsdWUiLCJ2YWx1ZSIsIl90eXBlb2YiLCJpc1JlbmRlcmVkQ2VsbCIsIm9iaiIsInByb3BzIiwiQm9keUNlbGwiLCJfcmVmIiwic2l6ZSIsImNvbHVtbiIsInJlY29yZCIsImluZGV4IiwicmVuZGVyZWQiLCJyZW5kZXIiLCJmb250U2l6ZSIsImlubmVyIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksRUFBRUMsUUFBUSxJQUFJQyxTQUFTLFFBQVEsbUJBQW1CO0FDQ3RFLFNBQVNDLGlCQUFpQixRQUFRLFNBQVM7QUFDM0MsU0FBU0MsV0FBVyxRQUFRLGVBQWU7QUFFM0MsSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsS0FBYyxFQUFvQztFQUM1RSxPQUFPLENBQUMsQ0FBQ0EsS0FBSyxJQUFJQyxPQUFBLENBQU9ELEtBQUssTUFBSyxRQUFRLElBQUksU0FBUyxJQUFLQSxLQUFpQztBQUNoRyxDQUFDO0FBRUQsSUFBTUUsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUEyQkYsS0FBYyxFQUFtQztFQUM5RixJQUFJLENBQUNBLEtBQUssSUFBSUMsT0FBQSxDQUFPRCxLQUFLLE1BQUssUUFBUSxFQUFFLE9BQU8sS0FBSztFQUNyRCxJQUFNRyxHQUFHLEdBQUdILEtBQWdDO0VBQzVDO0VBQ0EsSUFBSSxVQUFVLElBQUlHLEdBQUcsRUFBRSxPQUFPLEtBQUs7RUFDbkMsT0FBTyxPQUFPLElBQUlBLEdBQUcsSUFBSUYsT0FBQSxDQUFPRSxHQUFHLENBQUNDLEtBQUssTUFBSyxRQUFRO0FBQ3hELENBQUM7QUFFRCxPQUFPLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFBQyxJQUFBLEVBWWhCO0VBQUEsSUFYSEMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSkMsTUFBTSxHQUFBRixJQUFBLENBQU5FLE1BQU07SUFDTlIsS0FBSyxHQUFBTSxJQUFBLENBQUxOLEtBQUs7SUFDTFMsTUFBTSxHQUFBSCxJQUFBLENBQU5HLE1BQU07SUFDTkMsS0FBSyxHQUFBSixJQUFBLENBQUxJLEtBQUs7RUFRTCxJQUFNQyxRQUFRLEdBQUdILE1BQU0sQ0FBQ0ksTUFBTSxHQUMxQkosTUFBTSxDQUFDSSxNQUFNLENBQUNaLEtBQUssRUFBRVMsTUFBTSxFQUFFQyxLQUFLLEVBQUU7SUFBRUYsTUFBTSxFQUFOQSxNQUFNO0lBQUVELElBQUksRUFBSkEsSUFBSTtJQUFFTSxRQUFRLEVBQUVoQixpQkFBaUIsQ0FBQ1UsSUFBSSxDQUFDLENBQUNNO0VBQVEsQ0FBRSxDQUFDLEdBQ2pHYixLQUFLO0VBRVQsSUFBSUUsY0FBYyxDQUFJUyxRQUFRLENBQUMsRUFBRTtJQUMvQixJQUFNRyxLQUFLLEdBQUdmLGtCQUFrQixDQUFDWSxRQUFRLENBQUNJLFFBQVEsQ0FBQyxHQUMvQ3JCLElBQUEsQ0FBQ0ksV0FBVyxFQUFBO01BQUNFLEtBQUssRUFBRVcsUUFBUSxDQUFDSSxRQUFRO01BQUVSLElBQUksRUFBRUE7SUFBSSxDQUFBLENBQUksR0FDckRJLFFBQVEsQ0FBQ0ksUUFBUTtJQUNyQixPQUFPO01BQUVBLFFBQVEsRUFBRUQsS0FBSztNQUFFVixLQUFLLEVBQUVPLFFBQVEsQ0FBQ1A7SUFBSyxDQUFFO0VBQ25EO0VBRUEsSUFBSUwsa0JBQWtCLENBQUNZLFFBQVEsQ0FBQyxFQUFFO0lBQ2hDLE9BQU9qQixJQUFBLENBQUNJLFdBQVcsRUFBQTtNQUFDRSxLQUFLLEVBQUVXLFFBQVE7TUFBRUosSUFBSSxFQUFFQTtJQUFJLENBQUEsQ0FBSTtFQUNyRDtFQUVBLE9BQU9iLElBQUEsQ0FBQUUsU0FBQSxFQUFBO0lBQUFtQixRQUFBLEVBQUdKO0VBQVEsQ0FBQSxDQUFJO0FBQ3hCLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9yZW5kZXJlcnMvQm9keUNlbGwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBUQUJMRV9TSVpFX0NPTkZJRyB9IGZyb20gJy4uL3NpemUnO1xuaW1wb3J0IHsgQ2VsbENvbnRlbnQgfSBmcm9tICcuL0NlbGxDb250ZW50JztcbmNvbnN0IGlzQ2VsbENvbnRlbnRWYWx1ZSA9ICh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ3ByaW1hcnknIGluIHZhbHVlO1xufTtcbmNvbnN0IGlzUmVuZGVyZWRDZWxsID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgb2JqID0gdmFsdWU7XG4gICAgLy8gUmVhY3QgZWxlbWVudHMgYWxzbyBoYXZlICdwcm9wcycsIHNvIGV4Y2x1ZGUgdGhlbSBieSBjaGVja2luZyBmb3IgJCR0eXBlb2ZcbiAgICBpZiAoJyQkdHlwZW9mJyBpbiBvYmopXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gJ3Byb3BzJyBpbiBvYmogJiYgdHlwZW9mIG9iai5wcm9wcyA9PT0gJ29iamVjdCc7XG59O1xuZXhwb3J0IGNvbnN0IEJvZHlDZWxsID0gKHsgc2l6ZSwgY29sdW1uLCB2YWx1ZSwgcmVjb3JkLCBpbmRleCwgfSkgPT4ge1xuICAgIGNvbnN0IHJlbmRlcmVkID0gY29sdW1uLnJlbmRlclxuICAgICAgICA/IGNvbHVtbi5yZW5kZXIodmFsdWUsIHJlY29yZCwgaW5kZXgsIHsgY29sdW1uLCBzaXplLCBmb250U2l6ZTogVEFCTEVfU0laRV9DT05GSUdbc2l6ZV0uZm9udFNpemUgfSlcbiAgICAgICAgOiB2YWx1ZTtcbiAgICBpZiAoaXNSZW5kZXJlZENlbGwocmVuZGVyZWQpKSB7XG4gICAgICAgIGNvbnN0IGlubmVyID0gaXNDZWxsQ29udGVudFZhbHVlKHJlbmRlcmVkLmNoaWxkcmVuKVxuICAgICAgICAgICAgPyBfanN4KENlbGxDb250ZW50LCB7IHZhbHVlOiByZW5kZXJlZC5jaGlsZHJlbiwgc2l6ZTogc2l6ZSB9KVxuICAgICAgICAgICAgOiByZW5kZXJlZC5jaGlsZHJlbjtcbiAgICAgICAgcmV0dXJuIHsgY2hpbGRyZW46IGlubmVyLCBwcm9wczogcmVuZGVyZWQucHJvcHMgfTtcbiAgICB9XG4gICAgaWYgKGlzQ2VsbENvbnRlbnRWYWx1ZShyZW5kZXJlZCkpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goQ2VsbENvbnRlbnQsIHsgdmFsdWU6IHJlbmRlcmVkLCBzaXplOiBzaXplIH0pO1xuICAgIH1cbiAgICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHsgY2hpbGRyZW46IHJlbmRlcmVkIH0pO1xufTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { TableCellContentValue } from '../interface';
|
|
2
|
-
export declare const CellContent: ({ value }: {
|
|
1
|
+
import type { TableCellContentValue, TableSize } from '../interface';
|
|
2
|
+
export declare const CellContent: ({ value, size }: {
|
|
3
3
|
value: TableCellContentValue;
|
|
4
|
+
size: TableSize;
|
|
4
5
|
}) => import("react/jsx-runtime").JSX.Element;
|