td-stylekit 30.17.3 → 32.0.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/CHANGELOG.md +24 -0
- package/dist/es/ActionBar/ActionBar.js +10 -12
- package/dist/es/ActionBar/components/IconButton.d.ts +11 -1
- package/dist/es/ActionBar/components/IconButton.js +28 -8
- package/dist/es/BarChart/BarChart.d.ts +3 -16
- package/dist/es/BarChart/BarChart.js +12 -17
- package/dist/es/Box/Box.js +3 -5
- package/dist/es/Button/Button.d.ts +1 -16
- package/dist/es/Button/Button.js +55 -23
- package/dist/es/Canvas/elements.js +2 -4
- package/dist/es/Checkbox/Checkbox.d.ts +0 -4
- package/dist/es/Checkbox/Checkbox.js +33 -37
- package/dist/es/ColorPicker/ColorPicker.js +2 -4
- package/dist/es/ComparisonChart/ComparisonChart.d.ts +2 -13
- package/dist/es/ComparisonChart/ComparisonChart.js +10 -12
- package/dist/es/DataGrid/DataGrid.d.ts +3 -14
- package/dist/es/DataGrid/DataGrid.js +83 -61
- package/dist/es/DataGrid/components/ColumnHeader.d.ts +2 -6
- package/dist/es/DataGrid/components/ColumnHeader.js +8 -10
- package/dist/es/DataGrid/components/FocusableRow.js +1 -1
- package/dist/es/DataGrid/components/InputCell.js +0 -3
- package/dist/es/DataGrid/components/ScrollableTable.d.ts +0 -15
- package/dist/es/DataGrid/components/ScrollableTable.js +32 -32
- package/dist/es/DataGrid/elements.d.ts +4 -7
- package/dist/es/DataGrid/elements.js +1 -2
- package/dist/es/DataGrid/renderers.js +1 -2
- package/dist/es/DateControl/DateControl.d.ts +1 -6
- package/dist/es/DateControl/DateControl.js +2 -4
- package/dist/es/DateControl/elements.d.ts +1 -238
- package/dist/es/DateControl/elements.js +1 -2
- package/dist/es/DatePicker/DatePicker.d.ts +0 -6
- package/dist/es/DatePicker/DatePicker.js +28 -19
- package/dist/es/Drawer/elements.js +2 -4
- package/dist/es/DropdownButton/DropdownButton.d.ts +3 -10
- package/dist/es/DropdownButton/DropdownButton.js +18 -16
- package/dist/es/DropdownButton/DropdownButtonElements.d.ts +1 -1
- package/dist/es/FileInput/FileInput.d.ts +1 -6
- package/dist/es/FileInput/FileInput.js +7 -10
- package/dist/es/FormControl/FormControl.d.ts +1 -2
- package/dist/es/FormControl/FormControl.js +31 -29
- package/dist/es/FormControl/components/CheckboxGroup.js +1 -2
- package/dist/es/FormControl/components/RadioGroup.js +1 -2
- package/dist/es/FormControl/elements.js +4 -8
- package/dist/es/FormModal/FormModal.d.ts +1 -6
- package/dist/es/FormModal/FormModal.js +3 -6
- package/dist/es/GrowthRateChart/GrowthRateChart.d.ts +4 -64
- package/dist/es/GrowthRateChart/GrowthRateChart.js +32 -17
- package/dist/es/Icon/Icon.js +1 -2
- package/dist/es/IconBar/IconBar.js +1 -2
- package/dist/es/IconBar/LogoItem.js +1 -2
- package/dist/es/LeftTruncatedText/LeftTruncatedText.js +2 -4
- package/dist/es/Loader/LoaderDiamond.js +2 -4
- package/dist/es/Loader/LoaderDots.js +1 -2
- package/dist/es/Logo/Logo.d.ts +0 -7
- package/dist/es/Logo/Logo.js +6 -8
- package/dist/es/Logo/LogoDark.d.ts +1 -8
- package/dist/es/Logo/LogoDark.js +5 -7
- package/dist/es/Logo/LogoLight.d.ts +1 -8
- package/dist/es/Logo/LogoLight.js +5 -7
- package/dist/es/Menu/Menu.d.ts +0 -4
- package/dist/es/Menu/Menu.js +6 -9
- package/dist/es/Menu/MenuElements.d.ts +2 -6
- package/dist/es/Menu/MenuElements.js +10 -9
- package/dist/es/MiddleTruncatedText/MiddleTruncatedText.js +1 -2
- package/dist/es/Modal/Modal.d.ts +2 -9
- package/dist/es/Modal/Modal.js +13 -13
- package/dist/es/Modal/components/MenuBody.d.ts +1 -3
- package/dist/es/Modal/components/MenuBody.js +2 -4
- package/dist/es/Modal/components/ModalMessage.d.ts +1 -6
- package/dist/es/Modal/components/ModalMessage.js +14 -16
- package/dist/es/Modal/components/ModalOverlay.d.ts +1 -0
- package/dist/es/Modal/components/elements.d.ts +19 -19
- package/dist/es/Modal/components/elements.js +20 -22
- package/dist/es/MultiSelect/MultiSelect.d.ts +3 -27
- package/dist/es/MultiSelect/MultiSelect.js +46 -46
- package/dist/es/MultiSelect/elements.d.ts +6 -5
- package/dist/es/MultiSelect/elements.js +64 -59
- package/dist/es/Radio/Radio.d.ts +1 -6
- package/dist/es/Radio/Radio.js +14 -15
- package/dist/es/RightTruncatedText/RightTruncatedText.js +1 -2
- package/dist/es/SecondaryNavigation/SecondaryNavigation.d.ts +1 -7
- package/dist/es/SecondaryNavigation/SecondaryNavigation.js +3 -6
- package/dist/es/Section/Section.d.ts +1 -5
- package/dist/es/Section/Section.js +4 -6
- package/dist/es/Section/elements.js +1 -2
- package/dist/es/Select/Select.d.ts +1 -13
- package/dist/es/Select/Select.js +9 -22
- package/dist/es/Shuttle/Shuttle.d.ts +3 -15
- package/dist/es/Shuttle/Shuttle.js +22 -22
- package/dist/es/Shuttle/elements.js +4 -8
- package/dist/es/Tabs/elements.js +3 -6
- package/dist/es/Tagger/Tagger.d.ts +2 -10
- package/dist/es/Tagger/Tagger.js +39 -41
- package/dist/es/Tagger/TaggerElements.js +2 -4
- package/dist/es/Tagger/components/PopupSelector.d.ts +13 -19
- package/dist/es/Tagger/components/PopupSelector.js +49 -51
- package/dist/es/Tagger/types.d.ts +5 -5
- package/dist/es/Tagger/variantProps.js +1 -2
- package/dist/es/TimeControl/TimeControl.js +25 -18
- package/dist/es/TimeControl/elements.d.ts +1 -238
- package/dist/es/TimeControl/elements.js +1 -2
- package/dist/es/TimePicker/TimePicker.js +6 -10
- package/dist/es/TimePicker/components/Spinner.js +16 -12
- package/dist/es/Toast/Toast.d.ts +4 -11
- package/dist/es/Toast/Toast.js +12 -13
- package/dist/es/Toast/elements.js +1 -2
- package/dist/es/Toggle/Toggle.d.ts +0 -5
- package/dist/es/Toggle/Toggle.js +10 -11
- package/dist/es/TooltipPopover/TooltipPopover.d.ts +1 -8
- package/dist/es/TooltipPopover/TooltipPopover.js +6 -9
- package/dist/es/Tree/Tree.js +2 -4
- package/dist/es/Tree/elements.js +1 -2
- package/dist/es/VisuallyHidden/VisuallyHidden.js +1 -2
- package/dist/es/VolumeChart/VolumeChart.d.ts +1 -10
- package/dist/es/VolumeChart/VolumeChart.js +6 -8
- package/dist/es/react/index.d.ts +2 -0
- package/dist/es/react/index.js +18 -0
- package/dist/es/react/jsx-dev-runtime.d.ts +2 -0
- package/dist/es/react/jsx-dev-runtime.js +18 -0
- package/dist/es/react/jsx-runtime.d.ts +2 -0
- package/dist/es/react/jsx-runtime.js +18 -0
- package/dist/es/utils/resetcss.d.ts +1 -1
- package/dist/es/utils/resetcss.js +1 -2
- package/dist/es/utils/tailwindcss.d.ts +1 -1
- package/dist/es/utils/tailwindcss.js +1 -2
- package/package.json +27 -9
|
@@ -14,13 +14,12 @@ var _components = require("./components");
|
|
|
14
14
|
var _utils = require("../utils");
|
|
15
15
|
var _lodash = _interopRequireDefault(require("lodash.curry"));
|
|
16
16
|
var _lodash2 = _interopRequireDefault(require("lodash.includes"));
|
|
17
|
-
var _lodash3 = _interopRequireDefault(require("lodash.
|
|
18
|
-
var _lodash4 = _interopRequireDefault(require("lodash.
|
|
19
|
-
var _lodash5 = _interopRequireDefault(require("lodash.
|
|
20
|
-
var _lodash6 = _interopRequireDefault(require("lodash.uniq"));
|
|
17
|
+
var _lodash3 = _interopRequireDefault(require("lodash.range"));
|
|
18
|
+
var _lodash4 = _interopRequireDefault(require("lodash.throttle"));
|
|
19
|
+
var _lodash5 = _interopRequireDefault(require("lodash.uniq"));
|
|
21
20
|
var dataGridUtils = _interopRequireWildcard(require("./utils"));
|
|
22
21
|
var _jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
23
|
-
var _excluded = ["children", "hasMoreRows", "height", "loadMoreRows", "
|
|
22
|
+
var _excluded = ["children", "hasMoreRows", "height", "loadMoreRows", "rowCount", "sortBy", "sortDirection", "width", "data-instrumentation"];
|
|
24
23
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
25
24
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
26
25
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
@@ -86,17 +85,20 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
86
85
|
return;
|
|
87
86
|
}
|
|
88
87
|
_this.setState(function (state) {
|
|
88
|
+
var _this$props$selectedR;
|
|
89
89
|
var lastSelectedRow = state.lastSelectedRow;
|
|
90
|
-
var selectedRows = _this.props.selectedRows;
|
|
90
|
+
var selectedRows = (_this$props$selectedR = _this.props.selectedRows) !== null && _this$props$selectedR !== void 0 ? _this$props$selectedR : [];
|
|
91
91
|
var selected = [].concat(_toConsumableArray(selectedRows), [index]);
|
|
92
92
|
if (_this.props.selectable === DataGrid.SINGLE_SELECT) {
|
|
93
93
|
selected = [index];
|
|
94
94
|
} else if (contiguous && typeof lastSelectedRow === 'number') {
|
|
95
95
|
var start = Math.min(lastSelectedRow, index);
|
|
96
96
|
var end = Math.max(lastSelectedRow, index);
|
|
97
|
-
selected = (0,
|
|
97
|
+
selected = (0, _lodash5["default"])([].concat(_toConsumableArray(selectedRows), _toConsumableArray((0, _lodash3["default"])(start, end + 1))));
|
|
98
|
+
}
|
|
99
|
+
if (_this.props.onSelect) {
|
|
100
|
+
_this.props.onSelect(selected);
|
|
98
101
|
}
|
|
99
|
-
_this.props.onSelect(selected);
|
|
100
102
|
return {
|
|
101
103
|
lastSelectedRow: index
|
|
102
104
|
};
|
|
@@ -118,15 +120,16 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
118
120
|
return;
|
|
119
121
|
}
|
|
120
122
|
_this.setState(function (state) {
|
|
123
|
+
var _this$props$selectedR2;
|
|
121
124
|
var lastSelectedRow = state.lastSelectedRow;
|
|
122
|
-
var selectedRows = _this.props.selectedRows;
|
|
125
|
+
var selectedRows = (_this$props$selectedR2 = _this.props.selectedRows) !== null && _this$props$selectedR2 !== void 0 ? _this$props$selectedR2 : [];
|
|
123
126
|
var selected = selectedRows.filter(function (idx) {
|
|
124
127
|
return idx !== index;
|
|
125
128
|
});
|
|
126
129
|
if (contiguous && typeof lastSelectedRow === 'number') {
|
|
127
130
|
var start = Math.min(lastSelectedRow, index);
|
|
128
131
|
var end = Math.max(lastSelectedRow, index);
|
|
129
|
-
var toDeselect = (0,
|
|
132
|
+
var toDeselect = (0, _lodash3["default"])(start, end + 1);
|
|
130
133
|
selected = selectedRows.filter(function (idx) {
|
|
131
134
|
return !(0, _lodash2["default"])(toDeselect, idx);
|
|
132
135
|
});
|
|
@@ -134,7 +137,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
134
137
|
if (_this.props.selectable === DataGrid.SINGLE_SELECT && !selected.length) {
|
|
135
138
|
return null;
|
|
136
139
|
}
|
|
137
|
-
_this.props.onSelect
|
|
140
|
+
if (_this.props.onSelect) {
|
|
141
|
+
_this.props.onSelect(selected);
|
|
142
|
+
}
|
|
138
143
|
return {
|
|
139
144
|
lastSelectedRow: index
|
|
140
145
|
};
|
|
@@ -147,12 +152,14 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
147
152
|
});
|
|
148
153
|
});
|
|
149
154
|
_defineProperty(_this, "toggleSelect", function (_ref3) {
|
|
155
|
+
var _this$props$selectedR3;
|
|
150
156
|
var index = _ref3.index,
|
|
151
157
|
contiguous = _ref3.contiguous;
|
|
152
158
|
if (index === null) {
|
|
153
159
|
return;
|
|
154
160
|
}
|
|
155
|
-
|
|
161
|
+
var selectedRows = (_this$props$selectedR3 = _this.props.selectedRows) !== null && _this$props$selectedR3 !== void 0 ? _this$props$selectedR3 : [];
|
|
162
|
+
if (!selectedRows.includes(index)) {
|
|
156
163
|
_this.select({
|
|
157
164
|
index: index,
|
|
158
165
|
contiguous: contiguous
|
|
@@ -165,32 +172,41 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
165
172
|
}
|
|
166
173
|
});
|
|
167
174
|
_defineProperty(_this, "setSelectedRows", function (rows) {
|
|
168
|
-
_this.props.onSelect
|
|
175
|
+
if (_this.props.onSelect) {
|
|
176
|
+
_this.props.onSelect(rows);
|
|
177
|
+
}
|
|
169
178
|
});
|
|
170
179
|
_defineProperty(_this, "handleFilter", function (_ref4) {
|
|
171
180
|
var sortBy = _ref4.sortBy,
|
|
172
181
|
sortDirection = _ref4.sortDirection,
|
|
173
182
|
filters = _ref4.filters;
|
|
174
183
|
var _this$props = _this.props,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
184
|
+
_this$props$sortBy = _this$props.sortBy,
|
|
185
|
+
oldSortBy = _this$props$sortBy === void 0 ? '' : _this$props$sortBy,
|
|
186
|
+
_this$props$sortDirec = _this$props.sortDirection,
|
|
187
|
+
oldSortDirection = _this$props$sortDirec === void 0 ? _reactVirtualized.SortDirection.ASC : _this$props$sortDirec,
|
|
188
|
+
_this$props$filters = _this$props.filters,
|
|
189
|
+
oldFilters = _this$props$filters === void 0 ? {} : _this$props$filters;
|
|
178
190
|
var newData = {
|
|
179
191
|
sortBy: sortBy || oldSortBy,
|
|
180
192
|
sortDirection: sortDirection || oldSortDirection,
|
|
181
193
|
filters: _objectSpread(_objectSpread({}, oldFilters), filters)
|
|
182
194
|
};
|
|
183
|
-
_this.props.onFilter
|
|
195
|
+
if (_this.props.onFilter) {
|
|
196
|
+
_this.props.onFilter(newData);
|
|
197
|
+
}
|
|
184
198
|
});
|
|
185
199
|
_defineProperty(_this, "handleKeyDown", function (event) {
|
|
200
|
+
var _this$props$selectedR4;
|
|
186
201
|
if (_this.state.disableKeyboardShortcuts) {
|
|
187
202
|
return;
|
|
188
203
|
}
|
|
204
|
+
var selectedRows = (_this$props$selectedR4 = _this.props.selectedRows) !== null && _this$props$selectedR4 !== void 0 ? _this$props$selectedR4 : [];
|
|
189
205
|
switch (event.key) {
|
|
190
206
|
case 'a':
|
|
191
207
|
if ((event.metaKey || event.ctrlKey) && _this.props.selectable === DataGrid.MULTI_SELECT) {
|
|
192
208
|
event.preventDefault();
|
|
193
|
-
if (_this.props.rowCount ===
|
|
209
|
+
if (_this.props.rowCount === selectedRows.length) {
|
|
194
210
|
_this.deselectAll();
|
|
195
211
|
} else {
|
|
196
212
|
_this.selectAll();
|
|
@@ -243,10 +259,12 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
243
259
|
}
|
|
244
260
|
});
|
|
245
261
|
// throttling this so a double click behaves like a single click
|
|
246
|
-
_defineProperty(_this, "handleRowClick", (0,
|
|
262
|
+
_defineProperty(_this, "handleRowClick", (0, _lodash4["default"])(function (_ref5) {
|
|
263
|
+
var _this$props$allowRowE;
|
|
247
264
|
var event = _ref5.event,
|
|
248
265
|
index = _ref5.index;
|
|
249
|
-
|
|
266
|
+
var allowRowEventPassthrough = (_this$props$allowRowE = _this.props.allowRowEventPassthrough) !== null && _this$props$allowRowE !== void 0 ? _this$props$allowRowE : false;
|
|
267
|
+
if (!allowRowEventPassthrough) {
|
|
250
268
|
event.stopPropagation();
|
|
251
269
|
}
|
|
252
270
|
_this.toggleSelect({
|
|
@@ -297,14 +315,21 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
297
315
|
var validChildren = children.flat().filter(function (child) {
|
|
298
316
|
return typeof child === 'function';
|
|
299
317
|
});
|
|
318
|
+
var _this$props2 = _this.props,
|
|
319
|
+
_this$props2$filters = _this$props2.filters,
|
|
320
|
+
filters = _this$props2$filters === void 0 ? {} : _this$props2$filters,
|
|
321
|
+
_this$props2$localeSt = _this$props2.localeStrings,
|
|
322
|
+
localeStrings = _this$props2$localeSt === void 0 ? {} : _this$props2$localeSt,
|
|
323
|
+
_this$props2$locale = _this$props2.locale,
|
|
324
|
+
locale = _this$props2$locale === void 0 ? 'en' : _this$props2$locale;
|
|
300
325
|
return validChildren.map(function (child, index) {
|
|
301
326
|
return child({
|
|
302
|
-
locale:
|
|
303
|
-
localeStrings:
|
|
327
|
+
locale: locale,
|
|
328
|
+
localeStrings: localeStrings,
|
|
304
329
|
columnIndex: index,
|
|
305
330
|
columnCount: validChildren.length,
|
|
306
331
|
getFilterValue: function getFilterValue(dataKey) {
|
|
307
|
-
return
|
|
332
|
+
return filters[dataKey];
|
|
308
333
|
},
|
|
309
334
|
onHeaderPopoverOpen: function onHeaderPopoverOpen(open) {
|
|
310
335
|
return _this.setState({
|
|
@@ -343,9 +368,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
343
368
|
});
|
|
344
369
|
_defineProperty(_this, "isRowLoaded", function (_ref9) {
|
|
345
370
|
var index = _ref9.index;
|
|
346
|
-
var _this$
|
|
347
|
-
hasMoreRows = _this$
|
|
348
|
-
rowCount = _this$
|
|
371
|
+
var _this$props3 = _this.props,
|
|
372
|
+
hasMoreRows = _this$props3.hasMoreRows,
|
|
373
|
+
rowCount = _this$props3.rowCount;
|
|
349
374
|
return !hasMoreRows || index < rowCount;
|
|
350
375
|
});
|
|
351
376
|
_defineProperty(_this, "isContextMenuVisible", function (index) {
|
|
@@ -357,16 +382,18 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
357
382
|
});
|
|
358
383
|
});
|
|
359
384
|
_defineProperty(_this, "contextMenuRenderer", function (index) {
|
|
385
|
+
var _this$props$selectedR5;
|
|
386
|
+
var selectedRows = (_this$props$selectedR5 = _this.props.selectedRows) !== null && _this$props$selectedR5 !== void 0 ? _this$props$selectedR5 : [];
|
|
360
387
|
if (_this.props.contextMenuRenderer && _this.isContextMenuVisible(index) && document.body !== null) {
|
|
361
388
|
var contextMenuCloseWrapper = (0, _jsxRuntime.jsx)(_utils.CloseWrapper, {
|
|
362
389
|
"data-gs-c": gsC(_this.props.contextMenuRenderer(_objectSpread(_objectSpread({}, _this.state.activeContextMenu), {}, {
|
|
363
|
-
selectedRows:
|
|
390
|
+
selectedRows: selectedRows,
|
|
364
391
|
onClose: _this.closeContextMenu
|
|
365
392
|
}))),
|
|
366
393
|
"data-gs": gs("src", "datagrid", "datagrid.tsx", "data-grid", "close-wrapper"),
|
|
367
394
|
onClose: _this.closeContextMenu,
|
|
368
395
|
children: _this.props.contextMenuRenderer(_objectSpread(_objectSpread({}, _this.state.activeContextMenu), {}, {
|
|
369
|
-
selectedRows:
|
|
396
|
+
selectedRows: selectedRows,
|
|
370
397
|
onClose: _this.closeContextMenu
|
|
371
398
|
}))
|
|
372
399
|
});
|
|
@@ -388,6 +415,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
388
415
|
});
|
|
389
416
|
});
|
|
390
417
|
_defineProperty(_this, "rowRenderer", function (_ref11) {
|
|
418
|
+
var _this$props$selectedR6, _this$props$dataInst;
|
|
391
419
|
var key = _ref11.key,
|
|
392
420
|
style = _ref11.style,
|
|
393
421
|
index = _ref11.index,
|
|
@@ -396,12 +424,14 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
396
424
|
className = _ref11.className,
|
|
397
425
|
onRowMouseOver = _ref11.onRowMouseOver,
|
|
398
426
|
onRowMouseOut = _ref11.onRowMouseOut;
|
|
427
|
+
var selectedRows = (_this$props$selectedR6 = _this.props.selectedRows) !== null && _this$props$selectedR6 !== void 0 ? _this$props$selectedR6 : [];
|
|
428
|
+
var dataInstrumentation = (_this$props$dataInst = _this.props['data-instrumentation']) !== null && _this$props$dataInst !== void 0 ? _this$props$dataInst : 'datagrid';
|
|
399
429
|
return (0, _jsxRuntime.jsxs)(_components.FocusableRow, {
|
|
400
430
|
"data-gs": gs("src", "datagrid", "datagrid.tsx", "data-grid", "focusable-row"),
|
|
401
431
|
className: className,
|
|
402
432
|
"aria-rowindex": index + 1,
|
|
403
433
|
zebra: index % 2 === 1,
|
|
404
|
-
selected:
|
|
434
|
+
selected: selectedRows.includes(index),
|
|
405
435
|
selecting: _this.state.selecting,
|
|
406
436
|
focused: index === _this.state.focusedRow,
|
|
407
437
|
style: style,
|
|
@@ -424,7 +454,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
424
454
|
focusedRow: index
|
|
425
455
|
});
|
|
426
456
|
},
|
|
427
|
-
"data-instrumentation": "".concat(
|
|
457
|
+
"data-instrumentation": "".concat(dataInstrumentation, "-row").concat(index + 1),
|
|
428
458
|
onClick: _this.props.selectable && !_this.state.activeContextMenu ? function (event) {
|
|
429
459
|
return _this.handleRowClick({
|
|
430
460
|
event: event,
|
|
@@ -440,7 +470,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
440
470
|
rowData: rowData
|
|
441
471
|
}
|
|
442
472
|
});
|
|
443
|
-
if (!
|
|
473
|
+
if (!selectedRows.includes(index) && _this.props.selectable) {
|
|
444
474
|
_this.handleRowClick({
|
|
445
475
|
event: event,
|
|
446
476
|
index: index
|
|
@@ -465,18 +495,23 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
465
495
|
key: "render",
|
|
466
496
|
value: function render() {
|
|
467
497
|
var _this2 = this;
|
|
468
|
-
var _this$
|
|
469
|
-
children = _this$
|
|
470
|
-
hasMoreRows = _this$
|
|
471
|
-
height = _this$
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
498
|
+
var _this$props4 = this.props,
|
|
499
|
+
children = _this$props4.children,
|
|
500
|
+
hasMoreRows = _this$props4.hasMoreRows,
|
|
501
|
+
height = _this$props4.height,
|
|
502
|
+
_this$props4$loadMore = _this$props4.loadMoreRows,
|
|
503
|
+
loadMoreRows = _this$props4$loadMore === void 0 ? function () {
|
|
504
|
+
return Promise.resolve(false);
|
|
505
|
+
} : _this$props4$loadMore,
|
|
506
|
+
rowCount = _this$props4.rowCount,
|
|
507
|
+
_this$props4$sortBy = _this$props4.sortBy,
|
|
508
|
+
sortBy = _this$props4$sortBy === void 0 ? '' : _this$props4$sortBy,
|
|
509
|
+
_this$props4$sortDire = _this$props4.sortDirection,
|
|
510
|
+
sortDirection = _this$props4$sortDire === void 0 ? _reactVirtualized.SortDirection.ASC : _this$props4$sortDire,
|
|
511
|
+
width = _this$props4.width,
|
|
512
|
+
_this$props4$dataIns = _this$props4['data-instrumentation'],
|
|
513
|
+
dataInstrumentation = _this$props4$dataIns === void 0 ? 'datagrid' : _this$props4$dataIns,
|
|
514
|
+
props = _objectWithoutProperties(_this$props4, _excluded);
|
|
480
515
|
|
|
481
516
|
// This fixes an issue where the header of the DataGrid doesn't render on page load in Safari
|
|
482
517
|
var safariStyle = {
|
|
@@ -528,7 +563,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
528
563
|
return accumulator + flexGrow;
|
|
529
564
|
}, 0);
|
|
530
565
|
spannedColumns.push( /*#__PURE__*/(0, _react2.cloneElement)(column, {
|
|
531
|
-
'data-instrumentation': "".concat(
|
|
566
|
+
'data-instrumentation': "".concat(dataInstrumentation, "-row").concat(rowIndex, "-col").concat(index),
|
|
532
567
|
style: _objectSpread(_objectSpread({}, Elements.cellResetStyle), {}, {
|
|
533
568
|
flex: "0 1 ".concat(_width, "px"),
|
|
534
569
|
flexGrow: flexGrow
|
|
@@ -537,7 +572,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
537
572
|
index += span; // skip columns that have been spanned over
|
|
538
573
|
} else {
|
|
539
574
|
spannedColumns.push( /*#__PURE__*/(0, _react2.cloneElement)(column, {
|
|
540
|
-
'data-instrumentation': "".concat(
|
|
575
|
+
'data-instrumentation': "".concat(dataInstrumentation, "-row").concat(rowIndex, "-col").concat(index)
|
|
541
576
|
}));
|
|
542
577
|
index++;
|
|
543
578
|
}
|
|
@@ -550,10 +585,10 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
550
585
|
css: /*#__PURE__*/(0, _react.css)({
|
|
551
586
|
width: width,
|
|
552
587
|
height: height
|
|
553
|
-
}, process.env.NODE_ENV === "production" ? "" : ";label:render;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhR3JpZC9EYXRhR3JpZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNHFCUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0YUdyaWQvRGF0YUdyaWQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVhY3ROb2RlLFxuICBSZWFjdEVsZW1lbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIGNyZWF0ZVJlZixcbiAgY2xvbmVFbGVtZW50LFxuICBDb21wb25lbnRcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHtcbiAgSW5maW5pdGVMb2FkZXIsXG4gIFRhYmxlLFxuICBTb3J0RGlyZWN0aW9uLFxuICBUYWJsZVJvd1Byb3BzXG59IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJ1xuaW1wb3J0IHR5cGUge1xuICBTb3J0RGlyZWN0aW9uVHlwZSxcbiAgVGFibGVQcm9wcyxcbiAgSW5kZXhSYW5nZSxcbiAgSW5kZXgsXG4gIFJvd01vdXNlRXZlbnRIYW5kbGVyUGFyYW1zXG59IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJ1xuaW1wb3J0ICogYXMgRWxlbWVudHMgZnJvbSAnLi9lbGVtZW50cydcbmltcG9ydCAqIGFzIFJlbmRlcmVycyBmcm9tICcuL3JlbmRlcmVycydcbmltcG9ydCB7XG4gIEJhc2ljQ29sdW1uLFxuICBGb2N1c2FibGVSb3csXG4gIElucHV0Q2VsbCxcbiAgQ29sbGFwc2libGVDZWxsLFxuICBTY3JvbGxhYmxlVGFibGVcbn0gZnJvbSAnLi9jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ2xvc2VXcmFwcGVyIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgY3VycnkgZnJvbSAnbG9kYXNoLmN1cnJ5J1xuaW1wb3J0IGluY2x1ZGVzIGZyb20gJ2xvZGFzaC5pbmNsdWRlcydcbmltcG9ydCBub29wIGZyb20gJ2xvZGFzaC5ub29wJ1xuaW1wb3J0IHJhbmdlIGZyb20gJ2xvZGFzaC5yYW5nZSdcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSdcbmltcG9ydCAqIGFzIGRhdGFHcmlkVXRpbHMgZnJvbSAnLi91dGlscydcbmltcG9ydCB0eXBlIHtcbiAgQmFzaWNDb2x1bW5NYXBwZWRQcm9wcyxcbiAgQmFzaWNDb2x1bW5Qcm9wc1xufSBmcm9tICcuL2NvbXBvbmVudHMvQmFzaWNDb2x1bW4nXG5pbXBvcnQgdHlwZSB7IExvY2FsZVN0cmluZ3MgfSBmcm9tICcuL2NvbnN0YW50cydcblxuZXhwb3J0IHR5cGUgb25GaWx0ZXJBcmd1bWVudHMgPSB7XG4gIGZpbHRlcnM6IHsgW2RhdGFLZXk6IHN0cmluZ106IGFueSB9XG4gIHNvcnRCeT86IHN0cmluZ1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvblR5cGVcbn1cblxudHlwZSBhY3RpdmVDb250ZXh0TWVudVN0YXRlID0ge1xuICB0b3A6IG51bWJlclxuICBsZWZ0OiBudW1iZXJcbiAgaW5kZXg6IG51bWJlclxuICByb3dEYXRhOiBhbnlcbn1cblxudHlwZSBjb250ZXh0TWVudVJlbmRlcmVyQXJndW1lbnRzID0ge1xuICB0b3A/OiBudW1iZXJcbiAgbGVmdD86IG51bWJlclxuICBpbmRleD86IG51bWJlclxuICByb3dEYXRhPzogYW55XG4gIHNlbGVjdGVkUm93czogQXJyYXk8bnVtYmVyPlxuICBvbkNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdGFibGVUeXBlID0gJ3NpbmdsZScgfCAnbXVsdGknXG5cbmV4cG9ydCB0eXBlIENvbHVtbkZ1bmN0aW9uID0gKGFyZ3M6IEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMpID0+IFJlYWN0Tm9kZVxuXG5leHBvcnQgdHlwZSBEYXRhR3JpZFByb3BzID0ge1xuICAvKiogRnVuY3Rpb25zIHRoYXQgY3JlYXRlIHJlYWN0IHZpcnR1YWxpemVkIENvbHVtbnMuIERlZmF1bHQgY29sdW1uIGlzIGV4cG9zZWQgYXMgRGF0YUdyaWQuQ29sdW1uLiAqL1xuICAvLyBDYW4gdGFrZSBhIHNpbmdsZSBjb2x1bW4gb3IgYW4gYXJyYXkgb2YgY29sdW1uc1xuICBjaGlsZHJlbjogQ29sdW1uRnVuY3Rpb24gfCAoQ29sdW1uRnVuY3Rpb24gfCBDb2x1bW5GdW5jdGlvbltdKVtdXG4gIC8qKiBJbnN0cnVtZW50YXRpb24gKi9cbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJz86IHN0cmluZ1xuICAvKiogQ2FsbGVkIGR1cmluZyB0aGUgb25Db250ZXh0TWVudSBldmVudCBvZiBlYWNoIHJvdy4gKi9cbiAgY29udGV4dE1lbnVSZW5kZXJlcj86IChcbiAgICBjb250ZXh0TWVudVJlbmRlcmVyQXJndW1lbnRzOiBjb250ZXh0TWVudVJlbmRlcmVyQXJndW1lbnRzXG4gICkgPT4gUmVhY3ROb2RlXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGNvbHVtbiBpcyBmaWx0ZXJlZCBvciBzb3J0ZWQuICovXG4gIG9uRmlsdGVyOiAob25GaWx0ZXJBcmd1bWVudHM6IG9uRmlsdGVyQXJndW1lbnRzKSA9PiB2b2lkXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGNvbHVtbiBpcyByZXNpemVkIGJ5IHRoZSB1c2VyLiBQYXNzaW5nIHRoaXMgaW4gZW5hYmxlc1xuICAgKiByZXNpemUgaGFuZGxlcyBvbiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgaGVhZGVyIGNlbGxzLiAqL1xuICBvblJlc2l6ZT86IChuZXdTaXplczogbnVtYmVyW10pID0+IHZvaWRcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSByb3cgc2VsZWN0aW9uIGNoYW5nZXMuIFJlY2VpdmVzIGFycmF5IG9mIGluZGljZXMuICovXG4gIG9uU2VsZWN0OiAoaW5kZXhlczogbnVtYmVyW10pID0+IHZvaWRcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSByb3cgaXMgZG91YmxlIGNsaWNrZWQuIFJlY2VpdmVzIGluZGV4LiAqL1xuICBvblJvd0RvdWJsZUNsaWNrPzogKGluZm86IFJvd01vdXNlRXZlbnRIYW5kbGVyUGFyYW1zKSA9PiB2b2lkXG4gIC8qKiBJbmZpbml0ZSBsb2FkaW5nOiBJbmRpY2F0ZXMgbW9yZSByb3dzIG5lZWQgdG8gYmUgbG9hZGVkLiAqL1xuICBoYXNNb3JlUm93cz86IGJvb2xlYW5cbiAgLyoqIEluZmluaXRlIGxvYWRpbmc6IENhbGxlZCB3aGVuIG1vcmUgcm93cyBuZWVkIHRvIGJlIGxvYWRlZC4gKi9cbiAgbG9hZE1vcmVSb3dzPzogKHByb3BzOiBJbmRleFJhbmdlKSA9PiBQcm9taXNlPGFueT5cbiAgLyoqIENvdW50IG9mIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQuICovXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgLyoqIFJlcXVpcmVkIGJ5IHJlYWN0LXZpcnR1YWxpemVkIHRhYmxlLiAqL1xuICByb3dHZXR0ZXI6IChwcm9wczogeyBpbmRleDogbnVtYmVyIH0pID0+IGFueVxuICAvKiogV2hldGhlciByb3dzIGNhbiBiZSBzZWxlY3RlZCAoYW5kIGhvdyBtYW55KS4gKi9cbiAgc2VsZWN0YWJsZT86IFNlbGVjdGFibGVUeXBlIHwgZmFsc2VcbiAgLyoqIEFycmF5IG9mIGluZGljZXMgdGhhdCBzaG91bGQgYmUgc2VsZWN0ZWQuIE9ubHkgdXNlZCBpZiBgc2VsZWN0YWJsZWAgaXMgc2V0LiAqL1xuICBzZWxlY3RlZFJvd3M6IEFycmF5PG51bWJlcj5cbiAgLyoqIFRoZSBjb2x1bW4geW91IHdhbnQgdG8gc29ydCAqL1xuICBzb3J0Qnk/OiBzdHJpbmdcbiAgLyoqIFRoZSBkaXJlY3Rpb24gc29ydGluZyBzaG91bGQgYmUgZG9uZSAqL1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvblR5cGVcbiAgLyoqIEEgbWFwIG9mIGNvbHVtbnMgdG8gZmlsdGVyIGRhdGEgKi9cbiAgZmlsdGVycz86IHsgW2RhdGFLZXk6IHN0cmluZ106IGFueSB9XG4gIC8qKiBTZXQgdGhlIHdpZHRoIG9mIHNjcm9sbGFibGUgY29udGVudCAqL1xuICBzY3JvbGxXaWR0aD86IG51bWJlclxuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG4gIC8qKiBMb2NhbGUgc3RyaW5nOiBqYSwgZGUsIGVzLCBrbywgZW4sIGV0Yy4gKi9cbiAgbG9jYWxlPzogc3RyaW5nXG4gIC8qKiBMb2NhbGUgc3RyaW5ncyB0byBvdmVycmlkZSBlbiBmb3IgbGFuZ3VhZ2UgaW4gbG9jYWxlICovXG4gIGxvY2FsZVN0cmluZ3M/OiBMb2NhbGVTdHJpbmdzXG4gIC8qKiBhbGxvdyBldmVudHMgdG8gcHJvcGFnYXRlIHRvIGEgY2VsbCBvbiByb3cgc2VsZWN0ICovXG4gIGFsbG93Um93RXZlbnRQYXNzdGhyb3VnaD86IGJvb2xlYW5cbn0gJiBQYXJ0aWFsPFRhYmxlUHJvcHM+XG5cbnR5cGUgRGF0YUdyaWRTdGF0ZSA9IHtcbiAgYWN0aXZlQ29udGV4dE1lbnU6IGFjdGl2ZUNvbnRleHRNZW51U3RhdGUgfCBudWxsXG4gIGRpc2FibGVLZXlib2FyZFNob3J0Y3V0czogYm9vbGVhblxuICBmb2N1c2VkUm93OiBudW1iZXIgfCBudWxsXG4gIHNlbGVjdGluZzogYm9vbGVhblxuICBsYXN0U2VsZWN0ZWRSb3c6IG51bWJlciB8IG51bGxcbn1cblxudHlwZSBIYW5kbGVGaWx0ZXJBcmd1bWVudHMgPSB7XG4gIHNvcnRCeT86IHN0cmluZ1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvblR5cGVcbiAgZmlsdGVycz86IGFueVxufVxuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBkYXRhIGluIGEgZ3JpZCB3aXRoIHN1cHBvcnQgZm9yIHRoaW5ncyBsaWtlXG4gKiBmaWx0ZXJpbmcsIHNvcnRpbmcsIGFuZCBjb250ZXh0IG1lbnVzLlxuICpcbiAqIERlcGVuZHMgb24gcmVhY3QtdmlydHVhbGl6ZWQvc3R5bGVzLmNzcy5cbiAqXG4gKiBGb3IgcmVhY3QtdmlydHVhbGl6ZWQgVGFibGUgZG9jcyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9idmF1Z2huL3JlYWN0LXZpcnR1YWxpemVkL2Jsb2IvbWFzdGVyL2RvY3MvVGFibGUubWRcbiAqXG4gKi9cbmNsYXNzIERhdGFHcmlkIGV4dGVuZHMgQ29tcG9uZW50PERhdGFHcmlkUHJvcHMsIERhdGFHcmlkU3RhdGU+IHtcbiAgLy8gZXhwb3NlIHN1Yi1jb21wb25lbnRzXG4gIHN0YXRpYyBDb2x1bW4gPSBjdXJyeShCYXNpY0NvbHVtbilcbiAgc3RhdGljIFNvcnREaXJlY3Rpb24gPSBTb3J0RGlyZWN0aW9uXG4gIHN0YXRpYyBFbGVtZW50cyA9IEVsZW1lbnRzXG4gIHN0YXRpYyBJbnB1dENlbGwgPSBJbnB1dENlbGxcbiAgc3RhdGljIENvbGxhcHNpYmxlQ2VsbCA9IENvbGxhcHNpYmxlQ2VsbFxuICBzdGF0aWMgUmVuZGVyZXJzID0gUmVuZGVyZXJzXG5cbiAgc3RhdGljIFNJTkdMRV9TRUxFQ1Q6IFNlbGVjdGFibGVUeXBlID0gJ3NpbmdsZSdcbiAgc3RhdGljIE1VTFRJX1NFTEVDVDogU2VsZWN0YWJsZVR5cGUgPSAnbXVsdGknXG4gIHN0YXRpYyBNSU5fQ09MX1dJRFRIID0gNTBcblxuICBzdGF0aWMgdXRpbHMgPSBkYXRhR3JpZFV0aWxzXG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBsb2FkTW9yZVJvd3M6IG5vb3AsXG4gICAgb25TZWxlY3Q6IG5vb3AsXG4gICAgb25GaWx0ZXI6IG5vb3AsXG4gICAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogJ2RhdGFncmlkJyxcbiAgICBzb3J0Qnk6ICcnLFxuICAgIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24uQVNDLFxuICAgIGZpbHRlcnM6IHt9LFxuICAgIHNlbGVjdGVkUm93czogW10sXG4gICAgYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoOiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIGRpc3BsYXlOYW1lID0gJ0RhdGFHcmlkJ1xuXG4gIHN0YXRlOiBEYXRhR3JpZFN0YXRlID0ge1xuICAgIGFjdGl2ZUNvbnRleHRNZW51OiBudWxsLFxuICAgIGRpc2FibGVLZXlib2FyZFNob3J0Y3V0czogZmFsc2UsXG4gICAgZm9jdXNlZFJvdzogbnVsbCxcbiAgICBsYXN0U2VsZWN0ZWRSb3c6IG51bGwsXG4gICAgc2VsZWN0aW5nOiBmYWxzZVxuICB9XG5cbiAgaW5maW5pdGVUYWJsZSA9IGNyZWF0ZVJlZjxJbmZpbml0ZUxvYWRlcj4oKVxuXG4gIHRvdGFsV2lkdGggPSAwXG4gIGNvbHVtbldpZHRoUGVyY2VudHM6IG51bWJlcltdID0gW11cblxuICBjb2x1bW5UcmFuc2Zvcm1lcjogKFxuICAgIGNvbHVtbnM6IFJlYWN0RWxlbWVudDxhbnk+W10sXG4gICAgcm93RGF0YTogYW55LFxuICAgIHJvd0luZGV4OiBudW1iZXJcbiAgKSA9PiBSZWFjdE5vZGVbXSB8IG51bGwgfCB1bmRlZmluZWRcblxuICBzZWxlY3QgPSAoe1xuICAgIGluZGV4LFxuICAgIGNvbnRpZ3VvdXMgPSBmYWxzZVxuICB9OiB7XG4gICAgaW5kZXg6IG51bWJlclxuICAgIGNvbnRpZ3VvdXM6IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUgPT4ge1xuICAgICAgY29uc3QgeyBsYXN0U2VsZWN0ZWRSb3cgfSA9IHN0YXRlXG4gICAgICBjb25zdCB7IHNlbGVjdGVkUm93cyB9ID0gdGhpcy5wcm9wc1xuICAgICAgbGV0IHNlbGVjdGVkID0gWy4uLnNlbGVjdGVkUm93cywgaW5kZXhdXG4gICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RhYmxlID09PSBEYXRhR3JpZC5TSU5HTEVfU0VMRUNUKSB7XG4gICAgICAgIHNlbGVjdGVkID0gW2luZGV4XVxuICAgICAgfSBlbHNlIGlmIChjb250aWd1b3VzICYmIHR5cGVvZiBsYXN0U2VsZWN0ZWRSb3cgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4obGFzdFNlbGVjdGVkUm93LCBpbmRleClcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5tYXgobGFzdFNlbGVjdGVkUm93LCBpbmRleClcbiAgICAgICAgc2VsZWN0ZWQgPSB1bmlxKFsuLi5zZWxlY3RlZFJvd3MsIC4uLnJhbmdlKHN0YXJ0LCBlbmQgKyAxKV0pXG4gICAgICB9XG4gICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHNlbGVjdGVkKVxuICAgICAgcmV0dXJuIHsgbGFzdFNlbGVjdGVkUm93OiBpbmRleCB9XG4gICAgfSlcbiAgfVxuXG4gIHNlbGVjdEFsbCA9ICgpID0+IHtcbiAgICBjb25zdCB7IHJvd0NvdW50IH0gPSB0aGlzLnByb3BzXG4gICAgdGhpcy5zZXRTZWxlY3RlZFJvd3MoQXJyYXkuZnJvbSh7IGxlbmd0aDogcm93Q291bnQgfSkubWFwKChfLCBpZHgpID0+IGlkeCkpXG4gIH1cblxuICBkZXNlbGVjdCA9ICh7XG4gICAgaW5kZXgsXG4gICAgY29udGlndW91cyA9IGZhbHNlXG4gIH06IHtcbiAgICBpbmRleDogbnVtYmVyXG4gICAgY29udGlndW91czogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCB7IGxhc3RTZWxlY3RlZFJvdyB9ID0gc3RhdGVcbiAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgICBsZXQgc2VsZWN0ZWQgPSBzZWxlY3RlZFJvd3MuZmlsdGVyKGlkeCA9PiBpZHggIT09IGluZGV4KVxuICAgICAgaWYgKGNvbnRpZ3VvdXMgJiYgdHlwZW9mIGxhc3RTZWxlY3RlZFJvdyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1heChsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBjb25zdCB0b0Rlc2VsZWN0ID0gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpXG4gICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWRSb3dzLmZpbHRlcihpZHggPT4gIWluY2x1ZGVzKHRvRGVzZWxlY3QsIGlkeCkpXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSA9PT0gRGF0YUdyaWQuU0lOR0xFX1NFTEVDVCAmJlxuICAgICAgICAhc2VsZWN0ZWQubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpXG4gICAgICByZXR1cm4geyBsYXN0U2VsZWN0ZWRSb3c6IGluZGV4IH1cbiAgICB9KVxuICB9XG5cbiAgZGVzZWxlY3RBbGwgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZFJvd3MoW10pXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBsYXN0U2VsZWN0ZWRSb3c6IG51bGxcbiAgICB9KVxuICB9XG5cbiAgdG9nZ2xlU2VsZWN0ID0gKHtcbiAgICBpbmRleCxcbiAgICBjb250aWd1b3VzXG4gIH06IHtcbiAgICBpbmRleDogbnVtYmVyXG4gICAgY29udGlndW91czogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0KHsgaW5kZXgsIGNvbnRpZ3VvdXMgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXNlbGVjdCh7IGluZGV4LCBjb250aWd1b3VzIH0pXG4gICAgfVxuICB9XG5cbiAgc2V0U2VsZWN0ZWRSb3dzID0gKHJvd3M6IEFycmF5PG51bWJlcj4pID0+IHtcbiAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHJvd3MpXG4gIH1cblxuICBoYW5kbGVGaWx0ZXIgPSAoe1xuICAgIHNvcnRCeSxcbiAgICBzb3J0RGlyZWN0aW9uLFxuICAgIGZpbHRlcnNcbiAgfTogSGFuZGxlRmlsdGVyQXJndW1lbnRzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc29ydEJ5OiBvbGRTb3J0QnksXG4gICAgICBzb3J0RGlyZWN0aW9uOiBvbGRTb3J0RGlyZWN0aW9uLFxuICAgICAgZmlsdGVyczogb2xkRmlsdGVyc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgbmV3RGF0YSA9IHtcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8IG9sZFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gfHwgb2xkU29ydERpcmVjdGlvbixcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgLi4ub2xkRmlsdGVycyxcbiAgICAgICAgLi4uZmlsdGVyc1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnByb3BzLm9uRmlsdGVyKG5ld0RhdGEpXG4gIH1cblxuICBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLmRpc2FibGVLZXlib2FyZFNob3J0Y3V0cykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdhJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkpICYmXG4gICAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlID09PSBEYXRhR3JpZC5NVUxUSV9TRUxFQ1RcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLnJvd0NvdW50ID09PSB0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGwoKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIGZvY3VzZWRSb3c6IE1hdGgubWF4KChzdGF0ZS5mb2N1c2VkUm93IHx8IDApIC0gMSwgMClcbiAgICAgICAgfSkpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICBmb2N1c2VkUm93OlxuICAgICAgICAgICAgc3RhdGUuZm9jdXNlZFJvdyAhPSBudWxsXG4gICAgICAgICAgICAgID8gTWF0aC5taW4oc3RhdGUuZm9jdXNlZFJvdyArIDEsIHRoaXMucHJvcHMucm93Q291bnQgLSAxKVxuICAgICAgICAgICAgICA6IDBcbiAgICAgICAgfSkpXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJyAnOlxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3Qoe1xuICAgICAgICAgICAgaW5kZXg6IHRoaXMuc3RhdGUuZm9jdXNlZFJvdyB8fCAwLFxuICAgICAgICAgICAgY29udGlndW91czogZXZlbnQuc2hpZnRLZXlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ1NoaWZ0JzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0aW5nOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5VXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ1NoaWZ0JzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0aW5nOiBmYWxzZVxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIHRocm90dGxpbmcgdGhpcyBzbyBhIGRvdWJsZSBjbGljayBiZWhhdmVzIGxpa2UgYSBzaW5nbGUgY2xpY2tcbiAgaGFuZGxlUm93Q2xpY2sgPSB0aHJvdHRsZShcbiAgICAoeyBldmVudCwgaW5kZXggfTogeyBldmVudDogTW91c2VFdmVudDxhbnk+OyBpbmRleDogbnVtYmVyIH0pID0+IHtcbiAgICAgIGlmICghdGhpcy5wcm9wcy5hbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2gpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIH1cblxuICAgICAgdGhpcy50b2dnbGVTZWxlY3QoeyBpbmRleCwgY29udGlndW91czogZXZlbnQuc2hpZnRLZXkgfSlcbiAgICB9LFxuICAgIDI1MCxcbiAgICB7IGxlYWRpbmc6IHRydWUsIHRyYWlsaW5nOiBmYWxzZSB9XG4gIClcblxuICBoYW5kbGVSZXNpemUgPSAoeyB4LCBpbmRleCB9OiB7IHg6IG51bWJlcjsgaW5kZXg6IG51bWJlciB9KSA9PiB7XG4gICAgaWYgKHRoaXMuY29sdW1uV2lkdGhQZXJjZW50cy5sZW5ndGggPiAwICYmIHRoaXMudG90YWxXaWR0aCkge1xuICAgICAgY29uc3QgcHJldldpZHRocyA9IHRoaXMuY29sdW1uV2lkdGhQZXJjZW50c1xuICAgICAgY29uc3QgbmV3V2lkdGhzID0gWy4uLnByZXZXaWR0aHNdXG4gICAgICBjb25zdCBwYXJlbnRXaWR0aCA9IHRoaXMucHJvcHMuc2Nyb2xsV2lkdGggPz8gdGhpcy5wcm9wcy53aWR0aFxuICAgICAgLy8gbGltaXQgbmV4dCBpbmRleCBmcm9tIGdvaW5nIGJleW9uZCBib3VuZHNcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9IE1hdGgubWluKGluZGV4ICsgMSwgcHJldldpZHRocy5sZW5ndGggLSAxKVxuICAgICAgY29uc3QgcGVyY2VudENoYW5nZSA9IHggLyB0aGlzLnRvdGFsV2lkdGhcblxuICAgICAgaWYgKHRoaXMucHJvcHMuc2Nyb2xsV2lkdGgpIHtcbiAgICAgICAgLy8gaWYgdGFibGUgaXMgc2Nyb2xsYWJsZSwgd2UgY2FuIGdyb3cgdGhlIGNvbHVtbiB3aXRob3V0XG4gICAgICAgIC8vIHNocmlua2luZyB0aGUgb3RoZXJzXG4gICAgICAgIGNvbnN0IHNhZmVQZXJjZW50Q2hhbmdlID1cbiAgICAgICAgICAocHJldldpZHRoc1tpbmRleF0gKyBwZXJjZW50Q2hhbmdlKSAqIHBhcmVudFdpZHRoIDxcbiAgICAgICAgICBEYXRhR3JpZC5NSU5fQ09MX1dJRFRIXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGVyY2VudENoYW5nZVxuICAgICAgICBuZXdXaWR0aHNbaW5kZXhdID0gcHJldldpZHRoc1tpbmRleF0gKyBzYWZlUGVyY2VudENoYW5nZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaWYgdGhlIHRhYmxlIGlzIG5vdCBzY3JvbGxhYmxlLCBlbnN1cmUgYWxsIGNvbHVtbnMgZml0IGJ5XG4gICAgICAgIC8vIGFkanVzdGluZyB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZSBvbmUgYWZ0ZXIgaXRcbiAgICAgICAgY29uc3Qgc2FmZVBlcmNlbnRDaGFuZ2UgPVxuICAgICAgICAgIChwcmV2V2lkdGhzW2luZGV4XSArIHBlcmNlbnRDaGFuZ2UpICogcGFyZW50V2lkdGggPFxuICAgICAgICAgICAgRGF0YUdyaWQuTUlOX0NPTF9XSURUSCB8fFxuICAgICAgICAgIChwcmV2V2lkdGhzW25leHRJbmRleF0gLSBwZXJjZW50Q2hhbmdlKSAqIHBhcmVudFdpZHRoIDxcbiAgICAgICAgICAgIERhdGFHcmlkLk1JTl9DT0xfV0lEVEhcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBwZXJjZW50Q2hhbmdlXG4gICAgICAgIG5ld1dpZHRoc1tpbmRleF0gPSBwcmV2V2lkdGhzW2luZGV4XSArIHNhZmVQZXJjZW50Q2hhbmdlXG4gICAgICAgIG5ld1dpZHRoc1tuZXh0SW5kZXhdID0gcHJldldpZHRoc1tuZXh0SW5kZXhdIC0gc2FmZVBlcmNlbnRDaGFuZ2VcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblJlc2l6ZShcbiAgICAgICAgICAvLyBtdWx0aXBseSBieSB3aWR0aCBwcm9wIHRvIGdldCBjb3JyZWN0IHBlcmNlbnRhZ2VcbiAgICAgICAgICBuZXdXaWR0aHMubWFwKHdpZHRoID0+IE1hdGgucm91bmQod2lkdGggKiBwYXJlbnRXaWR0aCkpXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtYXBDaGlsZHJlbiA9ICgpID0+IHtcbiAgICBjb25zdCBJc0FycmF5ID0gKFxuICAgICAgY2hpbGRyZW5cbiAgICApOiBjaGlsZHJlbiBpcyAoQ29sdW1uRnVuY3Rpb24gfCBDb2x1bW5GdW5jdGlvbltdKVtdID0+XG4gICAgICBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuXG4gICAgY29uc3QgY2hpbGRyZW46IChDb2x1bW5GdW5jdGlvbiB8IENvbHVtbkZ1bmN0aW9uW10pW10gPSBJc0FycmF5KFxuICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlblxuICAgIClcbiAgICAgID8gdGhpcy5wcm9wcy5jaGlsZHJlblxuICAgICAgOiBbdGhpcy5wcm9wcy5jaGlsZHJlbl1cblxuICAgIGNvbnN0IHZhbGlkQ2hpbGRyZW4gPSBjaGlsZHJlblxuICAgICAgLmZsYXQoKVxuICAgICAgLmZpbHRlcihjaGlsZCA9PiB0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpXG5cbiAgICByZXR1cm4gdmFsaWRDaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT5cbiAgICAgIGNoaWxkKHtcbiAgICAgICAgbG9jYWxlOiB0aGlzLnByb3BzLmxvY2FsZSB8fCAnZW4nLFxuICAgICAgICBsb2NhbGVTdHJpbmdzOiB0aGlzLnByb3BzLmxvY2FsZVN0cmluZ3MgfHwge30sXG4gICAgICAgIGNvbHVtbkluZGV4OiBpbmRleCxcbiAgICAgICAgY29sdW1uQ291bnQ6IHZhbGlkQ2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YUtleSA9PlxuICAgICAgICAgIHRoaXMucHJvcHMuZmlsdGVycyAmJiB0aGlzLnByb3BzLmZpbHRlcnNbZGF0YUtleV0sXG4gICAgICAgIG9uSGVhZGVyUG9wb3Zlck9wZW46IG9wZW4gPT5cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBvcGVuIH0pLFxuICAgICAgICBvblNvcnQ6IHNvcnRBcmdzID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcih7IC4uLnNvcnRBcmdzIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG9uRmlsdGVyOiAoeyBkYXRhS2V5LCB2YWx1ZSwgb3BlcmF0b3IgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgW2RhdGFLZXldOiBvcGVyYXRvclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6XG4gICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGBvblJlc2l6ZWAgd2lsbCBzaG93IGRyYWcgaGFuZGxlcyBzbyBkb24ndCBzZXQgaXRcbiAgICAgICAgICAvLyBpZiBubyBwcm9wIGlzIHBhc3NlZCBpbiBvciBmb3IgdGhlIGxhc3QgY29sdW1uIGlmIHRoZSB0YWJsZSBpc24ndFxuICAgICAgICAgIC8vIHNjcm9sbGFibGVcbiAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplICYmXG4gICAgICAgICAgKCghdGhpcy5wcm9wcy5zY3JvbGxXaWR0aCAmJiBpbmRleCAhPT0gdmFsaWRDaGlsZHJlbi5sZW5ndGggLSAxKSB8fFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zY3JvbGxXaWR0aClcbiAgICAgICAgICAgID8gKHsgeCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoeyB4LCBpbmRleCB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpc1Jvd0xvYWRlZCA9ICh7IGluZGV4IH06IEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBoYXNNb3JlUm93cywgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gIWhhc01vcmVSb3dzIHx8IGluZGV4IDwgcm93Q291bnRcbiAgfVxuXG4gIGlzQ29udGV4dE1lbnVWaXNpYmxlID0gKGluZGV4OiBudW1iZXIpID0+XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSAmJiB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LmluZGV4ID09PSBpbmRleFxuXG4gIGNsb3NlQ29udGV4dE1lbnUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVDb250ZXh0TWVudTogbnVsbFxuICAgIH0pXG4gIH1cblxuICBjb250ZXh0TWVudVJlbmRlcmVyID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIgJiZcbiAgICAgIHRoaXMuaXNDb250ZXh0TWVudVZpc2libGUoaW5kZXgpICYmXG4gICAgICBkb2N1bWVudC5ib2R5ICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBjb25zdCBjb250ZXh0TWVudUNsb3NlV3JhcHBlciA9IChcbiAgICAgICAgPENsb3NlV3JhcHBlciBvbkNsb3NlPXt0aGlzLmNsb3NlQ29udGV4dE1lbnV9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MsXG4gICAgICAgICAgICBvbkNsb3NlOiB0aGlzLmNsb3NlQ29udGV4dE1lbnVcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9DbG9zZVdyYXBwZXI+XG4gICAgICApXG4gICAgICByZXR1cm4gUmVhY3RET00uY3JlYXRlUG9ydGFsKGNvbnRleHRNZW51Q2xvc2VXcmFwcGVyLCBkb2N1bWVudC5ib2R5KVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaGVhZGVyUm93UmVuZGVyZXIgPSAoe1xuICAgIGNvbHVtbnMsXG4gICAgc3R5bGVcbiAgfToge1xuICAgIGNvbHVtbnM6IFJlYWN0Tm9kZVtdXG4gICAgc3R5bGU6IHt9XG4gIH0pID0+IChcbiAgICA8RWxlbWVudHMuUm93IHJvbGU9XCJyb3dcIiBoZWFkZXIgemVicmEgc3R5bGU9e3N0eWxlfT5cbiAgICAgIHtjb2x1bW5zfVxuICAgIDwvRWxlbWVudHMuUm93PlxuICApXG5cbiAgcm93UmVuZGVyZXIgPSAoe1xuICAgIGtleSxcbiAgICBzdHlsZSxcbiAgICBpbmRleCxcbiAgICByb3dEYXRhLFxuICAgIGNvbHVtbnMsXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uUm93TW91c2VPdmVyLFxuICAgIG9uUm93TW91c2VPdXRcbiAgfTogVGFibGVSb3dQcm9wcykgPT4gKFxuICAgIDxGb2N1c2FibGVSb3dcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1yb3dpbmRleD17aW5kZXggKyAxfVxuICAgICAgemVicmE9e2luZGV4ICUgMiA9PT0gMX1cbiAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCl9XG4gICAgICBzZWxlY3Rpbmc9e3RoaXMuc3RhdGUuc2VsZWN0aW5nfVxuICAgICAgZm9jdXNlZD17aW5kZXggPT09IHRoaXMuc3RhdGUuZm9jdXNlZFJvd31cbiAgICAgIGtleT17a2V5fVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgb25Nb3VzZUxlYXZlPXtldmVudCA9PiB7XG4gICAgICAgIG9uUm93TW91c2VPdXQgJiYgb25Sb3dNb3VzZU91dCh7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uTW91c2VFbnRlcj17ZXZlbnQgPT4ge1xuICAgICAgICBvblJvd01vdXNlT3ZlciAmJiBvblJvd01vdXNlT3Zlcih7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uRm9jdXM9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkUm93OiBpbmRleCB9KX1cbiAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtgJHt0aGlzLnByb3BzWydkYXRhLWluc3RydW1lbnRhdGlvbiddfS1yb3cke1xuICAgICAgICBpbmRleCArIDFcbiAgICAgIH1gfVxuICAgICAgb25DbGljaz17XG4gICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgID8gZXZlbnQgPT4gdGhpcy5oYW5kbGVSb3dDbGljayh7IGV2ZW50LCBpbmRleCB9KVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBvbkNvbnRleHRNZW51PXtcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZXh0TWVudVJlbmRlcmVyXG4gICAgICAgICAgPyBldmVudCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGFjdGl2ZUNvbnRleHRNZW51OiB7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgdG9wOiBldmVudC5jbGllbnRZLFxuICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICByb3dEYXRhXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGluZGV4KSAmJlxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJvd0NsaWNrKHsgZXZlbnQsIGluZGV4IH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PlxuICAgICAgICB0aGlzLnByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5vblJvd0RvdWJsZUNsaWNrKHsgaW5kZXgsIGV2ZW50LCByb3dEYXRhIH0pXG4gICAgICB9XG4gICAgPlxuICAgICAge3RoaXMuY29sdW1uVHJhbnNmb3JtZXJcbiAgICAgICAgPyB0aGlzLmNvbHVtblRyYW5zZm9ybWVyKGNvbHVtbnMsIHJvd0RhdGEsIGluZGV4KVxuICAgICAgICA6IGNvbHVtbnN9XG4gICAgICB7dGhpcy5jb250ZXh0TWVudVJlbmRlcmVyKGluZGV4KX1cbiAgICA8L0ZvY3VzYWJsZVJvdz5cbiAgKVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGhhc01vcmVSb3dzLFxuICAgICAgaGVpZ2h0LFxuICAgICAgbG9hZE1vcmVSb3dzLFxuICAgICAgb25GaWx0ZXIsXG4gICAgICByb3dDb3VudCxcbiAgICAgIHNvcnRCeSA9ICcnLFxuICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgIHdpZHRoLFxuICAgICAgLi4ucHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgLy8gVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB0aGUgaGVhZGVyIG9mIHRoZSBEYXRhR3JpZCBkb2Vzbid0IHJlbmRlciBvbiBwYWdlIGxvYWQgaW4gU2FmYXJpXG4gICAgY29uc3Qgc2FmYXJpU3R5bGUgPSB7XG4gICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVaKDApYFxuICAgIH1cblxuICAgIGNvbnN0IG1hcHBlZENoaWxkcmVuID0gdGhpcy5tYXBDaGlsZHJlbigpLmZpbHRlcihjaGlsZCA9PiBjaGlsZCAhPT0gbnVsbClcbiAgICAvLyBUT0RPOiBCZXR0ZXIgdHlwZSBzaWduYXR1cmUgd2hlbiBhY2Nlc3NpbmcgY2hpbGRyZW4gcHJvcHM/XG4gICAgY29uc3Qgc3BhbkRhdGEgPSBtYXBwZWRDaGlsZHJlbi5tYXAoKGNoaWxkOiBSZWFjdEVsZW1lbnQpID0+ICh7XG4gICAgICBjb2xzcGFuOiBjaGlsZC5wcm9wcy5jb2xzcGFuID8gY2hpbGQucHJvcHMuY29sc3BhbiA6ICgpID0+IDEsXG4gICAgICB3aWR0aDogY2hpbGQucHJvcHMud2lkdGgsXG4gICAgICBmbGV4R3JvdzogY2hpbGQucHJvcHMuZmxleEdyb3dcbiAgICB9KSlcbiAgICAvLyBHZXQgdGhlIGFjdHVhbCB3aWR0aCBvZiBhbGwgdGhlIGNvbHVtbnMuIFRoaXMgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGVcbiAgICAvLyB3aWR0aCBwcm9wLlxuICAgIHRoaXMudG90YWxXaWR0aCA9IG1hcHBlZENoaWxkcmVuLnJlZHVjZTxudW1iZXI+KFxuICAgICAgKHRvdGFsOiBudW1iZXIsIGNoaWxkOiBSZWFjdEVsZW1lbnQ8QmFzaWNDb2x1bW5Qcm9wcz4pID0+XG4gICAgICAgIHRvdGFsICsgY2hpbGQucHJvcHMud2lkdGgsXG4gICAgICAwXG4gICAgKVxuICAgIC8vIENvbnZlcnQgdGhlIHdpZHRocyB0byBwZXJjZW50cyBzbyB3ZSBjYW4gbWFwIHRoZW0gYmFjayB0byB0aGUgcmVhbCB0YWJsZVxuICAgIC8vIHdpZHRoIGxhdGVyLlxuICAgIHRoaXMuY29sdW1uV2lkdGhQZXJjZW50cyA9IG1hcHBlZENoaWxkcmVuLm1hcChcbiAgICAgICh7IHByb3BzIH06IFJlYWN0RWxlbWVudCkgPT4gcHJvcHMud2lkdGggLyB0aGlzLnRvdGFsV2lkdGhcbiAgICApXG5cbiAgICB0aGlzLmNvbHVtblRyYW5zZm9ybWVyID0gKFxuICAgICAgY29sdW1uczogUmVhY3RFbGVtZW50PGFueT5bXSxcbiAgICAgIHJvd0RhdGEsXG4gICAgICByb3dJbmRleFxuICAgICkgPT4ge1xuICAgICAgY29uc3Qgc3BhbnMgPSBzcGFuRGF0YS5tYXAoaXRlbSA9PiBpdGVtLmNvbHNwYW4ocm93RGF0YSkpXG4gICAgICBjb25zdCBzcGFubmVkQ29sdW1uczogUmVhY3RFbGVtZW50W10gPSBbXVxuICAgICAgbGV0IGluZGV4ID0gMFxuICAgICAgd2hpbGUgKGluZGV4IDwgY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgc3BhbiA9IHNwYW5zW2luZGV4XVxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2luZGV4XVxuICAgICAgICBpZiAoc3BhbiA+IDEpIHtcbiAgICAgICAgICBjb25zdCBmb2xsb3dpbmdDb2x1bW5zID0gc3BhbkRhdGEuc2xpY2UoaW5kZXgsIHNwYW4pXG4gICAgICAgICAgLy8gZmluZCBuZXcgd2lkdGggYnkgYWRkaW5nIGN1cnJlbnQgY29sdW1uIHdpZHRoIHBsdXMgY29sdW1ucyB0aGF0IGFyZSBzcGFubmVkIG92ZXJcblxuICAgICAgICAgIGNvbnN0IHdpZHRoID0gZm9sbG93aW5nQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdW11bGF0b3IsIHsgd2lkdGggfTogeyB3aWR0aDogbnVtYmVyIH0pID0+IGFjY3VtdWxhdG9yICsgd2lkdGgsXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3QgZmxleEdyb3cgPSBmb2xsb3dpbmdDb2x1bW5zLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1bXVsYXRvciwgeyBmbGV4R3JvdyB9OiB7IGZsZXhHcm93OiBudW1iZXIgfSkgPT5cbiAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKyBmbGV4R3JvdyxcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgICAgc3Bhbm5lZENvbHVtbnMucHVzaChcbiAgICAgICAgICAgIGNsb25lRWxlbWVudChjb2x1bW4sIHtcbiAgICAgICAgICAgICAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogYCR7dGhpcy5wcm9wc1snZGF0YS1pbnN0cnVtZW50YXRpb24nXX0tcm93JHtyb3dJbmRleH0tY29sJHtpbmRleH1gLFxuICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLkVsZW1lbnRzLmNlbGxSZXNldFN0eWxlLFxuICAgICAgICAgICAgICAgIGZsZXg6IGAwIDEgJHt3aWR0aH1weGAsXG4gICAgICAgICAgICAgICAgZmxleEdyb3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgaW5kZXggKz0gc3BhbiAvLyBza2lwIGNvbHVtbnMgdGhhdCBoYXZlIGJlZW4gc3Bhbm5lZCBvdmVyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3Bhbm5lZENvbHVtbnMucHVzaChcbiAgICAgICAgICAgIGNsb25lRWxlbWVudChjb2x1bW4sIHtcbiAgICAgICAgICAgICAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogYCR7dGhpcy5wcm9wc1snZGF0YS1pbnN0cnVtZW50YXRpb24nXX0tcm93JHtyb3dJbmRleH0tY29sJHtpbmRleH1gXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzcGFubmVkQ29sdW1uc1xuICAgIH1cblxuICAgIGNvbnN0IFRhYmxlQ29tcG9uZW50ID1cbiAgICAgIHRoaXMucHJvcHMuc2Nyb2xsV2lkdGggIT09IHVuZGVmaW5lZCA/IFNjcm9sbGFibGVUYWJsZSA6IFRhYmxlXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEVsZW1lbnRzLlRhYmxlQ29udGFpbmVyXG4gICAgICAgIGNzcz17eyB3aWR0aCwgaGVpZ2h0IH19XG4gICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICBvbktleVVwPXt0aGlzLmhhbmRsZUtleVVwfVxuICAgICAgICBkYXRhLWluc3RydW1lbnRhdGlvbj17YCR7dGhpcy5wcm9wc1snZGF0YS1pbnN0cnVtZW50YXRpb24nXX0tZ3JpZGB9XG4gICAgICA+XG4gICAgICAgIDxJbmZpbml0ZUxvYWRlclxuICAgICAgICAgIGlzUm93TG9hZGVkPXt0aGlzLmlzUm93TG9hZGVkfVxuICAgICAgICAgIGxvYWRNb3JlUm93cz17bG9hZE1vcmVSb3dzIHx8ICgoKSA9PiBQcm9taXNlLnJlc29sdmUoZmFsc2UpKX1cbiAgICAgICAgICByb3dDb3VudD17aGFzTW9yZVJvd3MgPyByb3dDb3VudCArIDEgOiByb3dDb3VudH1cbiAgICAgICAgICB0aHJlc2hvbGQ9ezV9XG4gICAgICAgICAgcmVmPXt0aGlzLmluZmluaXRlVGFibGV9XG4gICAgICAgID5cbiAgICAgICAgICB7KHsgb25Sb3dzUmVuZGVyZWQsIHJlZ2lzdGVyQ2hpbGQgfSkgPT4gKFxuICAgICAgICAgICAgPFRhYmxlQ29tcG9uZW50XG4gICAgICAgICAgICAgIHN0eWxlPXtzYWZhcmlTdHlsZX1cbiAgICAgICAgICAgICAgZ3JpZFN0eWxlPXt7IG91dGxpbmU6ICdub25lJyB9fVxuICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ9ezM2fVxuICAgICAgICAgICAgICByb3dIZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICBzb3J0Qnk9e3NvcnRCeX1cbiAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj17c29ydERpcmVjdGlvbn1cbiAgICAgICAgICAgICAgcmVmPXtyZWdpc3RlckNoaWxkfVxuICAgICAgICAgICAgICBub1Jvd3NSZW5kZXJlZD17KCkgPT4gPGRpdj5ObyByZXN1bHRzPC9kaXY+fVxuICAgICAgICAgICAgICBvblJvd3NSZW5kZXJlZD17b25Sb3dzUmVuZGVyZWR9XG4gICAgICAgICAgICAgIG9uU2Nyb2xsPXtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51XG4gICAgICAgICAgICAgICAgICA/ICgpID0+IHRoaXMuY2xvc2VDb250ZXh0TWVudSgpXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvd0NvdW50PXtoYXNNb3JlUm93cyA/IHJvd0NvdW50ICsgMSA6IHJvd0NvdW50fVxuICAgICAgICAgICAgICBoZWFkZXJSb3dSZW5kZXJlcj17dGhpcy5oZWFkZXJSb3dSZW5kZXJlcn1cbiAgICAgICAgICAgICAgcm93UmVuZGVyZXI9e3RoaXMucm93UmVuZGVyZXJ9XG4gICAgICAgICAgICAgIC8vIGFjY291bnQgZm9yIGJvcmRlciB3aWR0aCBvZiBjb250YWluZXJcbiAgICAgICAgICAgICAgd2lkdGg9e3dpZHRoIC0gMn1cbiAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgLSAyfVxuICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttYXBwZWRDaGlsZHJlbn1cbiAgICAgICAgICAgIDwvVGFibGVDb21wb25lbnQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9JbmZpbml0ZUxvYWRlcj5cbiAgICAgIDwvRWxlbWVudHMuVGFibGVDb250YWluZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFHcmlkXG4iXX0= */"),
|
|
588
|
+
}, process.env.NODE_ENV === "production" ? "" : ";label:render;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhR3JpZC9EYXRhR3JpZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNHFCUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0YUdyaWQvRGF0YUdyaWQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVhY3ROb2RlLFxuICBSZWFjdEVsZW1lbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIGNyZWF0ZVJlZixcbiAgY2xvbmVFbGVtZW50LFxuICBDb21wb25lbnRcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHtcbiAgSW5maW5pdGVMb2FkZXIsXG4gIFRhYmxlLFxuICBTb3J0RGlyZWN0aW9uLFxuICBUYWJsZVJvd1Byb3BzXG59IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJ1xuaW1wb3J0IHR5cGUge1xuICBTb3J0RGlyZWN0aW9uVHlwZSxcbiAgVGFibGVQcm9wcyxcbiAgSW5kZXhSYW5nZSxcbiAgSW5kZXgsXG4gIFJvd01vdXNlRXZlbnRIYW5kbGVyUGFyYW1zXG59IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJ1xuaW1wb3J0ICogYXMgRWxlbWVudHMgZnJvbSAnLi9lbGVtZW50cydcbmltcG9ydCAqIGFzIFJlbmRlcmVycyBmcm9tICcuL3JlbmRlcmVycydcbmltcG9ydCB7XG4gIEJhc2ljQ29sdW1uLFxuICBGb2N1c2FibGVSb3csXG4gIElucHV0Q2VsbCxcbiAgQ29sbGFwc2libGVDZWxsLFxuICBTY3JvbGxhYmxlVGFibGVcbn0gZnJvbSAnLi9jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ2xvc2VXcmFwcGVyIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgY3VycnkgZnJvbSAnbG9kYXNoLmN1cnJ5J1xuaW1wb3J0IGluY2x1ZGVzIGZyb20gJ2xvZGFzaC5pbmNsdWRlcydcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gucmFuZ2UnXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnXG5pbXBvcnQgKiBhcyBkYXRhR3JpZFV0aWxzIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMsXG4gIEJhc2ljQ29sdW1uUHJvcHNcbn0gZnJvbSAnLi9jb21wb25lbnRzL0Jhc2ljQ29sdW1uJ1xuaW1wb3J0IHR5cGUgeyBMb2NhbGVTdHJpbmdzIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmV4cG9ydCB0eXBlIG9uRmlsdGVyQXJndW1lbnRzID0ge1xuICBmaWx0ZXJzOiB7IFtkYXRhS2V5OiBzdHJpbmddOiBhbnkgfVxuICBzb3J0Qnk/OiBzdHJpbmdcbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG59XG5cbnR5cGUgYWN0aXZlQ29udGV4dE1lbnVTdGF0ZSA9IHtcbiAgdG9wOiBudW1iZXJcbiAgbGVmdDogbnVtYmVyXG4gIGluZGV4OiBudW1iZXJcbiAgcm93RGF0YTogYW55XG59XG5cbnR5cGUgY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50cyA9IHtcbiAgdG9wPzogbnVtYmVyXG4gIGxlZnQ/OiBudW1iZXJcbiAgaW5kZXg/OiBudW1iZXJcbiAgcm93RGF0YT86IGFueVxuICBzZWxlY3RlZFJvd3M6IEFycmF5PG51bWJlcj5cbiAgb25DbG9zZTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBTZWxlY3RhYmxlVHlwZSA9ICdzaW5nbGUnIHwgJ211bHRpJ1xuXG5leHBvcnQgdHlwZSBDb2x1bW5GdW5jdGlvbiA9IChhcmdzOiBCYXNpY0NvbHVtbk1hcHBlZFByb3BzKSA9PiBSZWFjdE5vZGVcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRQcm9wcyA9IHtcbiAgLyoqIEZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSByZWFjdCB2aXJ0dWFsaXplZCBDb2x1bW5zLiBEZWZhdWx0IGNvbHVtbiBpcyBleHBvc2VkIGFzIERhdGFHcmlkLkNvbHVtbi4gKi9cbiAgLy8gQ2FuIHRha2UgYSBzaW5nbGUgY29sdW1uIG9yIGFuIGFycmF5IG9mIGNvbHVtbnNcbiAgY2hpbGRyZW46IENvbHVtbkZ1bmN0aW9uIHwgKENvbHVtbkZ1bmN0aW9uIHwgQ29sdW1uRnVuY3Rpb25bXSlbXVxuICAvKiogSW5zdHJ1bWVudGF0aW9uICovXG4gICdkYXRhLWluc3RydW1lbnRhdGlvbic/OiBzdHJpbmdcbiAgLyoqIENhbGxlZCBkdXJpbmcgdGhlIG9uQ29udGV4dE1lbnUgZXZlbnQgb2YgZWFjaCByb3cuICovXG4gIGNvbnRleHRNZW51UmVuZGVyZXI/OiAoXG4gICAgY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50czogY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50c1xuICApID0+IFJlYWN0Tm9kZVxuICAvKiogQ2FsbGVkIHdoZW4gYSBjb2x1bW4gaXMgZmlsdGVyZWQgb3Igc29ydGVkLiAqL1xuICBvbkZpbHRlcj86IChvbkZpbHRlckFyZ3VtZW50czogb25GaWx0ZXJBcmd1bWVudHMpID0+IHZvaWRcbiAgLyoqIENhbGxlZCB3aGVuIGEgY29sdW1uIGlzIHJlc2l6ZWQgYnkgdGhlIHVzZXIuIFBhc3NpbmcgdGhpcyBpbiBlbmFibGVzXG4gICAqIHJlc2l6ZSBoYW5kbGVzIG9uIHRoZSByaWdodCBlZGdlIG9mIHRoZSBoZWFkZXIgY2VsbHMuICovXG4gIG9uUmVzaXplPzogKG5ld1NpemVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gUmVjZWl2ZXMgYXJyYXkgb2YgaW5kaWNlcy4gKi9cbiAgb25TZWxlY3Q/OiAoaW5kZXhlczogbnVtYmVyW10pID0+IHZvaWRcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSByb3cgaXMgZG91YmxlIGNsaWNrZWQuIFJlY2VpdmVzIGluZGV4LiAqL1xuICBvblJvd0RvdWJsZUNsaWNrPzogKGluZm86IFJvd01vdXNlRXZlbnRIYW5kbGVyUGFyYW1zKSA9PiB2b2lkXG4gIC8qKiBJbmZpbml0ZSBsb2FkaW5nOiBJbmRpY2F0ZXMgbW9yZSByb3dzIG5lZWQgdG8gYmUgbG9hZGVkLiAqL1xuICBoYXNNb3JlUm93cz86IGJvb2xlYW5cbiAgLyoqIEluZmluaXRlIGxvYWRpbmc6IENhbGxlZCB3aGVuIG1vcmUgcm93cyBuZWVkIHRvIGJlIGxvYWRlZC4gKi9cbiAgbG9hZE1vcmVSb3dzPzogKHByb3BzOiBJbmRleFJhbmdlKSA9PiBQcm9taXNlPGFueT5cbiAgLyoqIENvdW50IG9mIHJvd3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQuICovXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgLyoqIFJlcXVpcmVkIGJ5IHJlYWN0LXZpcnR1YWxpemVkIHRhYmxlLiAqL1xuICByb3dHZXR0ZXI6IChwcm9wczogeyBpbmRleDogbnVtYmVyIH0pID0+IGFueVxuICAvKiogV2hldGhlciByb3dzIGNhbiBiZSBzZWxlY3RlZCAoYW5kIGhvdyBtYW55KS4gKi9cbiAgc2VsZWN0YWJsZT86IFNlbGVjdGFibGVUeXBlIHwgZmFsc2VcbiAgLyoqIEFycmF5IG9mIGluZGljZXMgdGhhdCBzaG91bGQgYmUgc2VsZWN0ZWQuIE9ubHkgdXNlZCBpZiBgc2VsZWN0YWJsZWAgaXMgc2V0LiAqL1xuICBzZWxlY3RlZFJvd3M/OiBBcnJheTxudW1iZXI+XG4gIC8qKiBUaGUgY29sdW1uIHlvdSB3YW50IHRvIHNvcnQgKi9cbiAgc29ydEJ5Pzogc3RyaW5nXG4gIC8qKiBUaGUgZGlyZWN0aW9uIHNvcnRpbmcgc2hvdWxkIGJlIGRvbmUgKi9cbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG4gIC8qKiBBIG1hcCBvZiBjb2x1bW5zIHRvIGZpbHRlciBkYXRhICovXG4gIGZpbHRlcnM/OiB7IFtkYXRhS2V5OiBzdHJpbmddOiBhbnkgfVxuICAvKiogU2V0IHRoZSB3aWR0aCBvZiBzY3JvbGxhYmxlIGNvbnRlbnQgKi9cbiAgc2Nyb2xsV2lkdGg/OiBudW1iZXJcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxuICAvKiogTG9jYWxlIHN0cmluZzogamEsIGRlLCBlcywga28sIGVuLCBldGMuICovXG4gIGxvY2FsZT86IHN0cmluZ1xuICAvKiogTG9jYWxlIHN0cmluZ3MgdG8gb3ZlcnJpZGUgZW4gZm9yIGxhbmd1YWdlIGluIGxvY2FsZSAqL1xuICBsb2NhbGVTdHJpbmdzPzogTG9jYWxlU3RyaW5nc1xuICAvKiogYWxsb3cgZXZlbnRzIHRvIHByb3BhZ2F0ZSB0byBhIGNlbGwgb24gcm93IHNlbGVjdCAqL1xuICBhbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2g/OiBib29sZWFuXG59ICYgUGFydGlhbDxUYWJsZVByb3BzPlxuXG50eXBlIERhdGFHcmlkU3RhdGUgPSB7XG4gIGFjdGl2ZUNvbnRleHRNZW51OiBhY3RpdmVDb250ZXh0TWVudVN0YXRlIHwgbnVsbFxuICBkaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHM6IGJvb2xlYW5cbiAgZm9jdXNlZFJvdzogbnVtYmVyIHwgbnVsbFxuICBzZWxlY3Rpbmc6IGJvb2xlYW5cbiAgbGFzdFNlbGVjdGVkUm93OiBudW1iZXIgfCBudWxsXG59XG5cbnR5cGUgSGFuZGxlRmlsdGVyQXJndW1lbnRzID0ge1xuICBzb3J0Qnk/OiBzdHJpbmdcbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG4gIGZpbHRlcnM/OiBhbnlcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgZGF0YSBpbiBhIGdyaWQgd2l0aCBzdXBwb3J0IGZvciB0aGluZ3MgbGlrZVxuICogZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgY29udGV4dCBtZW51cy5cbiAqXG4gKiBEZXBlbmRzIG9uIHJlYWN0LXZpcnR1YWxpemVkL3N0eWxlcy5jc3MuXG4gKlxuICogRm9yIHJlYWN0LXZpcnR1YWxpemVkIFRhYmxlIGRvY3Mgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYnZhdWdobi9yZWFjdC12aXJ0dWFsaXplZC9ibG9iL21hc3Rlci9kb2NzL1RhYmxlLm1kXG4gKlxuICovXG5jbGFzcyBEYXRhR3JpZCBleHRlbmRzIENvbXBvbmVudDxEYXRhR3JpZFByb3BzLCBEYXRhR3JpZFN0YXRlPiB7XG4gIC8vIGV4cG9zZSBzdWItY29tcG9uZW50c1xuICBzdGF0aWMgQ29sdW1uID0gY3VycnkoQmFzaWNDb2x1bW4pXG4gIHN0YXRpYyBTb3J0RGlyZWN0aW9uID0gU29ydERpcmVjdGlvblxuICBzdGF0aWMgRWxlbWVudHMgPSBFbGVtZW50c1xuICBzdGF0aWMgSW5wdXRDZWxsID0gSW5wdXRDZWxsXG4gIHN0YXRpYyBDb2xsYXBzaWJsZUNlbGwgPSBDb2xsYXBzaWJsZUNlbGxcbiAgc3RhdGljIFJlbmRlcmVycyA9IFJlbmRlcmVyc1xuXG4gIHN0YXRpYyBTSU5HTEVfU0VMRUNUOiBTZWxlY3RhYmxlVHlwZSA9ICdzaW5nbGUnXG4gIHN0YXRpYyBNVUxUSV9TRUxFQ1Q6IFNlbGVjdGFibGVUeXBlID0gJ211bHRpJ1xuICBzdGF0aWMgTUlOX0NPTF9XSURUSCA9IDUwXG5cbiAgc3RhdGljIHV0aWxzID0gZGF0YUdyaWRVdGlsc1xuXG4gIHN0YXRpYyBkaXNwbGF5TmFtZSA9ICdEYXRhR3JpZCdcblxuICBzdGF0ZTogRGF0YUdyaWRTdGF0ZSA9IHtcbiAgICBhY3RpdmVDb250ZXh0TWVudTogbnVsbCxcbiAgICBkaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHM6IGZhbHNlLFxuICAgIGZvY3VzZWRSb3c6IG51bGwsXG4gICAgbGFzdFNlbGVjdGVkUm93OiBudWxsLFxuICAgIHNlbGVjdGluZzogZmFsc2VcbiAgfVxuXG4gIGluZmluaXRlVGFibGUgPSBjcmVhdGVSZWY8SW5maW5pdGVMb2FkZXI+KClcblxuICB0b3RhbFdpZHRoID0gMFxuICBjb2x1bW5XaWR0aFBlcmNlbnRzOiBudW1iZXJbXSA9IFtdXG5cbiAgY29sdW1uVHJhbnNmb3JtZXI6IChcbiAgICBjb2x1bW5zOiBSZWFjdEVsZW1lbnQ8YW55PltdLFxuICAgIHJvd0RhdGE6IGFueSxcbiAgICByb3dJbmRleDogbnVtYmVyXG4gICkgPT4gUmVhY3ROb2RlW10gfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgc2VsZWN0ID0gKHtcbiAgICBpbmRleCxcbiAgICBjb250aWd1b3VzID0gZmFsc2VcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgbGFzdFNlbGVjdGVkUm93IH0gPSBzdGF0ZVxuICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MgPz8gW11cbiAgICAgIGxldCBzZWxlY3RlZCA9IFsuLi5zZWxlY3RlZFJvd3MsIGluZGV4XVxuICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSA9PT0gRGF0YUdyaWQuU0lOR0xFX1NFTEVDVCkge1xuICAgICAgICBzZWxlY3RlZCA9IFtpbmRleF1cbiAgICAgIH0gZWxzZSBpZiAoY29udGlndW91cyAmJiB0eXBlb2YgbGFzdFNlbGVjdGVkUm93ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIHNlbGVjdGVkID0gdW5pcShbLi4uc2VsZWN0ZWRSb3dzLCAuLi5yYW5nZShzdGFydCwgZW5kICsgMSldKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZClcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGxhc3RTZWxlY3RlZFJvdzogaW5kZXggfVxuICAgIH0pXG4gIH1cblxuICBzZWxlY3RBbGwgPSAoKSA9PiB7XG4gICAgY29uc3QgeyByb3dDb3VudCB9ID0gdGhpcy5wcm9wc1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKEFycmF5LmZyb20oeyBsZW5ndGg6IHJvd0NvdW50IH0pLm1hcCgoXywgaWR4KSA9PiBpZHgpKVxuICB9XG5cbiAgZGVzZWxlY3QgPSAoe1xuICAgIGluZGV4LFxuICAgIGNvbnRpZ3VvdXMgPSBmYWxzZVxuICB9OiB7XG4gICAgaW5kZXg6IG51bWJlclxuICAgIGNvbnRpZ3VvdXM6IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUgPT4ge1xuICAgICAgY29uc3QgeyBsYXN0U2VsZWN0ZWRSb3cgfSA9IHN0YXRlXG4gICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLnByb3BzLnNlbGVjdGVkUm93cyA/PyBbXVxuICAgICAgbGV0IHNlbGVjdGVkID0gc2VsZWN0ZWRSb3dzLmZpbHRlcihpZHggPT4gaWR4ICE9PSBpbmRleClcbiAgICAgIGlmIChjb250aWd1b3VzICYmIHR5cGVvZiBsYXN0U2VsZWN0ZWRSb3cgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4obGFzdFNlbGVjdGVkUm93LCBpbmRleClcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5tYXgobGFzdFNlbGVjdGVkUm93LCBpbmRleClcbiAgICAgICAgY29uc3QgdG9EZXNlbGVjdCA9IHJhbmdlKHN0YXJ0LCBlbmQgKyAxKVxuICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkUm93cy5maWx0ZXIoaWR4ID0+ICFpbmNsdWRlcyh0b0Rlc2VsZWN0LCBpZHgpKVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLlNJTkdMRV9TRUxFQ1QgJiZcbiAgICAgICAgIXNlbGVjdGVkLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5vblNlbGVjdCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHNlbGVjdGVkKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbGFzdFNlbGVjdGVkUm93OiBpbmRleCB9XG4gICAgfSlcbiAgfVxuXG4gIGRlc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbGFzdFNlbGVjdGVkUm93OiBudWxsXG4gICAgfSlcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdCA9ICh7XG4gICAgaW5kZXgsXG4gICAgY29udGlndW91c1xuICB9OiB7XG4gICAgaW5kZXg6IG51bWJlclxuICAgIGNvbnRpZ3VvdXM6IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzID8/IFtdXG4gICAgaWYgKCFzZWxlY3RlZFJvd3MuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICB0aGlzLnNlbGVjdCh7IGluZGV4LCBjb250aWd1b3VzIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVzZWxlY3QoeyBpbmRleCwgY29udGlndW91cyB9KVxuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGVkUm93cyA9IChyb3dzOiBBcnJheTxudW1iZXI+KSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qocm93cylcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGaWx0ZXIgPSAoe1xuICAgIHNvcnRCeSxcbiAgICBzb3J0RGlyZWN0aW9uLFxuICAgIGZpbHRlcnNcbiAgfTogSGFuZGxlRmlsdGVyQXJndW1lbnRzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc29ydEJ5OiBvbGRTb3J0QnkgPSAnJyxcbiAgICAgIHNvcnREaXJlY3Rpb246IG9sZFNvcnREaXJlY3Rpb24gPSBTb3J0RGlyZWN0aW9uLkFTQyxcbiAgICAgIGZpbHRlcnM6IG9sZEZpbHRlcnMgPSB7fVxuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgbmV3RGF0YSA9IHtcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8IG9sZFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gfHwgb2xkU29ydERpcmVjdGlvbixcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgLi4ub2xkRmlsdGVycyxcbiAgICAgICAgLi4uZmlsdGVyc1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5vbkZpbHRlcikge1xuICAgICAgdGhpcy5wcm9wcy5vbkZpbHRlcihuZXdEYXRhKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MgPz8gW11cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSAmJlxuICAgICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSA9PT0gRGF0YUdyaWQuTVVMVElfU0VMRUNUXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5yb3dDb3VudCA9PT0gc2VsZWN0ZWRSb3dzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbCgpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgZm9jdXNlZFJvdzogTWF0aC5tYXgoKHN0YXRlLmZvY3VzZWRSb3cgfHwgMCkgLSAxLCAwKVxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIGZvY3VzZWRSb3c6XG4gICAgICAgICAgICBzdGF0ZS5mb2N1c2VkUm93ICE9IG51bGxcbiAgICAgICAgICAgICAgPyBNYXRoLm1pbihzdGF0ZS5mb2N1c2VkUm93ICsgMSwgdGhpcy5wcm9wcy5yb3dDb3VudCAtIDEpXG4gICAgICAgICAgICAgIDogMFxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7XG4gICAgICAgICAgICBpbmRleDogdGhpcy5zdGF0ZS5mb2N1c2VkUm93IHx8IDAsXG4gICAgICAgICAgICBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gdGhyb3R0bGluZyB0aGlzIHNvIGEgZG91YmxlIGNsaWNrIGJlaGF2ZXMgbGlrZSBhIHNpbmdsZSBjbGlja1xuICBoYW5kbGVSb3dDbGljayA9IHRocm90dGxlKFxuICAgICh7IGV2ZW50LCBpbmRleCB9OiB7IGV2ZW50OiBNb3VzZUV2ZW50PGFueT47IGluZGV4OiBudW1iZXIgfSkgPT4ge1xuICAgICAgY29uc3QgYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoID1cbiAgICAgICAgdGhpcy5wcm9wcy5hbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2ggPz8gZmFsc2VcbiAgICAgIGlmICghYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0KHsgaW5kZXgsIGNvbnRpZ3VvdXM6IGV2ZW50LnNoaWZ0S2V5IH0pXG4gICAgfSxcbiAgICAyNTAsXG4gICAgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogZmFsc2UgfVxuICApXG5cbiAgaGFuZGxlUmVzaXplID0gKHsgeCwgaW5kZXggfTogeyB4OiBudW1iZXI7IGluZGV4OiBudW1iZXIgfSkgPT4ge1xuICAgIGlmICh0aGlzLmNvbHVtbldpZHRoUGVyY2VudHMubGVuZ3RoID4gMCAmJiB0aGlzLnRvdGFsV2lkdGgpIHtcbiAgICAgIGNvbnN0IHByZXZXaWR0aHMgPSB0aGlzLmNvbHVtbldpZHRoUGVyY2VudHNcbiAgICAgIGNvbnN0IG5ld1dpZHRocyA9IFsuLi5wcmV2V2lkdGhzXVxuICAgICAgY29uc3QgcGFyZW50V2lkdGggPSB0aGlzLnByb3BzLnNjcm9sbFdpZHRoID8/IHRoaXMucHJvcHMud2lkdGhcbiAgICAgIC8vIGxpbWl0IG5leHQgaW5kZXggZnJvbSBnb2luZyBiZXlvbmQgYm91bmRzXG4gICAgICBjb25zdCBuZXh0SW5kZXggPSBNYXRoLm1pbihpbmRleCArIDEsIHByZXZXaWR0aHMubGVuZ3RoIC0gMSlcbiAgICAgIGNvbnN0IHBlcmNlbnRDaGFuZ2UgPSB4IC8gdGhpcy50b3RhbFdpZHRoXG5cbiAgICAgIGlmICh0aGlzLnByb3BzLnNjcm9sbFdpZHRoKSB7XG4gICAgICAgIC8vIGlmIHRhYmxlIGlzIHNjcm9sbGFibGUsIHdlIGNhbiBncm93IHRoZSBjb2x1bW4gd2l0aG91dFxuICAgICAgICAvLyBzaHJpbmtpbmcgdGhlIG90aGVyc1xuICAgICAgICBjb25zdCBzYWZlUGVyY2VudENoYW5nZSA9XG4gICAgICAgICAgKHByZXZXaWR0aHNbaW5kZXhdICsgcGVyY2VudENoYW5nZSkgKiBwYXJlbnRXaWR0aCA8XG4gICAgICAgICAgRGF0YUdyaWQuTUlOX0NPTF9XSURUSFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHBlcmNlbnRDaGFuZ2VcbiAgICAgICAgbmV3V2lkdGhzW2luZGV4XSA9IHByZXZXaWR0aHNbaW5kZXhdICsgc2FmZVBlcmNlbnRDaGFuZ2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGlmIHRoZSB0YWJsZSBpcyBub3Qgc2Nyb2xsYWJsZSwgZW5zdXJlIGFsbCBjb2x1bW5zIGZpdCBieVxuICAgICAgICAvLyBhZGp1c3RpbmcgdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGUgb25lIGFmdGVyIGl0XG4gICAgICAgIGNvbnN0IHNhZmVQZXJjZW50Q2hhbmdlID1cbiAgICAgICAgICAocHJldldpZHRoc1tpbmRleF0gKyBwZXJjZW50Q2hhbmdlKSAqIHBhcmVudFdpZHRoIDxcbiAgICAgICAgICAgIERhdGFHcmlkLk1JTl9DT0xfV0lEVEggfHxcbiAgICAgICAgICAocHJldldpZHRoc1tuZXh0SW5kZXhdIC0gcGVyY2VudENoYW5nZSkgKiBwYXJlbnRXaWR0aCA8XG4gICAgICAgICAgICBEYXRhR3JpZC5NSU5fQ09MX1dJRFRIXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGVyY2VudENoYW5nZVxuICAgICAgICBuZXdXaWR0aHNbaW5kZXhdID0gcHJldldpZHRoc1tpbmRleF0gKyBzYWZlUGVyY2VudENoYW5nZVxuICAgICAgICBuZXdXaWR0aHNbbmV4dEluZGV4XSA9IHByZXZXaWR0aHNbbmV4dEluZGV4XSAtIHNhZmVQZXJjZW50Q2hhbmdlXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzaXplKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25SZXNpemUoXG4gICAgICAgICAgLy8gbXVsdGlwbHkgYnkgd2lkdGggcHJvcCB0byBnZXQgY29ycmVjdCBwZXJjZW50YWdlXG4gICAgICAgICAgbmV3V2lkdGhzLm1hcCh3aWR0aCA9PiBNYXRoLnJvdW5kKHdpZHRoICogcGFyZW50V2lkdGgpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWFwQ2hpbGRyZW4gPSAoKSA9PiB7XG4gICAgY29uc3QgSXNBcnJheSA9IChcbiAgICAgIGNoaWxkcmVuXG4gICAgKTogY2hpbGRyZW4gaXMgKENvbHVtbkZ1bmN0aW9uIHwgQ29sdW1uRnVuY3Rpb25bXSlbXSA9PlxuICAgICAgQXJyYXkuaXNBcnJheShjaGlsZHJlbilcblxuICAgIGNvbnN0IGNoaWxkcmVuOiAoQ29sdW1uRnVuY3Rpb24gfCBDb2x1bW5GdW5jdGlvbltdKVtdID0gSXNBcnJheShcbiAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICApXG4gICAgICA/IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgIDogW3RoaXMucHJvcHMuY2hpbGRyZW5dXG5cbiAgICBjb25zdCB2YWxpZENoaWxkcmVuID0gY2hpbGRyZW5cbiAgICAgIC5mbGF0KClcbiAgICAgIC5maWx0ZXIoY2hpbGQgPT4gdHlwZW9mIGNoaWxkID09PSAnZnVuY3Rpb24nKVxuXG4gICAgY29uc3QgeyBmaWx0ZXJzID0ge30sIGxvY2FsZVN0cmluZ3MgPSB7fSwgbG9jYWxlID0gJ2VuJyB9ID0gdGhpcy5wcm9wc1xuXG4gICAgcmV0dXJuIHZhbGlkQ2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+XG4gICAgICBjaGlsZCh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbG9jYWxlU3RyaW5ncyxcbiAgICAgICAgY29sdW1uSW5kZXg6IGluZGV4LFxuICAgICAgICBjb2x1bW5Db3VudDogdmFsaWRDaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgIGdldEZpbHRlclZhbHVlOiBkYXRhS2V5ID0+IGZpbHRlcnNbZGF0YUtleV0sXG4gICAgICAgIG9uSGVhZGVyUG9wb3Zlck9wZW46IG9wZW4gPT5cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBvcGVuIH0pLFxuICAgICAgICBvblNvcnQ6IHNvcnRBcmdzID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcih7IC4uLnNvcnRBcmdzIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG9uRmlsdGVyOiAoeyBkYXRhS2V5LCB2YWx1ZSwgb3BlcmF0b3IgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgW2RhdGFLZXldOiBvcGVyYXRvclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6XG4gICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGBvblJlc2l6ZWAgd2lsbCBzaG93IGRyYWcgaGFuZGxlcyBzbyBkb24ndCBzZXQgaXRcbiAgICAgICAgICAvLyBpZiBubyBwcm9wIGlzIHBhc3NlZCBpbiBvciBmb3IgdGhlIGxhc3QgY29sdW1uIGlmIHRoZSB0YWJsZSBpc24ndFxuICAgICAgICAgIC8vIHNjcm9sbGFibGVcbiAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplICYmXG4gICAgICAgICAgKCghdGhpcy5wcm9wcy5zY3JvbGxXaWR0aCAmJiBpbmRleCAhPT0gdmFsaWRDaGlsZHJlbi5sZW5ndGggLSAxKSB8fFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zY3JvbGxXaWR0aClcbiAgICAgICAgICAgID8gKHsgeCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoeyB4LCBpbmRleCB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpc1Jvd0xvYWRlZCA9ICh7IGluZGV4IH06IEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBoYXNNb3JlUm93cywgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gIWhhc01vcmVSb3dzIHx8IGluZGV4IDwgcm93Q291bnRcbiAgfVxuXG4gIGlzQ29udGV4dE1lbnVWaXNpYmxlID0gKGluZGV4OiBudW1iZXIpID0+XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSAmJiB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LmluZGV4ID09PSBpbmRleFxuXG4gIGNsb3NlQ29udGV4dE1lbnUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVDb250ZXh0TWVudTogbnVsbFxuICAgIH0pXG4gIH1cblxuICBjb250ZXh0TWVudVJlbmRlcmVyID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLnByb3BzLnNlbGVjdGVkUm93cyA/PyBbXVxuICAgIGlmIChcbiAgICAgIHRoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlciAmJlxuICAgICAgdGhpcy5pc0NvbnRleHRNZW51VmlzaWJsZShpbmRleCkgJiZcbiAgICAgIGRvY3VtZW50LmJvZHkgIT09IG51bGxcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbnRleHRNZW51Q2xvc2VXcmFwcGVyID0gKFxuICAgICAgICA8Q2xvc2VXcmFwcGVyIG9uQ2xvc2U9e3RoaXMuY2xvc2VDb250ZXh0TWVudX0+XG4gICAgICAgICAge3RoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlcih7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LFxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLFxuICAgICAgICAgICAgb25DbG9zZTogdGhpcy5jbG9zZUNvbnRleHRNZW51XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvQ2xvc2VXcmFwcGVyPlxuICAgICAgKVxuICAgICAgcmV0dXJuIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChjb250ZXh0TWVudUNsb3NlV3JhcHBlciwgZG9jdW1lbnQuYm9keSlcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGhlYWRlclJvd1JlbmRlcmVyID0gKHtcbiAgICBjb2x1bW5zLFxuICAgIHN0eWxlXG4gIH06IHtcbiAgICBjb2x1bW5zOiBSZWFjdE5vZGVbXVxuICAgIHN0eWxlOiB7fVxuICB9KSA9PiAoXG4gICAgPEVsZW1lbnRzLlJvdyByb2xlPVwicm93XCIgaGVhZGVyIHplYnJhIHN0eWxlPXtzdHlsZX0+XG4gICAgICB7Y29sdW1uc31cbiAgICA8L0VsZW1lbnRzLlJvdz5cbiAgKVxuXG4gIHJvd1JlbmRlcmVyID0gKHtcbiAgICBrZXksXG4gICAgc3R5bGUsXG4gICAgaW5kZXgsXG4gICAgcm93RGF0YSxcbiAgICBjb2x1bW5zLFxuICAgIGNsYXNzTmFtZSxcbiAgICBvblJvd01vdXNlT3ZlcixcbiAgICBvblJvd01vdXNlT3V0XG4gIH06IFRhYmxlUm93UHJvcHMpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSB0aGlzLnByb3BzLnNlbGVjdGVkUm93cyA/PyBbXVxuICAgIGNvbnN0IGRhdGFJbnN0cnVtZW50YXRpb24gPSB0aGlzLnByb3BzWydkYXRhLWluc3RydW1lbnRhdGlvbiddID8/ICdkYXRhZ3JpZCdcbiAgICByZXR1cm4gKFxuICAgICAgPEZvY3VzYWJsZVJvd1xuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgYXJpYS1yb3dpbmRleD17aW5kZXggKyAxfVxuICAgICAgICB6ZWJyYT17aW5kZXggJSAyID09PSAxfVxuICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGluZGV4KX1cbiAgICAgICAgc2VsZWN0aW5nPXt0aGlzLnN0YXRlLnNlbGVjdGluZ31cbiAgICAgICAgZm9jdXNlZD17aW5kZXggPT09IHRoaXMuc3RhdGUuZm9jdXNlZFJvd31cbiAgICAgICAga2V5PXtrZXl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgb25Nb3VzZUxlYXZlPXtldmVudCA9PiB7XG4gICAgICAgICAgb25Sb3dNb3VzZU91dCAmJiBvblJvd01vdXNlT3V0KHsgcm93RGF0YSwgaW5kZXgsIGV2ZW50IH0pXG4gICAgICAgIH19XG4gICAgICAgIG9uTW91c2VFbnRlcj17ZXZlbnQgPT4ge1xuICAgICAgICAgIG9uUm93TW91c2VPdmVyICYmIG9uUm93TW91c2VPdmVyKHsgcm93RGF0YSwgaW5kZXgsIGV2ZW50IH0pXG4gICAgICAgIH19XG4gICAgICAgIG9uRm9jdXM9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkUm93OiBpbmRleCB9KX1cbiAgICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake2RhdGFJbnN0cnVtZW50YXRpb259LXJvdyR7aW5kZXggKyAxfWB9XG4gICAgICAgIG9uQ2xpY2s9e1xuICAgICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgICAgPyBldmVudCA9PiB0aGlzLmhhbmRsZVJvd0NsaWNrKHsgZXZlbnQsIGluZGV4IH0pXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICAgIG9uQ29udGV4dE1lbnU9e1xuICAgICAgICAgIHRoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlclxuICAgICAgICAgICAgPyBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICBhY3RpdmVDb250ZXh0TWVudToge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IGV2ZW50LmNsaWVudFksXG4gICAgICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgICAgICByb3dEYXRhXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCkgJiYgdGhpcy5wcm9wcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJvd0NsaWNrKHsgZXZlbnQsIGluZGV4IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PlxuICAgICAgICAgIHRoaXMucHJvcHMub25Sb3dEb3VibGVDbGljayAmJlxuICAgICAgICAgIHRoaXMucHJvcHMub25Sb3dEb3VibGVDbGljayh7IGluZGV4LCBldmVudCwgcm93RGF0YSB9KVxuICAgICAgICB9XG4gICAgICA+XG4gICAgICAgIHt0aGlzLmNvbHVtblRyYW5zZm9ybWVyXG4gICAgICAgICAgPyB0aGlzLmNvbHVtblRyYW5zZm9ybWVyKGNvbHVtbnMsIHJvd0RhdGEsIGluZGV4KVxuICAgICAgICAgIDogY29sdW1uc31cbiAgICAgICAge3RoaXMuY29udGV4dE1lbnVSZW5kZXJlcihpbmRleCl9XG4gICAgICA8L0ZvY3VzYWJsZVJvdz5cbiAgICApXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBoYXNNb3JlUm93cyxcbiAgICAgIGhlaWdodCxcbiAgICAgIGxvYWRNb3JlUm93cyA9ICgpID0+IFByb21pc2UucmVzb2x2ZShmYWxzZSksXG4gICAgICByb3dDb3VudCxcbiAgICAgIHNvcnRCeSA9ICcnLFxuICAgICAgc29ydERpcmVjdGlvbiA9IFNvcnREaXJlY3Rpb24uQVNDLFxuICAgICAgd2lkdGgsXG4gICAgICAnZGF0YS1pbnN0cnVtZW50YXRpb24nOiBkYXRhSW5zdHJ1bWVudGF0aW9uID0gJ2RhdGFncmlkJyxcbiAgICAgIC4uLnByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIGhlYWRlciBvZiB0aGUgRGF0YUdyaWQgZG9lc24ndCByZW5kZXIgb24gcGFnZSBsb2FkIGluIFNhZmFyaVxuICAgIGNvbnN0IHNhZmFyaVN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWigwKWBcbiAgICB9XG5cbiAgICBjb25zdCBtYXBwZWRDaGlsZHJlbiA9IHRoaXMubWFwQ2hpbGRyZW4oKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQgIT09IG51bGwpXG4gICAgLy8gVE9ETzogQmV0dGVyIHR5cGUgc2lnbmF0dXJlIHdoZW4gYWNjZXNzaW5nIGNoaWxkcmVuIHByb3BzP1xuICAgIGNvbnN0IHNwYW5EYXRhID0gbWFwcGVkQ2hpbGRyZW4ubWFwKChjaGlsZDogUmVhY3RFbGVtZW50KSA9PiAoe1xuICAgICAgY29sc3BhbjogY2hpbGQucHJvcHMuY29sc3BhbiA/IGNoaWxkLnByb3BzLmNvbHNwYW4gOiAoKSA9PiAxLFxuICAgICAgd2lkdGg6IGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgZmxleEdyb3c6IGNoaWxkLnByb3BzLmZsZXhHcm93XG4gICAgfSkpXG4gICAgLy8gR2V0IHRoZSBhY3R1YWwgd2lkdGggb2YgYWxsIHRoZSBjb2x1bW5zLiBUaGlzIGlzIGluZGVwZW5kZW50IGZyb20gdGhlXG4gICAgLy8gd2lkdGggcHJvcC5cbiAgICB0aGlzLnRvdGFsV2lkdGggPSBtYXBwZWRDaGlsZHJlbi5yZWR1Y2U8bnVtYmVyPihcbiAgICAgICh0b3RhbDogbnVtYmVyLCBjaGlsZDogUmVhY3RFbGVtZW50PEJhc2ljQ29sdW1uUHJvcHM+KSA9PlxuICAgICAgICB0b3RhbCArIGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgMFxuICAgIClcbiAgICAvLyBDb252ZXJ0IHRoZSB3aWR0aHMgdG8gcGVyY2VudHMgc28gd2UgY2FuIG1hcCB0aGVtIGJhY2sgdG8gdGhlIHJlYWwgdGFibGVcbiAgICAvLyB3aWR0aCBsYXRlci5cbiAgICB0aGlzLmNvbHVtbldpZHRoUGVyY2VudHMgPSBtYXBwZWRDaGlsZHJlbi5tYXAoXG4gICAgICAoeyBwcm9wcyB9OiBSZWFjdEVsZW1lbnQpID0+IHByb3BzLndpZHRoIC8gdGhpcy50b3RhbFdpZHRoXG4gICAgKVxuXG4gICAgdGhpcy5jb2x1bW5UcmFuc2Zvcm1lciA9IChcbiAgICAgIGNvbHVtbnM6IFJlYWN0RWxlbWVudDxhbnk+W10sXG4gICAgICByb3dEYXRhLFxuICAgICAgcm93SW5kZXhcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHNwYW5zID0gc3BhbkRhdGEubWFwKGl0ZW0gPT4gaXRlbS5jb2xzcGFuKHJvd0RhdGEpKVxuICAgICAgY29uc3Qgc3Bhbm5lZENvbHVtbnM6IFJlYWN0RWxlbWVudFtdID0gW11cbiAgICAgIGxldCBpbmRleCA9IDBcbiAgICAgIHdoaWxlIChpbmRleCA8IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHNwYW4gPSBzcGFuc1tpbmRleF1cbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tpbmRleF1cbiAgICAgICAgaWYgKHNwYW4gPiAxKSB7XG4gICAgICAgICAgY29uc3QgZm9sbG93aW5nQ29sdW1ucyA9IHNwYW5EYXRhLnNsaWNlKGluZGV4LCBzcGFuKVxuICAgICAgICAgIC8vIGZpbmQgbmV3IHdpZHRoIGJ5IGFkZGluZyBjdXJyZW50IGNvbHVtbiB3aWR0aCBwbHVzIGNvbHVtbnMgdGhhdCBhcmUgc3Bhbm5lZCBvdmVyXG5cbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGZvbGxvd2luZ0NvbHVtbnMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3VtdWxhdG9yLCB7IHdpZHRoIH06IHsgd2lkdGg6IG51bWJlciB9KSA9PiBhY2N1bXVsYXRvciArIHdpZHRoLFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IGZsZXhHcm93ID0gZm9sbG93aW5nQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdW11bGF0b3IsIHsgZmxleEdyb3cgfTogeyBmbGV4R3JvdzogbnVtYmVyIH0pID0+XG4gICAgICAgICAgICAgIGFjY3VtdWxhdG9yICsgZmxleEdyb3csXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBjbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke2RhdGFJbnN0cnVtZW50YXRpb259LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5FbGVtZW50cy5jZWxsUmVzZXRTdHlsZSxcbiAgICAgICAgICAgICAgICBmbGV4OiBgMCAxICR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgIGZsZXhHcm93XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIGluZGV4ICs9IHNwYW4gLy8gc2tpcCBjb2x1bW5zIHRoYXQgaGF2ZSBiZWVuIHNwYW5uZWQgb3ZlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBjbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke2RhdGFJbnN0cnVtZW50YXRpb259LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Bhbm5lZENvbHVtbnNcbiAgICB9XG5cbiAgICBjb25zdCBUYWJsZUNvbXBvbmVudCA9XG4gICAgICB0aGlzLnByb3BzLnNjcm9sbFdpZHRoICE9PSB1bmRlZmluZWQgPyBTY3JvbGxhYmxlVGFibGUgOiBUYWJsZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFbGVtZW50cy5UYWJsZUNvbnRhaW5lclxuICAgICAgICBjc3M9e3sgd2lkdGgsIGhlaWdodCB9fVxuICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgb25LZXlVcD17dGhpcy5oYW5kbGVLZXlVcH1cbiAgICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake2RhdGFJbnN0cnVtZW50YXRpb259LWdyaWRgfVxuICAgICAgPlxuICAgICAgICA8SW5maW5pdGVMb2FkZXJcbiAgICAgICAgICBpc1Jvd0xvYWRlZD17dGhpcy5pc1Jvd0xvYWRlZH1cbiAgICAgICAgICBsb2FkTW9yZVJvd3M9e2xvYWRNb3JlUm93c31cbiAgICAgICAgICByb3dDb3VudD17aGFzTW9yZVJvd3MgPyByb3dDb3VudCArIDEgOiByb3dDb3VudH1cbiAgICAgICAgICB0aHJlc2hvbGQ9ezV9XG4gICAgICAgICAgcmVmPXt0aGlzLmluZmluaXRlVGFibGV9XG4gICAgICAgID5cbiAgICAgICAgICB7KHsgb25Sb3dzUmVuZGVyZWQsIHJlZ2lzdGVyQ2hpbGQgfSkgPT4gKFxuICAgICAgICAgICAgPFRhYmxlQ29tcG9uZW50XG4gICAgICAgICAgICAgIHN0eWxlPXtzYWZhcmlTdHlsZX1cbiAgICAgICAgICAgICAgZ3JpZFN0eWxlPXt7IG91dGxpbmU6ICdub25lJyB9fVxuICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ9ezM2fVxuICAgICAgICAgICAgICByb3dIZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICBzb3J0Qnk9e3NvcnRCeX1cbiAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj17c29ydERpcmVjdGlvbn1cbiAgICAgICAgICAgICAgcmVmPXtyZWdpc3RlckNoaWxkfVxuICAgICAgICAgICAgICBub1Jvd3NSZW5kZXJlZD17KCkgPT4gPGRpdj5ObyByZXN1bHRzPC9kaXY+fVxuICAgICAgICAgICAgICBvblJvd3NSZW5kZXJlZD17b25Sb3dzUmVuZGVyZWR9XG4gICAgICAgICAgICAgIG9uU2Nyb2xsPXtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51XG4gICAgICAgICAgICAgICAgICA/ICgpID0+IHRoaXMuY2xvc2VDb250ZXh0TWVudSgpXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvd0NvdW50PXtoYXNNb3JlUm93cyA/IHJvd0NvdW50ICsgMSA6IHJvd0NvdW50fVxuICAgICAgICAgICAgICBoZWFkZXJSb3dSZW5kZXJlcj17dGhpcy5oZWFkZXJSb3dSZW5kZXJlcn1cbiAgICAgICAgICAgICAgcm93UmVuZGVyZXI9e3RoaXMucm93UmVuZGVyZXJ9XG4gICAgICAgICAgICAgIC8vIGFjY291bnQgZm9yIGJvcmRlciB3aWR0aCBvZiBjb250YWluZXJcbiAgICAgICAgICAgICAgd2lkdGg9e3dpZHRoIC0gMn1cbiAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgLSAyfVxuICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttYXBwZWRDaGlsZHJlbn1cbiAgICAgICAgICAgIDwvVGFibGVDb21wb25lbnQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9JbmZpbml0ZUxvYWRlcj5cbiAgICAgIDwvRWxlbWVudHMuVGFibGVDb250YWluZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFHcmlkXG4iXX0= */"),
|
|
554
589
|
onKeyDown: this.handleKeyDown,
|
|
555
590
|
onKeyUp: this.handleKeyUp,
|
|
556
|
-
"data-instrumentation": "".concat(
|
|
591
|
+
"data-instrumentation": "".concat(dataInstrumentation, "-grid"),
|
|
557
592
|
children: (0, _jsxRuntime.jsx)(_reactVirtualized.InfiniteLoader, {
|
|
558
593
|
"data-gs-c": gsC(function children(_ref15) {
|
|
559
594
|
var onRowsRendered = _ref15.onRowsRendered,
|
|
@@ -594,9 +629,7 @@ var DataGrid = /*#__PURE__*/function (_Component) {
|
|
|
594
629
|
}),
|
|
595
630
|
"data-gs": gs("src", "datagrid", "datagrid.tsx", "elements-tablecontainer", "infinite-loader"),
|
|
596
631
|
isRowLoaded: this.isRowLoaded,
|
|
597
|
-
loadMoreRows: loadMoreRows
|
|
598
|
-
return Promise.resolve(false);
|
|
599
|
-
},
|
|
632
|
+
loadMoreRows: loadMoreRows,
|
|
600
633
|
rowCount: hasMoreRows ? rowCount + 1 : rowCount,
|
|
601
634
|
threshold: 5,
|
|
602
635
|
ref: this.infiniteTable,
|
|
@@ -651,16 +684,5 @@ _defineProperty(DataGrid, "SINGLE_SELECT", 'single');
|
|
|
651
684
|
_defineProperty(DataGrid, "MULTI_SELECT", 'multi');
|
|
652
685
|
_defineProperty(DataGrid, "MIN_COL_WIDTH", 50);
|
|
653
686
|
_defineProperty(DataGrid, "utils", dataGridUtils);
|
|
654
|
-
_defineProperty(DataGrid, "defaultProps", {
|
|
655
|
-
loadMoreRows: _lodash3["default"],
|
|
656
|
-
onSelect: _lodash3["default"],
|
|
657
|
-
onFilter: _lodash3["default"],
|
|
658
|
-
'data-instrumentation': 'datagrid',
|
|
659
|
-
sortBy: '',
|
|
660
|
-
sortDirection: _reactVirtualized.SortDirection.ASC,
|
|
661
|
-
filters: {},
|
|
662
|
-
selectedRows: [],
|
|
663
|
-
allowRowEventPassthrough: false
|
|
664
|
-
});
|
|
665
687
|
_defineProperty(DataGrid, "displayName", 'DataGrid');
|
|
666
688
|
var _default = exports["default"] = DataGrid;
|
|
@@ -23,8 +23,8 @@ type ColumnHeaderProps = {
|
|
|
23
23
|
filterValue: any;
|
|
24
24
|
filterRenderer?: ((arg0: filterRendererArguments) => ReactNode) | false | null;
|
|
25
25
|
sortRenderer?: ((arg0: sortRendererArguments) => ReactNode) | false | null;
|
|
26
|
-
sortAscIcon
|
|
27
|
-
sortDescIcon
|
|
26
|
+
sortAscIcon?: ReactNode;
|
|
27
|
+
sortDescIcon?: ReactNode;
|
|
28
28
|
sortBy?: string;
|
|
29
29
|
/** Locale */
|
|
30
30
|
locale?: string;
|
|
@@ -40,10 +40,6 @@ type ColumnHeaderState = {
|
|
|
40
40
|
* Component that renders a column header. Responsible for sorting and filtering.
|
|
41
41
|
*/
|
|
42
42
|
declare class ColumnHeader extends Component<ColumnHeaderProps, ColumnHeaderState> {
|
|
43
|
-
static defaultProps: {
|
|
44
|
-
sortAscIcon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
45
|
-
sortDescIcon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
46
|
-
};
|
|
47
43
|
state: {
|
|
48
44
|
opened: boolean;
|
|
49
45
|
isFiltering: boolean;
|
|
@@ -99,8 +99,14 @@ var ColumnHeader = /*#__PURE__*/function (_Component) {
|
|
|
99
99
|
_this$props$showSortI = _this$props.showSortIndicator,
|
|
100
100
|
showSortIndicator = _this$props$showSortI === void 0 ? false : _this$props$showSortI,
|
|
101
101
|
sortDirection = _this$props.sortDirection,
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
_this$props$sortAscIc = _this$props.sortAscIcon,
|
|
103
|
+
sortAscIcon = _this$props$sortAscIc === void 0 ? (0, _jsxRuntime.jsx)(_Icon["default"].Medium.ToolSortAsc, {
|
|
104
|
+
"data-gs": gs("src", "datagrid", "components", "icon-medium-tool-sort-asc")
|
|
105
|
+
}) : _this$props$sortAscIc,
|
|
106
|
+
_this$props$sortDescI = _this$props.sortDescIcon,
|
|
107
|
+
sortDescIcon = _this$props$sortDescI === void 0 ? (0, _jsxRuntime.jsx)(_Icon["default"].Medium.ToolSortDesc, {
|
|
108
|
+
"data-gs": gs("src", "datagrid", "components", "icon-medium-tool-sort-desc")
|
|
109
|
+
}) : _this$props$sortDescI,
|
|
104
110
|
onSort = _this$props.onSort,
|
|
105
111
|
onFilter = _this$props.onFilter,
|
|
106
112
|
onResize = _this$props.onResize,
|
|
@@ -198,12 +204,4 @@ var ColumnHeader = /*#__PURE__*/function (_Component) {
|
|
|
198
204
|
}
|
|
199
205
|
}]);
|
|
200
206
|
}(_react.Component);
|
|
201
|
-
_defineProperty(ColumnHeader, "defaultProps", {
|
|
202
|
-
sortAscIcon: (0, _jsxRuntime.jsx)(_Icon["default"].Medium.ToolSortAsc, {
|
|
203
|
-
"data-gs": gs("src", "datagrid", "components", "icon-medium-tool-sort-asc")
|
|
204
|
-
}),
|
|
205
|
-
sortDescIcon: (0, _jsxRuntime.jsx)(_Icon["default"].Medium.ToolSortDesc, {
|
|
206
|
-
"data-gs": gs("src", "datagrid", "components", "icon-medium-tool-sort-desc")
|
|
207
|
-
})
|
|
208
|
-
});
|
|
209
207
|
var _default = exports["default"] = ColumnHeader;
|
|
@@ -65,7 +65,7 @@ var FocusableRow = /*#__PURE__*/function (_Component) {
|
|
|
65
65
|
value: function render() {
|
|
66
66
|
return (0, _jsxRuntime.jsx)(_elements.Row, _objectSpread(_objectSpread({
|
|
67
67
|
"data-gs": gs("src", "datagrid", "components", "row"),
|
|
68
|
-
|
|
68
|
+
"data-testid": "data-grid-focusable-row",
|
|
69
69
|
tabIndex: this.props.onClick && (this.props.focused ? 0 : -1)
|
|
70
70
|
}, this.props), {}, {
|
|
71
71
|
ref: this.element
|
|
@@ -29,21 +29,6 @@ declare class ScrollableTable extends React.PureComponent<TableProps, Scrollable
|
|
|
29
29
|
constructor(props: TableProps);
|
|
30
30
|
componentDidMount(): void;
|
|
31
31
|
componentDidUpdate(): void;
|
|
32
|
-
static defaultProps: {
|
|
33
|
-
disableHeader: boolean;
|
|
34
|
-
estimatedRowSize: number;
|
|
35
|
-
headerHeight: number;
|
|
36
|
-
headerStyle: {};
|
|
37
|
-
noRowsRenderer: () => null;
|
|
38
|
-
onRowsRendered: () => null;
|
|
39
|
-
onScroll: () => null;
|
|
40
|
-
overscanIndicesGetter: import("react-virtualized/dist/es/Grid").OverscanIndicesGetter;
|
|
41
|
-
overscanRowCount: number;
|
|
42
|
-
rowStyle: {};
|
|
43
|
-
scrollToAlignment: string;
|
|
44
|
-
scrollToIndex: number;
|
|
45
|
-
style: {};
|
|
46
|
-
};
|
|
47
32
|
render(): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
48
33
|
createColumn: ({ column, columnIndex, isScrolling, parent, rowData, rowIndex }: {
|
|
49
34
|
column: React.ReactElement<ColumnProps>;
|