@rivet-health/design-system 40.30.0 → 40.31.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.
@@ -0,0 +1,53 @@
1
+ export var TableCollapseHelpers;
2
+ (function (TableCollapseHelpers) {
3
+ function toggleRowCollapse(state, id) {
4
+ const currentSet = state.collapseState.collapsedRows;
5
+ const newSet = new Set(currentSet);
6
+ const isCollapsedBeforeToggle = newSet.has(id);
7
+ if (isCollapsedBeforeToggle) {
8
+ newSet.delete(id);
9
+ }
10
+ else {
11
+ newSet.add(id);
12
+ }
13
+ return {
14
+ ...state,
15
+ collapseState: {
16
+ ...state.collapseState,
17
+ collapsedRows: newSet,
18
+ },
19
+ };
20
+ }
21
+ TableCollapseHelpers.toggleRowCollapse = toggleRowCollapse;
22
+ function toggleHeaderCollapse(state, id) {
23
+ const currentSet = state.collapseState.collapsedHeaders;
24
+ const newSet = new Set(currentSet);
25
+ const isCollapsedBeforeToggle = newSet.has(id);
26
+ if (isCollapsedBeforeToggle) {
27
+ newSet.delete(id);
28
+ }
29
+ else {
30
+ newSet.add(id);
31
+ }
32
+ return {
33
+ ...state,
34
+ collapseState: {
35
+ ...state.collapseState,
36
+ collapsedHeaders: newSet,
37
+ },
38
+ };
39
+ }
40
+ TableCollapseHelpers.toggleHeaderCollapse = toggleHeaderCollapse;
41
+ function isRowCollapsed(state, id) {
42
+ return state.collapseState.collapsedRows.has(id);
43
+ }
44
+ TableCollapseHelpers.isRowCollapsed = isRowCollapsed;
45
+ function isHeaderCollapsed(state, id) {
46
+ if (!id) {
47
+ return false;
48
+ }
49
+ return state.collapseState.collapsedHeaders.has(id);
50
+ }
51
+ TableCollapseHelpers.isHeaderCollapsed = isHeaderCollapsed;
52
+ })(TableCollapseHelpers || (TableCollapseHelpers = {}));
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3RhYmxlL3N0YXRlLWhlbHBlcnMvY29sbGFwc2UtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLEtBQVcsb0JBQW9CLENBOEVwQztBQTlFRCxXQUFpQixvQkFBb0I7SUFDbkMsU0FBZ0IsaUJBQWlCLENBTS9CLEtBQXFDLEVBQ3JDLEVBQVc7UUFFWCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxNQUFNLHVCQUF1QixHQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEQsSUFBSSx1QkFBdUIsRUFBRTtZQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25CO2FBQU07WUFDTCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hCO1FBRUQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLGFBQWEsRUFBRTtnQkFDYixHQUFHLEtBQUssQ0FBQyxhQUFhO2dCQUN0QixhQUFhLEVBQUUsTUFBTTthQUN0QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBMUJlLHNDQUFpQixvQkEwQmhDLENBQUE7SUFFRCxTQUFnQixvQkFBb0IsQ0FNbEMsS0FBcUMsRUFDckMsRUFBVTtRQUVWLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkMsTUFBTSx1QkFBdUIsR0FBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksdUJBQXVCLEVBQUU7WUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNuQjthQUFNO1lBQ0wsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQjtRQUVELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixhQUFhLEVBQUU7Z0JBQ2IsR0FBRyxLQUFLLENBQUMsYUFBYTtnQkFDdEIsZ0JBQWdCLEVBQUUsTUFBTTthQUN6QjtTQUNGLENBQUM7SUFDSixDQUFDO0lBM0JlLHlDQUFvQix1QkEyQm5DLENBQUE7SUFFRCxTQUFnQixjQUFjLENBSzVCLEtBQXFDLEVBQUUsRUFBVztRQUNsRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBUGUsbUNBQWMsaUJBTzdCLENBQUE7SUFFRCxTQUFnQixpQkFBaUIsQ0FLL0IsS0FBcUMsRUFBRSxFQUFpQjtRQUN4RCxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1AsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQVZlLHNDQUFpQixvQkFVaEMsQ0FBQTtBQUNILENBQUMsRUE5RWdCLG9CQUFvQixLQUFwQixvQkFBb0IsUUE4RXBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUml2VGFibGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVDb2xsYXBzZUhlbHBlcnMge1xuICBleHBvcnQgZnVuY3Rpb24gdG9nZ2xlUm93Q29sbGFwc2U8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGlkOiBSWydpZCddLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGNvbnN0IGN1cnJlbnRTZXQgPSBzdGF0ZS5jb2xsYXBzZVN0YXRlLmNvbGxhcHNlZFJvd3M7XG4gICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChjdXJyZW50U2V0KTtcbiAgICBjb25zdCBpc0NvbGxhcHNlZEJlZm9yZVRvZ2dsZTogYm9vbGVhbiA9IG5ld1NldC5oYXMoaWQpO1xuXG4gICAgaWYgKGlzQ29sbGFwc2VkQmVmb3JlVG9nZ2xlKSB7XG4gICAgICBuZXdTZXQuZGVsZXRlKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U2V0LmFkZChpZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY29sbGFwc2VTdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZS5jb2xsYXBzZVN0YXRlLFxuICAgICAgICBjb2xsYXBzZWRSb3dzOiBuZXdTZXQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gdG9nZ2xlSGVhZGVyQ29sbGFwc2U8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGlkOiBzdHJpbmcsXG4gICk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiB7XG4gICAgY29uc3QgY3VycmVudFNldCA9IHN0YXRlLmNvbGxhcHNlU3RhdGUuY29sbGFwc2VkSGVhZGVycztcbiAgICBjb25zdCBuZXdTZXQgPSBuZXcgU2V0KGN1cnJlbnRTZXQpO1xuXG4gICAgY29uc3QgaXNDb2xsYXBzZWRCZWZvcmVUb2dnbGU6IGJvb2xlYW4gPSBuZXdTZXQuaGFzKGlkKTtcblxuICAgIGlmIChpc0NvbGxhcHNlZEJlZm9yZVRvZ2dsZSkge1xuICAgICAgbmV3U2V0LmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1NldC5hZGQoaWQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGNvbGxhcHNlU3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUuY29sbGFwc2VTdGF0ZSxcbiAgICAgICAgY29sbGFwc2VkSGVhZGVyczogbmV3U2V0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUm93Q29sbGFwc2VkPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiwgaWQ6IFJbJ2lkJ10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuY29sbGFwc2VTdGF0ZS5jb2xsYXBzZWRSb3dzLmhhcyhpZCk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXNIZWFkZXJDb2xsYXBzZWQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LCBpZDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlLmNvbGxhcHNlU3RhdGUuY29sbGFwc2VkSGVhZGVycy5oYXMoaWQpO1xuICB9XG59XG4iXX0=
@@ -251,5 +251,23 @@ export var TableColumnHelpers;
251
251
  };
252
252
  }
253
253
  TableColumnHelpers.resetToDefaultColumns = resetToDefaultColumns;
254
+ function createColumnMetadataMap(columns) {
255
+ return new Map([...columns.entries()].map(([name, metadata]) => [
256
+ name,
257
+ {
258
+ orderable: !!metadata.orderKey,
259
+ filterable: metadata.filterable,
260
+ searchable: metadata.searchable,
261
+ description: metadata.description,
262
+ minWidth: metadata.minWidth,
263
+ dataType: metadata.dataType,
264
+ defaultPinned: metadata.defaultPinned,
265
+ clickPreventDefault: metadata.clickPreventDefault,
266
+ clickStopPropagation: metadata.clickStopPropagation,
267
+ displayName: metadata.displayName,
268
+ },
269
+ ]));
270
+ }
271
+ TableColumnHelpers.createColumnMetadataMap = createColumnMetadataMap;
254
272
  })(TableColumnHelpers || (TableColumnHelpers = {}));
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS90YWJsZS9zdGF0ZS1oZWxwZXJzL2NvbHVtbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxNQUFNLEtBQVcsa0JBQWtCLENBd2FsQztBQXhhRCxXQUFpQixrQkFBa0I7SUFDakMsU0FBZ0Isa0JBQWtCLENBQ2hDLFFBQWlDLEVBQ2pDLE9BQWdCO1FBRWhCLElBQUksT0FBTztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzNCLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxVQUFVO2dCQUNiLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxXQUFXO2dCQUNkLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sQ0FBQztTQUNsQjtJQUNILENBQUM7SUFqQmUscUNBQWtCLHFCQWlCakMsQ0FBQTtJQUVELFNBQWdCLGFBQWEsQ0FNM0IsS0FBcUMsRUFDckMsZ0JBQWlELEVBQ2pELGFBQXdDO1FBRXhDLDRFQUE0RTtRQUM1RSw0RUFBNEU7UUFDNUUsMkVBQTJFO1FBQzNFLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsdUVBQXVFO1FBQ3ZFLGtDQUFrQztRQUNsQyxNQUFNLDhCQUE4QixHQUFHLFVBQVUsQ0FDL0MsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcs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QUFDO0lBbEJlLHdDQUFxQix3QkFrQnBDLENBQUE7QUFDSCxDQUFDLEVBeGFnQixrQkFBa0IsS0FBbEIsa0JBQWtCLFFBd2FsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpZmZlcmVuY2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUml2VGFibGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVDb2x1bW5IZWxwZXJzIHtcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtbkFsaWdubWVudChcbiAgICBkYXRhVHlwZTogUml2VGFibGUuQ29sdW1uRGF0YVR5cGUsXG4gICAgaXNGaXJzdDogYm9vbGVhbixcbiAgKTogUml2VGFibGUuQ29sdW1uQWxpZ25tZW50IHtcbiAgICBpZiAoaXNGaXJzdCkgcmV0dXJuICdsZWZ0JztcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgIGNhc2UgJ2xvbmdUZXh0JzpcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgIGNhc2UgJ2FkdmFuY2VkJzpcbiAgICAgIGNhc2UgJ2ljb24nOlxuICAgICAgY2FzZSAnc2hvcnRUZXh0JzpcbiAgICAgICAgcmV0dXJuICdjZW50ZXInO1xuICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENvbHVtbnM8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIHN1cHBvcnRlZENvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgKTogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSB7XG4gICAgLy8gSWYgdGhlIHRhYmxlIG9mZmVycyBtb3JlIGNvbHVtbnMgdGhhbiB0aGUgdXNlciBoYXMgY29uZmlndXJhdGlvbiBzZXR0aW5nc1xuICAgIC8vIGZvciAob3IgaWYgdGhlIHVzZXIgaGFzIG5vIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgeWV0KSwgd2UnbGwgYXBwZW5kIHRoZW1cbiAgICAvLyB0byB0aGUgZW5kICh1bmxlc3MgdGhleSBzaG91bGQgYmUgcGlubmVkIGJ5IGRlZmF1bHQsIGluIHdoaWNoIGNhc2Ugd2UnbGxcbiAgICAvLyBhcHBlbmQgdGhlbSBhZnRlciB0aGUgb3RoZXIgcGlubmVkIGNvbHVtbnMpLiBUaGlzIGVuc3VyZXMgdGhhdCBuZXcgY29sdW1uc1xuICAgIC8vIHdlIGFkZCB0byBleGlzdGluZyB0YWJsZXMgb3ZlciB0aW1lICgxKSBnZXQgZGlzcGxheWVkIGV2ZW4gdGhvdWdoIHRoZXlcbiAgICAvLyBkb24ndCBhcHBlYXIgaW4gdGhlIHVzZXIncyBjb25maWd1cmF0aW9uIHNldHRpbmdzIHlldCwgYW5kICgyKSBkb24ndFxuICAgIC8vIGludGVycnVwdCB0aGVpciBleGlzdGluZyBzZXR1cC5cbiAgICBjb25zdCBjb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MgPSBkaWZmZXJlbmNlKFxuICAgICAgWy4uLnN1cHBvcnRlZENvbHVtbnMua2V5cygpXSxcbiAgICAgIHN0YXRlLmRpc3BsYXkuY29sdW1uU2V0dGluZ3MubWFwKCh7IGtleSB9KSA9PiBrZXkpLFxuICAgICk7XG5cbiAgICAvLyBUaHJvdyBvdXQgc2V0dGluZ3MgZm9yIGNvbHVtbnMgbm8gbG9uZ2VyIG9mZmVyZWQgYnkgdGhlIHRhYmxlLlxuICAgIGNvbnN0IGNvbHVtbnNXaXRoVXNlclNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdID1cbiAgICAgIHN0YXRlLmRpc3BsYXkuY29sdW1uU2V0dGluZ3MuZmlsdGVyKCh7IGtleSB9KSA9PlxuICAgICAgICBzdXBwb3J0ZWRDb2x1bW5zLmhhcyhrZXkpLFxuICAgICAgKTtcblxuICAgIGNvbnN0IGNvbHVtbnNXaXRob3V0VXNlclNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdID0gW1xuICAgICAgLi4uY29sdW1uTmFtZXNXaXRob3V0VXNlclNldHRpbmdzLFxuICAgIF0ubWFwKChrZXk6IEMpID0+ICh7XG4gICAgICBrZXksXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgcHJlZmVycmVkV2lkdGg6ICdhdXRvJyxcbiAgICAgIHBpbm5lZDogISFzdXBwb3J0ZWRDb2x1bW5zLmdldChrZXkpPy5kZWZhdWx0UGlubmVkLFxuICAgIH0pKTtcblxuICAgIHJldHVybiBvcmRlckludGVudGlvbmFsbHkoXG4gICAgICBbLi4uY29sdW1uc1dpdGhVc2VyU2V0dGluZ3MsIC4uLmNvbHVtbnNXaXRob3V0VXNlclNldHRpbmdzXSxcbiAgICAgIGNvbHVtbk5hbWVNYXAsXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9yZGVySW50ZW50aW9uYWxseTxDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uPihcbiAgICBjb2x1bW5zOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdLFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICk6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5jb2x1bW5zLmZpbHRlcih2ID0+IHYucGlubmVkKSxcbiAgICAgIC4uLmNvbHVtbnMuZmlsdGVyKHYgPT4gdi5lbmFibGVkICYmICF2LnBpbm5lZCksXG4gICAgICAuLi5jb2x1bW5zXG4gICAgICAgIC5maWx0ZXIodiA9PiAhdi5lbmFibGVkICYmICF2LnBpbm5lZClcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICBjb25zdCBhTmFtZSA9IGNvbHVtbk5hbWVNYXAuZ2V0KGEua2V5KSA/PyBhLmtleTtcbiAgICAgICAgICBjb25zdCBiTmFtZSA9IGNvbHVtbk5hbWVNYXAuZ2V0KGIua2V5KSA/PyBiLmtleTtcbiAgICAgICAgICByZXR1cm4gYU5hbWUubG9jYWxlQ29tcGFyZShiTmFtZSk7XG4gICAgICAgIH0pLFxuICAgIF07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRBbGlnbm1lbnQoXG4gICAgbWV0YWRhdGE6IFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhLFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgYWxsb3dTZWxlY3Rpb24/OiBib29sZWFuLFxuICApOiBSaXZUYWJsZS5Db2x1bW5BbGlnbm1lbnQge1xuICAgIHJldHVybiBnZXRDb2x1bW5BbGlnbm1lbnQoXG4gICAgICBtZXRhZGF0YS5kYXRhVHlwZSxcbiAgICAgIGluZGV4ID09PSAwICYmICFhbGxvd1NlbGVjdGlvbixcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb2x1bW5zPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICBzdXBwb3J0ZWRDb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICAgYWxsb3dTZWxlY3Rpb246IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gICk6IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz5bXSB7XG4gICAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIHN1cHBvcnRlZENvbHVtbnMsIGNvbHVtbk5hbWVNYXApO1xuICAgIHJldHVybiBhbGxDb2x1bW5zXG4gICAgICAuZmlsdGVyKCh7IGVuYWJsZWQgfSkgPT4gZW5hYmxlZClcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChcbiAgICAgICAgICBmdWxsQ29sdW1uczogUml2VGFibGUuRnVsbENvbHVtbjxDPltdLFxuICAgICAgICAgIHNldHRpbmdzOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPixcbiAgICAgICAgICBpOiBudW1iZXIsXG4gICAgICAgICk6IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz5bXSA9PiB7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBzdXBwb3J0ZWRDb2x1bW5zLmdldChzZXR0aW5ncy5rZXkpITtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZFdpZHRoID1cbiAgICAgICAgICAgIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoID09PSAnYXV0bydcbiAgICAgICAgICAgICAgPyBtZXRhZGF0YS5taW5XaWR0aFxuICAgICAgICAgICAgICA6IE1hdGgubWF4KG1ldGFkYXRhLm1pbldpZHRoLCBzZXR0aW5ncy5wcmVmZXJyZWRXaWR0aCk7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNDb2x1bW46IFJpdlRhYmxlLkZ1bGxDb2x1bW48Qz4gfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgZnVsbENvbHVtbnNbaSAtIDFdO1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5mdWxsQ29sdW1ucyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgICAgICAgIC4uLm1ldGFkYXRhLFxuICAgICAgICAgICAgICB3aWR0aDogcmVzb2x2ZWRXaWR0aCxcbiAgICAgICAgICAgICAgbGVmdDogc2V0dGluZ3MucGlubmVkXG4gICAgICAgICAgICAgICAgPyBwcmV2aW91c0NvbHVtblxuICAgICAgICAgICAgICAgICAgPyAocHJldmlvdXNDb2x1bW4ubGVmdCB8fCAwKSArIHByZXZpb3VzQ29sdW1uLndpZHRoXG4gICAgICAgICAgICAgICAgICA6ICEhYWxsb3dTZWxlY3Rpb25cbiAgICAgICAgICAgICAgICAgID8gNDBcbiAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiBnZXRBbGlnbm1lbnQobWV0YWRhdGEsIGksICEhYWxsb3dTZWxlY3Rpb24pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgICBbXSxcbiAgICAgICk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gY2hhbmdlQ29sdW1uUGluPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICAgY29sdW1uOiBDLFxuICAgIHBpbm5lZDogYm9vbGVhbixcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG5cbiAgICBpZiAocGlubmVkKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBhbGxDb2x1bW5zLmZpbmQoYyA9PiBjLmtleSA9PT0gY29sdW1uKTtcbiAgICAgIGNvbnN0IHdhc0VuYWJsZWQgPSAhIXRhcmdldD8uZW5hYmxlZDtcbiAgICAgIGlmICghd2FzRW5hYmxlZCkge1xuICAgICAgICBjb25zdCBlbmFibGVkQ291bnQgPSBhbGxDb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLmVuYWJsZWQpLmxlbmd0aDtcbiAgICAgICAgaWYgKGVuYWJsZWRDb3VudCA+PSBSaXZUYWJsZS5Db2x1bW5zTWF4U2hvd24pIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7IC8vIHJlZnVzZSB0aGUgcGluIHNpbmNlIGl0IHdvdWxkIGV4Y2VlZCB0aGUgbWF4XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBvcmRlckludGVudGlvbmFsbHkoXG4gICAgICAgICAgYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgIHBpbm5lZDogYy5rZXkgPT09IGNvbHVtbiA/IHBpbm5lZCA6IGMucGlubmVkLFxuICAgICAgICAgICAgLy8gQ2hlY2svZW5hYmxlIGlmIGJlaW5nIHBpbm5lZFxuICAgICAgICAgICAgZW5hYmxlZDogYy5rZXkgPT09IGNvbHVtbiAmJiBwaW5uZWQgPyB0cnVlIDogYy5lbmFibGVkLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBjb2x1bW5OYW1lTWFwLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUNvbHVtbnNGcmVlemVTdGF0ZTxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbiAgICBjb2x1bW5OYW1lTWFwOiBSaXZUYWJsZS5Db2x1bW5OYW1lTWFwPEM+LFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZnJlZXplOiBib29sZWFuLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zLCBjb2x1bW5OYW1lTWFwKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgLi4uc3RhdGUuZGlzcGxheSxcbiAgICAgICAgY29sdW1uU2V0dGluZ3M6IGFsbENvbHVtbnMubWFwKChjLCBpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uYywgcGlubmVkOiBmcmVlemUgJiYgaSA8PSBpbmRleCB9O1xuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBtb3ZlQ29sdW1uVG88XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBjb2x1bW46IEMsXG4gICAgcG9zaXRpb246ICdzdGFydCcgfCAnZW5kJyxcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGFsbENvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5rZXkgPT09IGNvbHVtbik7XG4gICAgY29uc3QgbGFzdEluZGV4ID1cbiAgICAgIHBvc2l0aW9uID09ICdlbmQnID8gYWxsQ29sdW1ucy5maW5kSW5kZXgoYyA9PiAhYy5lbmFibGVkKSA6IDA7XG4gICAgY29uc3QgbmV3SW5kZXggPVxuICAgICAgcG9zaXRpb24gPT0gJ3N0YXJ0J1xuICAgICAgICA/IDBcbiAgICAgICAgOiBsYXN0SW5kZXggPT0gLTFcbiAgICAgICAgPyBhbGxDb2x1bW5zLmxlbmd0aCAtIDFcbiAgICAgICAgOiBsYXN0SW5kZXg7XG5cbiAgICBpZiAoXG4gICAgICAhYWxsQ29sdW1uc1twcmV2aW91c0luZGV4XS5lbmFibGVkICYmXG4gICAgICBhbGxDb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLmVuYWJsZWQpLmxlbmd0aCA+PSBSaXZUYWJsZS5Db2x1bW5zTWF4U2hvd25cbiAgICApXG4gICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICBjb25zdCBtb3ZlZFN0YXRlID0gY2hhbmdlQ29sdW1uT3JkZXIoXG4gICAgICBzdGF0ZSxcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb2x1bW5OYW1lTWFwLFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIG5ld0luZGV4LFxuICAgICk7XG4gICAgLy9NYWtlIHN1cmUgdGhlIGNvbHVtbiBpcyBlbmFibGVkXG4gICAgcmV0dXJuIGNoYW5nZUNvbHVtbkVuYWJsZWQoXG4gICAgICBtb3ZlZFN0YXRlLFxuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbHVtbk5hbWVNYXAsXG4gICAgICBjb2x1bW4sXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gY2hhbmdlQ29sdW1uT3JkZXI8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gICAgbmV3SW5kZXg6IG51bWJlcixcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG5cbiAgICAvLyBGaXJzdCwgcHV0IHRoZSBjb2x1bW5zIGluIHRoZSBkZXNpcmVkIG9yZGVyLlxuICAgIGNvbnN0IGl0ZW0gPSBhbGxDb2x1bW5zW3ByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IHdpdGhvdXRJdGVtID0gYWxsQ29sdW1ucy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IHByZXZpb3VzSW5kZXgpO1xuICAgIGNvbnN0IHJlb3JkZXJlZCA9IFtcbiAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKDAsIG5ld0luZGV4KSxcbiAgICAgIGl0ZW0sXG4gICAgICAuLi53aXRob3V0SXRlbS5zbGljZShuZXdJbmRleCksXG4gICAgXTtcblxuICAgIC8vIFRoZW4sIHdlIG1heSBuZWVkIHRvIGZpeCB0aGUgcGlucyAoYWxsIHBpbm5lZCBjb2x1bW5zIGFwcGVhciBhdCB0aGVcbiAgICAvLyBiZWdpbm5pbmcgb2YgdGhlIGNvbHVtbnMgYXJyYXkpIHNpbmNlIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gZHJhZ1xuICAgIC8vIGFuZCBkcm9wIGNvbHVtbnMgdG8gYW5kIGZyb20gdGhlIHBpbm5lZCBhcmVhLiBJZiB0aGUgdXNlciBkcmFncyBhXG4gICAgLy8gY29sdW1uIGFjcm9zcyB0aGF0IHRocmVzaG9sZCwgdXBkYXRlIGl0cyBwaW5uZWQgc3RhdHVzLlxuICAgIGNvbnN0IHVwZGF0ZWQgPSByZW9yZGVyZWQubWFwKChzZXR0aW5ncywgaSwgYXJyKSA9PiB7XG4gICAgICBpZiAobmV3SW5kZXggPT09IGkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgICBwaW5uZWQ6IHNldHRpbmdzLnBpbm5lZFxuICAgICAgICAgICAgPyBhcnJbaSAtIDFdPy5waW5uZWQgPz8gdHJ1ZVxuICAgICAgICAgICAgOiBhcnJbaSArIDFdPy5waW5uZWQgPz8gZmFsc2UsXG4gICAgICAgICAgZW5hYmxlZDogc2V0dGluZ3MuZW5hYmxlZFxuICAgICAgICAgICAgPyBhcnJbaSAtIDFdPy5lbmFibGVkID8/IHRydWVcbiAgICAgICAgICAgIDogYXJyW2kgKyAxXT8uZW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSByZXR1cm4gc2V0dGluZ3M7XG4gICAgfSk7XG5cbiAgICBjb25zdCB3YXNEaXNhYmxlZCA9ICFpdGVtLmVuYWJsZWQ7XG4gICAgY29uc3QgYmVjYW1lRW5hYmxlZCA9IHVwZGF0ZWRbbmV3SW5kZXhdLmVuYWJsZWQ7XG4gICAgaWYgKHdhc0Rpc2FibGVkICYmIGJlY2FtZUVuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGVuYWJsZWRDb3VudCA9IGFsbENvbHVtbnMuZmlsdGVyKGMgPT4gYy5lbmFibGVkKS5sZW5ndGg7XG4gICAgICBpZiAoZW5hYmxlZENvdW50ID49IFJpdlRhYmxlLkNvbHVtbnNNYXhTaG93bikge1xuICAgICAgICAvLyBSZWZ1c2UgdGhlIG1vdmU7IGtlZXAgc3RhdGUgYXMtaXNcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgLi4uc3RhdGUuZGlzcGxheSxcbiAgICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVySW50ZW50aW9uYWxseSh1cGRhdGVkLCBjb2x1bW5OYW1lTWFwKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VDb2x1bW5FbmFibGVkPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICAgY29sdW1uOiBDLFxuICAgIGVuYWJsZWQ6IGJvb2xlYW4sXG4gICk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiB7XG4gICAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMsIGNvbHVtbk5hbWVNYXApO1xuICAgIGlmIChcbiAgICAgIGVuYWJsZWQgJiZcbiAgICAgIGFsbENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZW5hYmxlZCkubGVuZ3RoID49IFJpdlRhYmxlLkNvbHVtbnNNYXhTaG93blxuICAgICkge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgLi4uc3RhdGUuZGlzcGxheSxcbiAgICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVySW50ZW50aW9uYWxseShcbiAgICAgICAgICBhbGxDb2x1bW5zLm1hcChjID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgZW5hYmxlZDogYy5rZXkgPT09IGNvbHVtbiA/IGVuYWJsZWQgOiBjLmVuYWJsZWQsXG4gICAgICAgICAgICAvLyBVbnBpbiBpZiBiZWluZyB1bmNoZWNrZWRcbiAgICAgICAgICAgIHBpbm5lZDogYy5rZXkgPT09IGNvbHVtbiAmJiAhZW5hYmxlZCA/IGZhbHNlIDogYy5waW5uZWQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGNvbHVtbk5hbWVNYXAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZW5hYmxlQWxsQ29sdW1uczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbiAgICBjb2x1bW5OYW1lTWFwOiBSaXZUYWJsZS5Db2x1bW5OYW1lTWFwPEM+LFxuICAgIGVuYWJsZWQ6IGJvb2xlYW4sXG4gICk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiB7XG4gICAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMsIGNvbHVtbk5hbWVNYXApO1xuICAgIGlmIChlbmFibGVkICYmIGFsbENvbHVtbnMubGVuZ3RoID4gUml2VGFibGUuQ29sdW1uc01heFNob3duKSByZXR1cm4gc3RhdGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBvcmRlckludGVudGlvbmFsbHkoXG4gICAgICAgICAgYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgIGVuYWJsZWQ6IGVuYWJsZWQsXG4gICAgICAgICAgICAvLyBVbnBpbiBpZiBiZWluZyB1bmNoZWNrZWRcbiAgICAgICAgICAgIHBpbm5lZDogIWVuYWJsZWQgPyBmYWxzZSA6IGMucGlubmVkLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBjb2x1bW5OYW1lTWFwLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUNvbHVtbldpZHRoPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICAgY29sdW1uOiBDLFxuICAgIHByZWZlcnJlZFdpZHRoOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPlsncHJlZmVycmVkV2lkdGgnXSxcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZGlzcGxheToge1xuICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICBjb2x1bW5TZXR0aW5nczogYWxsQ29sdW1ucy5tYXAoYyA9PiAoe1xuICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgcHJlZmVycmVkV2lkdGg6IGMua2V5ID09PSBjb2x1bW4gPyBwcmVmZXJyZWRXaWR0aCA6IGMucHJlZmVycmVkV2lkdGgsXG4gICAgICAgIH0pKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZXNldFRvRGVmYXVsdENvbHVtbnM8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBkZWZhdWx0Q29sdW1uU3RhdGU6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10sXG4gICk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZGlzcGxheToge1xuICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICBjb2x1bW5TZXR0aW5nczogb3JkZXJJbnRlbnRpb25hbGx5KGRlZmF1bHRDb2x1bW5TdGF0ZSwgY29sdW1uTmFtZU1hcCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS90YWJsZS9zdGF0ZS1oZWxwZXJzL2NvbHVtbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxNQUFNLEtBQVcsa0JBQWtCLENBaWNsQztBQWpjRCxXQUFpQixrQkFBa0I7SUFDakMsU0FBZ0Isa0JBQWtCLENBQ2hDLFFBQWlDLEVBQ2pDLE9BQWdCO1FBRWhCLElBQUksT0FBTztZQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzNCLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxVQUFVO2dCQUNiLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxXQUFXO2dCQUNkLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sQ0FBQztTQUNsQjtJQUNILENBQUM7SUFqQmUscUNBQWtCLHFCQWlCakMsQ0FBQTtJQUVELFNBQWdCLGFBQWEsQ0FNM0IsS0FBcUMsRUFDckMsZ0JBQWlELEVBQ2pELGFBQXdDO1FBRXhDLDRFQUE0RTtRQUM1RSw0RUFBNEU7UUFDNUUsMkVBQTJFO1FBQzNFLDZFQUE2RTtRQUM3RSx5RUFBeUU7UUFDekUsdUVBQXVFO1FBQ3ZFLGtDQUFrQztRQUNsQyxNQUFNLDhCQUE4QixHQUFHLFVBQVUsQ0FDL0MsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcs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QUFDO0lBbEJlLHdDQUFxQix3QkFrQnBDLENBQUE7SUFFRCxTQUFnQix1QkFBdUIsQ0FJckMsT0FBbUQ7UUFFbkQsT0FBTyxJQUFJLEdBQUcsQ0FDWixDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9DLElBQUk7WUFDSjtnQkFDRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRO2dCQUM5QixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDL0IsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO2dCQUNqQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7Z0JBQzNCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtnQkFDM0IsYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhO2dCQUNyQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsbUJBQW1CO2dCQUNqRCxvQkFBb0IsRUFBRSxRQUFRLENBQUMsb0JBQW9CO2dCQUNuRCxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7YUFDbEM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUF2QmUsMENBQXVCLDBCQXVCdEMsQ0FBQTtBQUNILENBQUMsRUFqY2dCLGtCQUFrQixLQUFsQixrQkFBa0IsUUFpY2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlmZmVyZW5jZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZUNvbHVtbkhlbHBlcnMge1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uQWxpZ25tZW50KFxuICAgIGRhdGFUeXBlOiBSaXZUYWJsZS5Db2x1bW5EYXRhVHlwZSxcbiAgICBpc0ZpcnN0OiBib29sZWFuLFxuICApOiBSaXZUYWJsZS5Db2x1bW5BbGlnbm1lbnQge1xuICAgIGlmIChpc0ZpcnN0KSByZXR1cm4gJ2xlZnQnO1xuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgY2FzZSAnbG9uZ1RleHQnOlxuICAgICAgICByZXR1cm4gJ2xlZnQnO1xuICAgICAgY2FzZSAnYWR2YW5jZWQnOlxuICAgICAgY2FzZSAnaWNvbic6XG4gICAgICBjYXNlICdzaG9ydFRleHQnOlxuICAgICAgICByZXR1cm4gJ2NlbnRlcic7XG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ29sdW1uczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgc3VwcG9ydGVkQ29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbiAgICBjb2x1bW5OYW1lTWFwOiBSaXZUYWJsZS5Db2x1bW5OYW1lTWFwPEM+LFxuICApOiBSaXZUYWJsZS5Db2x1bW5TZXR0aW5nczxDPltdIHtcbiAgICAvLyBJZiB0aGUgdGFibGUgb2ZmZXJzIG1vcmUgY29sdW1ucyB0aGFuIHRoZSB1c2VyIGhhcyBjb25maWd1cmF0aW9uIHNldHRpbmdzXG4gICAgLy8gZm9yIChvciBpZiB0aGUgdXNlciBoYXMgbm8gY29uZmlndXJhdGlvbiBzZXR0aW5ncyB5ZXQpLCB3ZSdsbCBhcHBlbmQgdGhlbVxuICAgIC8vIHRvIHRoZSBlbmQgKHVubGVzcyB0aGV5IHNob3VsZCBiZSBwaW5uZWQgYnkgZGVmYXVsdCwgaW4gd2hpY2ggY2FzZSB3ZSdsbFxuICAgIC8vIGFwcGVuZCB0aGVtIGFmdGVyIHRoZSBvdGhlciBwaW5uZWQgY29sdW1ucykuIFRoaXMgZW5zdXJlcyB0aGF0IG5ldyBjb2x1bW5zXG4gICAgLy8gd2UgYWRkIHRvIGV4aXN0aW5nIHRhYmxlcyBvdmVyIHRpbWUgKDEpIGdldCBkaXNwbGF5ZWQgZXZlbiB0aG91Z2ggdGhleVxuICAgIC8vIGRvbid0IGFwcGVhciBpbiB0aGUgdXNlcidzIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgeWV0LCBhbmQgKDIpIGRvbid0XG4gICAgLy8gaW50ZXJydXB0IHRoZWlyIGV4aXN0aW5nIHNldHVwLlxuICAgIGNvbnN0IGNvbHVtbk5hbWVzV2l0aG91dFVzZXJTZXR0aW5ncyA9IGRpZmZlcmVuY2UoXG4gICAgICBbLi4uc3VwcG9ydGVkQ29sdW1ucy5rZXlzKCldLFxuICAgICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5tYXAoKHsga2V5IH0pID0+IGtleSksXG4gICAgKTtcblxuICAgIC8vIFRocm93IG91dCBzZXR0aW5ncyBmb3IgY29sdW1ucyBubyBsb25nZXIgb2ZmZXJlZCBieSB0aGUgdGFibGUuXG4gICAgY29uc3QgY29sdW1uc1dpdGhVc2VyU2V0dGluZ3M6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10gPVxuICAgICAgc3RhdGUuZGlzcGxheS5jb2x1bW5TZXR0aW5ncy5maWx0ZXIoKHsga2V5IH0pID0+XG4gICAgICAgIHN1cHBvcnRlZENvbHVtbnMuaGFzKGtleSksXG4gICAgICApO1xuXG4gICAgY29uc3QgY29sdW1uc1dpdGhvdXRVc2VyU2V0dGluZ3M6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10gPSBbXG4gICAgICAuLi5jb2x1bW5OYW1lc1dpdGhvdXRVc2VyU2V0dGluZ3MsXG4gICAgXS5tYXAoKGtleTogQykgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwcmVmZXJyZWRXaWR0aDogJ2F1dG8nLFxuICAgICAgcGlubmVkOiAhIXN1cHBvcnRlZENvbHVtbnMuZ2V0KGtleSk/LmRlZmF1bHRQaW5uZWQsXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIG9yZGVySW50ZW50aW9uYWxseShcbiAgICAgIFsuLi5jb2x1bW5zV2l0aFVzZXJTZXR0aW5ncywgLi4uY29sdW1uc1dpdGhvdXRVc2VyU2V0dGluZ3NdLFxuICAgICAgY29sdW1uTmFtZU1hcCxcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gb3JkZXJJbnRlbnRpb25hbGx5PEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4+KFxuICAgIGNvbHVtbnM6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+W10sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgKTogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmNvbHVtbnMuZmlsdGVyKHYgPT4gdi5waW5uZWQpLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIodiA9PiB2LmVuYWJsZWQgJiYgIXYucGlubmVkKSxcbiAgICAgIC4uLmNvbHVtbnNcbiAgICAgICAgLmZpbHRlcih2ID0+ICF2LmVuYWJsZWQgJiYgIXYucGlubmVkKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIGNvbnN0IGFOYW1lID0gY29sdW1uTmFtZU1hcC5nZXQoYS5rZXkpID8/IGEua2V5O1xuICAgICAgICAgIGNvbnN0IGJOYW1lID0gY29sdW1uTmFtZU1hcC5nZXQoYi5rZXkpID8/IGIua2V5O1xuICAgICAgICAgIHJldHVybiBhTmFtZS5sb2NhbGVDb21wYXJlKGJOYW1lKTtcbiAgICAgICAgfSksXG4gICAgXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFsaWdubWVudChcbiAgICBtZXRhZGF0YTogUml2VGFibGUuQ29sdW1uTWV0YWRhdGEsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW4sXG4gICk6IFJpdlRhYmxlLkNvbHVtbkFsaWdubWVudCB7XG4gICAgcmV0dXJuIGdldENvbHVtbkFsaWdubWVudChcbiAgICAgIG1ldGFkYXRhLmRhdGFUeXBlLFxuICAgICAgaW5kZXggPT09IDAgJiYgIWFsbG93U2VsZWN0aW9uLFxuICAgICk7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbHVtbnM8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIHN1cHBvcnRlZENvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBhbGxvd1NlbGVjdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdIHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgc3VwcG9ydGVkQ29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG4gICAgcmV0dXJuIGFsbENvbHVtbnNcbiAgICAgIC5maWx0ZXIoKHsgZW5hYmxlZCB9KSA9PiBlbmFibGVkKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKFxuICAgICAgICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgICAgICAgc2V0dGluZ3M6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+LFxuICAgICAgICAgIGk6IG51bWJlcixcbiAgICAgICAgKTogUml2VGFibGUuRnVsbENvbHVtbjxDPltdID0+IHtcbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IHN1cHBvcnRlZENvbHVtbnMuZ2V0KHNldHRpbmdzLmtleSkhO1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPVxuICAgICAgICAgICAgc2V0dGluZ3MucHJlZmVycmVkV2lkdGggPT09ICdhdXRvJ1xuICAgICAgICAgICAgICA/IG1ldGFkYXRhLm1pbldpZHRoXG4gICAgICAgICAgICAgIDogTWF0aC5tYXgobWV0YWRhdGEubWluV2lkdGgsIHNldHRpbmdzLnByZWZlcnJlZFdpZHRoKTtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbHVtbjogUml2VGFibGUuRnVsbENvbHVtbjxDPiB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICBmdWxsQ29sdW1uc1tpIC0gMV07XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmZ1bGxDb2x1bW5zLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgLi4ubWV0YWRhdGEsXG4gICAgICAgICAgICAgIHdpZHRoOiByZXNvbHZlZFdpZHRoLFxuICAgICAgICAgICAgICBsZWZ0OiBzZXR0aW5ncy5waW5uZWRcbiAgICAgICAgICAgICAgICA/IHByZXZpb3VzQ29sdW1uXG4gICAgICAgICAgICAgICAgICA/IChwcmV2aW91c0NvbHVtbi5sZWZ0IHx8IDApICsgcHJldmlvdXNDb2x1bW4ud2lkdGhcbiAgICAgICAgICAgICAgICAgIDogISFhbGxvd1NlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgPyA0MFxuICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGdldEFsaWdubWVudChtZXRhZGF0YSwgaSwgISFhbGxvd1NlbGVjdGlvbiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICAgIFtdLFxuICAgICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VDb2x1bW5QaW48XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBjb2x1bW46IEMsXG4gICAgcGlubmVkOiBib29sZWFuLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zLCBjb2x1bW5OYW1lTWFwKTtcblxuICAgIGlmIChwaW5uZWQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGFsbENvbHVtbnMuZmluZChjID0+IGMua2V5ID09PSBjb2x1bW4pO1xuICAgICAgY29uc3Qgd2FzRW5hYmxlZCA9ICEhdGFyZ2V0Py5lbmFibGVkO1xuICAgICAgaWYgKCF3YXNFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRDb3VudCA9IGFsbENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZW5hYmxlZCkubGVuZ3RoO1xuICAgICAgICBpZiAoZW5hYmxlZENvdW50ID49IFJpdlRhYmxlLkNvbHVtbnNNYXhTaG93bikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTsgLy8gcmVmdXNlIHRoZSBwaW4gc2luY2UgaXQgd291bGQgZXhjZWVkIHRoZSBtYXhcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgLi4uc3RhdGUuZGlzcGxheSxcbiAgICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVySW50ZW50aW9uYWxseShcbiAgICAgICAgICBhbGxDb2x1bW5zLm1hcChjID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgcGlubmVkOiBjLmtleSA9PT0gY29sdW1uID8gcGlubmVkIDogYy5waW5uZWQsXG4gICAgICAgICAgICAvLyBDaGVjay9lbmFibGUgaWYgYmVpbmcgcGlubmVkXG4gICAgICAgICAgICBlbmFibGVkOiBjLmtleSA9PT0gY29sdW1uICYmIHBpbm5lZCA/IHRydWUgOiBjLmVuYWJsZWQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGNvbHVtbk5hbWVNYXAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gY2hhbmdlQ29sdW1uc0ZyZWV6ZVN0YXRlPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBmcmVlemU6IGJvb2xlYW4sXG4gICk6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiB7XG4gICAgY29uc3QgYWxsQ29sdW1ucyA9IGdldEFsbENvbHVtbnMoc3RhdGUsIGNvbHVtbnMsIGNvbHVtbk5hbWVNYXApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZGlzcGxheToge1xuICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICBjb2x1bW5TZXR0aW5nczogYWxsQ29sdW1ucy5tYXAoKGMsIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4geyAuLi5jLCBwaW5uZWQ6IGZyZWV6ZSAmJiBpIDw9IGluZGV4IH07XG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIG1vdmVDb2x1bW5UbzxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbiAgICBjb2x1bW5OYW1lTWFwOiBSaXZUYWJsZS5Db2x1bW5OYW1lTWFwPEM+LFxuICAgIGNvbHVtbjogQyxcbiAgICBwb3NpdGlvbjogJ3N0YXJ0JyB8ICdlbmQnLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zLCBjb2x1bW5OYW1lTWFwKTtcbiAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gYWxsQ29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLmtleSA9PT0gY29sdW1uKTtcbiAgICBjb25zdCBsYXN0SW5kZXggPVxuICAgICAgcG9zaXRpb24gPT0gJ2VuZCcgPyBhbGxDb2x1bW5zLmZpbmRJbmRleChjID0+ICFjLmVuYWJsZWQpIDogMDtcbiAgICBjb25zdCBuZXdJbmRleCA9XG4gICAgICBwb3NpdGlvbiA9PSAnc3RhcnQnXG4gICAgICAgID8gMFxuICAgICAgICA6IGxhc3RJbmRleCA9PSAtMVxuICAgICAgICA/IGFsbENvbHVtbnMubGVuZ3RoIC0gMVxuICAgICAgICA6IGxhc3RJbmRleDtcblxuICAgIGlmIChcbiAgICAgICFhbGxDb2x1bW5zW3ByZXZpb3VzSW5kZXhdLmVuYWJsZWQgJiZcbiAgICAgIGFsbENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZW5hYmxlZCkubGVuZ3RoID49IFJpdlRhYmxlLkNvbHVtbnNNYXhTaG93blxuICAgIClcbiAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgIGNvbnN0IG1vdmVkU3RhdGUgPSBjaGFuZ2VDb2x1bW5PcmRlcihcbiAgICAgIHN0YXRlLFxuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbHVtbk5hbWVNYXAsXG4gICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgbmV3SW5kZXgsXG4gICAgKTtcbiAgICAvL01ha2Ugc3VyZSB0aGUgY29sdW1uIGlzIGVuYWJsZWRcbiAgICByZXR1cm4gY2hhbmdlQ29sdW1uRW5hYmxlZChcbiAgICAgIG1vdmVkU3RhdGUsXG4gICAgICBjb2x1bW5zLFxuICAgICAgY29sdW1uTmFtZU1hcCxcbiAgICAgIGNvbHVtbixcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VDb2x1bW5PcmRlcjxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbiAgICBjb2x1bW5OYW1lTWFwOiBSaXZUYWJsZS5Db2x1bW5OYW1lTWFwPEM+LFxuICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcixcbiAgICBuZXdJbmRleDogbnVtYmVyLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zLCBjb2x1bW5OYW1lTWFwKTtcblxuICAgIC8vIEZpcnN0LCBwdXQgdGhlIGNvbHVtbnMgaW4gdGhlIGRlc2lyZWQgb3JkZXIuXG4gICAgY29uc3QgaXRlbSA9IGFsbENvbHVtbnNbcHJldmlvdXNJbmRleF07XG4gICAgY29uc3Qgd2l0aG91dEl0ZW0gPSBhbGxDb2x1bW5zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gcHJldmlvdXNJbmRleCk7XG4gICAgY29uc3QgcmVvcmRlcmVkID0gW1xuICAgICAgLi4ud2l0aG91dEl0ZW0uc2xpY2UoMCwgbmV3SW5kZXgpLFxuICAgICAgaXRlbSxcbiAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKG5ld0luZGV4KSxcbiAgICBdO1xuXG4gICAgLy8gVGhlbiwgd2UgbWF5IG5lZWQgdG8gZml4IHRoZSBwaW5zIChhbGwgcGlubmVkIGNvbHVtbnMgYXBwZWFyIGF0IHRoZVxuICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgY29sdW1ucyBhcnJheSkgc2luY2UgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBkcmFnXG4gICAgLy8gYW5kIGRyb3AgY29sdW1ucyB0byBhbmQgZnJvbSB0aGUgcGlubmVkIGFyZWEuIElmIHRoZSB1c2VyIGRyYWdzIGFcbiAgICAvLyBjb2x1bW4gYWNyb3NzIHRoYXQgdGhyZXNob2xkLCB1cGRhdGUgaXRzIHBpbm5lZCBzdGF0dXMuXG4gICAgY29uc3QgdXBkYXRlZCA9IHJlb3JkZXJlZC5tYXAoKHNldHRpbmdzLCBpLCBhcnIpID0+IHtcbiAgICAgIGlmIChuZXdJbmRleCA9PT0gaSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICAgIHBpbm5lZDogc2V0dGluZ3MucGlubmVkXG4gICAgICAgICAgICA/IGFycltpIC0gMV0/LnBpbm5lZCA/PyB0cnVlXG4gICAgICAgICAgICA6IGFycltpICsgMV0/LnBpbm5lZCA/PyBmYWxzZSxcbiAgICAgICAgICBlbmFibGVkOiBzZXR0aW5ncy5lbmFibGVkXG4gICAgICAgICAgICA/IGFycltpIC0gMV0/LmVuYWJsZWQgPz8gdHJ1ZVxuICAgICAgICAgICAgOiBhcnJbaSArIDFdPy5lbmFibGVkID8/IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHJldHVybiBzZXR0aW5ncztcbiAgICB9KTtcblxuICAgIGNvbnN0IHdhc0Rpc2FibGVkID0gIWl0ZW0uZW5hYmxlZDtcbiAgICBjb25zdCBiZWNhbWVFbmFibGVkID0gdXBkYXRlZFtuZXdJbmRleF0uZW5hYmxlZDtcbiAgICBpZiAod2FzRGlzYWJsZWQgJiYgYmVjYW1lRW5hYmxlZCkge1xuICAgICAgY29uc3QgZW5hYmxlZENvdW50ID0gYWxsQ29sdW1ucy5maWx0ZXIoYyA9PiBjLmVuYWJsZWQpLmxlbmd0aDtcbiAgICAgIGlmIChlbmFibGVkQ291bnQgPj0gUml2VGFibGUuQ29sdW1uc01heFNob3duKSB7XG4gICAgICAgIC8vIFJlZnVzZSB0aGUgbW92ZTsga2VlcCBzdGF0ZSBhcy1pc1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZGlzcGxheToge1xuICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICBjb2x1bW5TZXR0aW5nczogb3JkZXJJbnRlbnRpb25hbGx5KHVwZGF0ZWQsIGNvbHVtbk5hbWVNYXApLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUNvbHVtbkVuYWJsZWQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBjb2x1bW46IEMsXG4gICAgZW5hYmxlZDogYm9vbGVhbixcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG4gICAgaWYgKFxuICAgICAgZW5hYmxlZCAmJlxuICAgICAgYWxsQ29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5lbmFibGVkKS5sZW5ndGggPj0gUml2VGFibGUuQ29sdW1uc01heFNob3duXG4gICAgKSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZGlzcGxheToge1xuICAgICAgICAuLi5zdGF0ZS5kaXNwbGF5LFxuICAgICAgICBjb2x1bW5TZXR0aW5nczogb3JkZXJJbnRlbnRpb25hbGx5KFxuICAgICAgICAgIGFsbENvbHVtbnMubWFwKGMgPT4gKHtcbiAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICBlbmFibGVkOiBjLmtleSA9PT0gY29sdW1uID8gZW5hYmxlZCA6IGMuZW5hYmxlZCxcbiAgICAgICAgICAgIC8vIFVucGluIGlmIGJlaW5nIHVuY2hlY2tlZFxuICAgICAgICAgICAgcGlubmVkOiBjLmtleSA9PT0gY29sdW1uICYmICFlbmFibGVkID8gZmFsc2UgOiBjLnBpbm5lZCxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgY29sdW1uTmFtZU1hcCxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBlbmFibGVBbGxDb2x1bW5zPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICBjb2x1bW5zOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+LFxuICAgIGNvbHVtbk5hbWVNYXA6IFJpdlRhYmxlLkNvbHVtbk5hbWVNYXA8Qz4sXG4gICAgZW5hYmxlZDogYm9vbGVhbixcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICBjb25zdCBhbGxDb2x1bW5zID0gZ2V0QWxsQ29sdW1ucyhzdGF0ZSwgY29sdW1ucywgY29sdW1uTmFtZU1hcCk7XG4gICAgaWYgKGVuYWJsZWQgJiYgYWxsQ29sdW1ucy5sZW5ndGggPiBSaXZUYWJsZS5Db2x1bW5zTWF4U2hvd24pIHJldHVybiBzdGF0ZTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgLi4uc3RhdGUuZGlzcGxheSxcbiAgICAgICAgY29sdW1uU2V0dGluZ3M6IG9yZGVySW50ZW50aW9uYWxseShcbiAgICAgICAgICBhbGxDb2x1bW5zLm1hcChjID0+ICh7XG4gICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgZW5hYmxlZDogZW5hYmxlZCxcbiAgICAgICAgICAgIC8vIFVucGluIGlmIGJlaW5nIHVuY2hlY2tlZFxuICAgICAgICAgICAgcGlubmVkOiAhZW5hYmxlZCA/IGZhbHNlIDogYy5waW5uZWQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICAgIGNvbHVtbk5hbWVNYXAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gY2hhbmdlQ29sdW1uV2lkdGg8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGNvbHVtbnM6IE1hcDxDLCBSaXZUYWJsZS5Db2x1bW5NZXRhZGF0YT4sXG4gICAgY29sdW1uTmFtZU1hcDogUml2VGFibGUuQ29sdW1uTmFtZU1hcDxDPixcbiAgICBjb2x1bW46IEMsXG4gICAgcHJlZmVycmVkV2lkdGg6IFJpdlRhYmxlLkNvbHVtblNldHRpbmdzPEM+WydwcmVmZXJyZWRXaWR0aCddLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBnZXRBbGxDb2x1bW5zKHN0YXRlLCBjb2x1bW5zLCBjb2x1bW5OYW1lTWFwKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBhbGxDb2x1bW5zLm1hcChjID0+ICh7XG4gICAgICAgICAgLi4uYyxcbiAgICAgICAgICBwcmVmZXJyZWRXaWR0aDogYy5rZXkgPT09IGNvbHVtbiA/IHByZWZlcnJlZFdpZHRoIDogYy5wcmVmZXJyZWRXaWR0aCxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlc2V0VG9EZWZhdWx0Q29sdW1uczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkNvbHVtbk1ldGFkYXRhPixcbiAgICBjb2x1bW5OYW1lTWFwOiBSaXZUYWJsZS5Db2x1bW5OYW1lTWFwPEM+LFxuICAgIGRlZmF1bHRDb2x1bW5TdGF0ZTogUml2VGFibGUuQ29sdW1uU2V0dGluZ3M8Qz5bXSxcbiAgKTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBkaXNwbGF5OiB7XG4gICAgICAgIC4uLnN0YXRlLmRpc3BsYXksXG4gICAgICAgIGNvbHVtblNldHRpbmdzOiBvcmRlckludGVudGlvbmFsbHkoZGVmYXVsdENvbHVtblN0YXRlLCBjb2x1bW5OYW1lTWFwKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2x1bW5NZXRhZGF0YU1hcDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gID4oXG4gICAgY29sdW1uczogTWFwPEMsIFJpdlRhYmxlLkluTWVtb3J5Q29sdW1uTWV0YWRhdGE8Uj4+LFxuICApOiBNYXA8QywgUml2VGFibGUuQ29sdW1uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIFsuLi5jb2x1bW5zLmVudHJpZXMoKV0ubWFwKChbbmFtZSwgbWV0YWRhdGFdKSA9PiBbXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICBvcmRlcmFibGU6ICEhbWV0YWRhdGEub3JkZXJLZXksXG4gICAgICAgICAgZmlsdGVyYWJsZTogbWV0YWRhdGEuZmlsdGVyYWJsZSxcbiAgICAgICAgICBzZWFyY2hhYmxlOiBtZXRhZGF0YS5zZWFyY2hhYmxlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhZGF0YS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBtaW5XaWR0aDogbWV0YWRhdGEubWluV2lkdGgsXG4gICAgICAgICAgZGF0YVR5cGU6IG1ldGFkYXRhLmRhdGFUeXBlLFxuICAgICAgICAgIGRlZmF1bHRQaW5uZWQ6IG1ldGFkYXRhLmRlZmF1bHRQaW5uZWQsXG4gICAgICAgICAgY2xpY2tQcmV2ZW50RGVmYXVsdDogbWV0YWRhdGEuY2xpY2tQcmV2ZW50RGVmYXVsdCxcbiAgICAgICAgICBjbGlja1N0b3BQcm9wYWdhdGlvbjogbWV0YWRhdGEuY2xpY2tTdG9wUHJvcGFnYXRpb24sXG4gICAgICAgICAgZGlzcGxheU5hbWU6IG1ldGFkYXRhLmRpc3BsYXlOYW1lLFxuICAgICAgICB9LFxuICAgICAgXSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -28,9 +28,11 @@ export var TableDisplayHelpers;
28
28
  // If the user hasn't provided the row span configuration, default to no spanning
29
29
  if (!getRowSpanForCell)
30
30
  return null;
31
- // Row spanning is not supported on grouped tables.
32
- if (TableResultHelpers.isGroupResult(result))
31
+ // Row spanning is not supported on grouped tables or nested tables.
32
+ if (TableResultHelpers.isGroupResult(result) ||
33
+ TableResultHelpers.isNestedResult(result)) {
33
34
  return null;
35
+ }
34
36
  // Memoize the user's configuration for the current page.
35
37
  return new Map(fullColumns.map(column => [
36
38
  column.key,
@@ -45,4 +47,4 @@ export var TableDisplayHelpers;
45
47
  }
46
48
  TableDisplayHelpers.memoizedCellRowSpan = memoizedCellRowSpan;
47
49
  })(TableDisplayHelpers || (TableDisplayHelpers = {}));
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9kaXNwbGF5LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxNQUFNLEtBQVcsbUJBQW1CLENBMkRuQztBQTNERCxXQUFpQixtQkFBbUI7SUFDbEMsU0FBZ0IsbUJBQW1CLENBS2pDLEtBQXFDLEVBQUUsTUFBYztRQUNyRCxJQUNFLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDOUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7WUFFekMsT0FBTyxJQUFJLENBQUM7UUFDZCxNQUFNLHdCQUF3QixHQUM1QixrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSx3QkFBd0I7WUFDaEQsT0FBTyxNQUFNLE1BQU0scUNBQXFDLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QjtZQUNqRCxPQUFPLE1BQU0sTUFBTSxvRUFBb0UsQ0FBQztRQUMxRixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTztZQUFFLE9BQU8sTUFBTSxNQUFNLDhCQUE4QixDQUFDO1FBQzNFLE9BQU8sTUFBTSxNQUFNLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBckJlLHVDQUFtQixzQkFxQmxDLENBQUE7SUFFRCxTQUFnQixtQkFBbUIsQ0FNakMsQ0FBaUMsRUFDakMsV0FBcUMsRUFDckMsT0FBNkM7UUFFN0MsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV4Qix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7WUFDOUQsT0FBTyxJQUFJLENBQUM7UUFFZCxpRkFBaUY7UUFDakYsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXBDLG1EQUFtRDtRQUNuRCxJQUFJLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUUxRCx5REFBeUQ7UUFDekQsT0FBTyxJQUFJLEdBQUcsQ0FDWixXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLEdBQUc7WUFDVixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbEMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFBRSxPQUFPLENBQUMsQ0FBQzs7b0JBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDO1NBQ0gsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBbENlLHVDQUFtQixzQkFrQ2xDLENBQUE7QUFDSCxDQUFDLEVBM0RnQixtQkFBbUIsS0FBbkIsbUJBQW1CLFFBMkRuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvSW50ZWdlciB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IFRhYmxlUmVzdWx0SGVscGVycyB9IGZyb20gJy4vcmVzdWx0LWhlbHBlcnMnO1xuaW1wb3J0IHsgVGFibGVTZWFyY2hIZWxwZXJzIH0gZnJvbSAnLi9zZWFyY2gtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVEaXNwbGF5SGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRaZXJvU3RhdGVNZXNzYWdlPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiwgZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSAmJlxuICAgICAgICBzdGF0ZS5yZXN1bHQudG90YWxHcm91cENvdW50ID4gMCkgfHxcbiAgICAgICghVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSAmJlxuICAgICAgICBzdGF0ZS5yZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50ID4gMClcbiAgICApXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBhbGxTZWFyY2hDb2x1bW5zU2VsZWN0ZWQgPVxuICAgICAgVGFibGVTZWFyY2hIZWxwZXJzLmdldFNlYXJjaENvbHVtbnNTZWxlY3RlZFN0YXRlKHN0YXRlLCAnYWxsJyk7XG4gICAgaWYgKHN0YXRlLnF1ZXJ5LnNlYXJjaCAmJiBhbGxTZWFyY2hDb2x1bW5zU2VsZWN0ZWQpXG4gICAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQuYDtcbiAgICBpZiAoc3RhdGUucXVlcnkuc2VhcmNoICYmICFhbGxTZWFyY2hDb2x1bW5zU2VsZWN0ZWQpXG4gICAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQgaW4gdGhlIHNlbGVjdGVkIHNlYXJjaCBjb2x1bW5zLmA7XG4gICAgaWYgKHN0YXRlLnF1ZXJ5LmZpbHRlcnMpIHJldHVybiBgTm8gJHtlbnRpdHl9IG1hdGNoIHlvdXIgY3VycmVudCBmaWx0ZXJzLmA7XG4gICAgcmV0dXJuIGBObyAke2VudGl0eX0uYDtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBtZW1vaXplZENlbGxSb3dTcGFuPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgczogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgb3B0aW9ucz86IFJpdlRhYmxlLk1hbmFnZXJPcHRpb25zPFIsIEMsIEYsIEc+LFxuICApOiBNYXA8QywgbnVtYmVyW10+IHwgbnVsbCB7XG4gICAgY29uc3QgZ2V0Um93U3BhbkZvckNlbGwgPSBvcHRpb25zPy5nZXRSb3dTcGFuRm9yQ2VsbDtcbiAgICBjb25zdCByZXN1bHQgPSBzLnJlc3VsdDtcblxuICAgIC8vIElmIHRoZSBkYXRhc2V0IGV4Y2VlZHMgdGhlIGN1cnJlbnQgcGFnZSBzaXplLCBza2lwIHNwYW4gY2FsY3VsYXRpb25zLlxuICAgIGlmIChzLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVNpemUpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIElmIHRoZSB1c2VyIGhhc24ndCBwcm92aWRlZCB0aGUgcm93IHNwYW4gY29uZmlndXJhdGlvbiwgZGVmYXVsdCB0byBubyBzcGFubmluZ1xuICAgIGlmICghZ2V0Um93U3BhbkZvckNlbGwpIHJldHVybiBudWxsO1xuXG4gICAgLy8gUm93IHNwYW5uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gZ3JvdXBlZCB0YWJsZXMuXG4gICAgaWYgKFRhYmxlUmVzdWx0SGVscGVycy5pc0dyb3VwUmVzdWx0KHJlc3VsdCkpIHJldHVybiBudWxsO1xuXG4gICAgLy8gTWVtb2l6ZSB0aGUgdXNlcidzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICBmdWxsQ29sdW1ucy5tYXAoY29sdW1uID0+IFtcbiAgICAgICAgY29sdW1uLmtleSxcbiAgICAgICAgcmVzdWx0LmN1cnJlbnRQYWdlRGF0YS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSBnZXRSb3dTcGFuRm9yQ2VsbChpLCBjb2x1bW4ua2V5KTtcbiAgICAgICAgICBpZiAocmF3ID09PSAwKSByZXR1cm4gMDtcbiAgICAgICAgICBlbHNlIHJldHVybiBNYXRoLm1heCgxLCB0b0ludGVnZXIocmF3KSk7XG4gICAgICAgIH0pLFxuICAgICAgXSksXG4gICAgKTtcbiAgfVxufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9kaXNwbGF5LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxNQUFNLEtBQVcsbUJBQW1CLENBZ0VuQztBQWhFRCxXQUFpQixtQkFBbUI7SUFDbEMsU0FBZ0IsbUJBQW1CLENBS2pDLEtBQXFDLEVBQUUsTUFBYztRQUNyRCxJQUNFLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDOUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7WUFFekMsT0FBTyxJQUFJLENBQUM7UUFDZCxNQUFNLHdCQUF3QixHQUM1QixrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSx3QkFBd0I7WUFDaEQsT0FBTyxNQUFNLE1BQU0scUNBQXFDLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QjtZQUNqRCxPQUFPLE1BQU0sTUFBTSxvRUFBb0UsQ0FBQztRQUMxRixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTztZQUFFLE9BQU8sTUFBTSxNQUFNLDhCQUE4QixDQUFDO1FBQzNFLE9BQU8sTUFBTSxNQUFNLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBckJlLHVDQUFtQixzQkFxQmxDLENBQUE7SUFFRCxTQUFnQixtQkFBbUIsQ0FNakMsQ0FBaUMsRUFDakMsV0FBcUMsRUFDckMsT0FBNkM7UUFFN0MsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLEVBQUUsaUJBQWlCLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV4Qix3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7WUFDOUQsT0FBTyxJQUFJLENBQUM7UUFFZCxpRkFBaUY7UUFDakYsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXBDLG9FQUFvRTtRQUNwRSxJQUNFLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDeEMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUN6QztZQUNBLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCx5REFBeUQ7UUFDekQsT0FBTyxJQUFJLEdBQUcsQ0FDWixXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLEdBQUc7WUFDVixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbEMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFBRSxPQUFPLENBQUMsQ0FBQzs7b0JBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDO1NBQ0gsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBdkNlLHVDQUFtQixzQkF1Q2xDLENBQUE7QUFDSCxDQUFDLEVBaEVnQixtQkFBbUIsS0FBbkIsbUJBQW1CLFFBZ0VuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvSW50ZWdlciB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IFRhYmxlUmVzdWx0SGVscGVycyB9IGZyb20gJy4vcmVzdWx0LWhlbHBlcnMnO1xuaW1wb3J0IHsgVGFibGVTZWFyY2hIZWxwZXJzIH0gZnJvbSAnLi9zZWFyY2gtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVEaXNwbGF5SGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRaZXJvU3RhdGVNZXNzYWdlPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPiwgZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSAmJlxuICAgICAgICBzdGF0ZS5yZXN1bHQudG90YWxHcm91cENvdW50ID4gMCkgfHxcbiAgICAgICghVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSAmJlxuICAgICAgICBzdGF0ZS5yZXN1bHQudG90YWxNYXRjaGluZ1Jvd0NvdW50ID4gMClcbiAgICApXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBhbGxTZWFyY2hDb2x1bW5zU2VsZWN0ZWQgPVxuICAgICAgVGFibGVTZWFyY2hIZWxwZXJzLmdldFNlYXJjaENvbHVtbnNTZWxlY3RlZFN0YXRlKHN0YXRlLCAnYWxsJyk7XG4gICAgaWYgKHN0YXRlLnF1ZXJ5LnNlYXJjaCAmJiBhbGxTZWFyY2hDb2x1bW5zU2VsZWN0ZWQpXG4gICAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQuYDtcbiAgICBpZiAoc3RhdGUucXVlcnkuc2VhcmNoICYmICFhbGxTZWFyY2hDb2x1bW5zU2VsZWN0ZWQpXG4gICAgICByZXR1cm4gYE5vICR7ZW50aXR5fSBtYXRjaCB5b3VyIGN1cnJlbnQgc2VhcmNoIGtleXdvcmQgaW4gdGhlIHNlbGVjdGVkIHNlYXJjaCBjb2x1bW5zLmA7XG4gICAgaWYgKHN0YXRlLnF1ZXJ5LmZpbHRlcnMpIHJldHVybiBgTm8gJHtlbnRpdHl9IG1hdGNoIHlvdXIgY3VycmVudCBmaWx0ZXJzLmA7XG4gICAgcmV0dXJuIGBObyAke2VudGl0eX0uYDtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBtZW1vaXplZENlbGxSb3dTcGFuPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgczogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIGZ1bGxDb2x1bW5zOiBSaXZUYWJsZS5GdWxsQ29sdW1uPEM+W10sXG4gICAgb3B0aW9ucz86IFJpdlRhYmxlLk1hbmFnZXJPcHRpb25zPFIsIEMsIEYsIEc+LFxuICApOiBNYXA8QywgbnVtYmVyW10+IHwgbnVsbCB7XG4gICAgY29uc3QgZ2V0Um93U3BhbkZvckNlbGwgPSBvcHRpb25zPy5nZXRSb3dTcGFuRm9yQ2VsbDtcbiAgICBjb25zdCByZXN1bHQgPSBzLnJlc3VsdDtcblxuICAgIC8vIElmIHRoZSBkYXRhc2V0IGV4Y2VlZHMgdGhlIGN1cnJlbnQgcGFnZSBzaXplLCBza2lwIHNwYW4gY2FsY3VsYXRpb25zLlxuICAgIGlmIChzLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiBzLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVNpemUpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIElmIHRoZSB1c2VyIGhhc24ndCBwcm92aWRlZCB0aGUgcm93IHNwYW4gY29uZmlndXJhdGlvbiwgZGVmYXVsdCB0byBubyBzcGFubmluZ1xuICAgIGlmICghZ2V0Um93U3BhbkZvckNlbGwpIHJldHVybiBudWxsO1xuXG4gICAgLy8gUm93IHNwYW5uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gZ3JvdXBlZCB0YWJsZXMgb3IgbmVzdGVkIHRhYmxlcy5cbiAgICBpZiAoXG4gICAgICBUYWJsZVJlc3VsdEhlbHBlcnMuaXNHcm91cFJlc3VsdChyZXN1bHQpIHx8XG4gICAgICBUYWJsZVJlc3VsdEhlbHBlcnMuaXNOZXN0ZWRSZXN1bHQocmVzdWx0KVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gTWVtb2l6ZSB0aGUgdXNlcidzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4gICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICBmdWxsQ29sdW1ucy5tYXAoY29sdW1uID0+IFtcbiAgICAgICAgY29sdW1uLmtleSxcbiAgICAgICAgcmVzdWx0LmN1cnJlbnRQYWdlRGF0YS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSBnZXRSb3dTcGFuRm9yQ2VsbChpLCBjb2x1bW4ua2V5KTtcbiAgICAgICAgICBpZiAocmF3ID09PSAwKSByZXR1cm4gMDtcbiAgICAgICAgICBlbHNlIHJldHVybiBNYXRoLm1heCgxLCB0b0ludGVnZXIocmF3KSk7XG4gICAgICAgIH0pLFxuICAgICAgXSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,115 @@
1
+ import { TableCollapseHelpers } from './collapse-helpers';
2
+ export var TableNestingHelpers;
3
+ (function (TableNestingHelpers) {
4
+ function convertToFullNestedRow(currentRow, coreState, rowLinkFunction) {
5
+ const currentSubRows = currentRow.subRows
6
+ ? currentRow.subRows.map(subrow => convertToFullNestedRow(subrow, coreState, rowLinkFunction))
7
+ : [];
8
+ const currentRowLink = rowLinkFunction
9
+ ? rowLinkFunction(currentRow.data)
10
+ : null;
11
+ // We don't currently support selecting nested rows
12
+ const currentRowIsSelected = false;
13
+ const currentRowIsCollapsed = TableCollapseHelpers.isRowCollapsed(coreState, currentRow.data.id);
14
+ return {
15
+ id: currentRow.data.id,
16
+ data: currentRow.data,
17
+ rowLink: currentRowLink,
18
+ selected: currentRowIsSelected,
19
+ subRows: currentSubRows,
20
+ isCollapsed: currentRowIsCollapsed,
21
+ };
22
+ }
23
+ TableNestingHelpers.convertToFullNestedRow = convertToFullNestedRow;
24
+ function convertToFullNestedHeaderRow(currentRow, coreState, rowLinkFunction) {
25
+ const currentSubRows = currentRow.subRows
26
+ ? currentRow.subRows.map(subrow => convertToFullNestedRow(subrow, coreState, rowLinkFunction))
27
+ : [];
28
+ const currentHeaderIsCollapsed = TableCollapseHelpers.isHeaderCollapsed(coreState, currentRow.headerText);
29
+ return {
30
+ id: currentRow.headerText ?? '',
31
+ subRows: currentSubRows,
32
+ headerText: currentRow.headerText,
33
+ isCollapsed: currentHeaderIsCollapsed,
34
+ };
35
+ }
36
+ TableNestingHelpers.convertToFullNestedHeaderRow = convertToFullNestedHeaderRow;
37
+ function findNestedRowsWithHeadersToKeep(allRows, filteredRows) {
38
+ const filteredIds = new Set(filteredRows.map(row => row.id));
39
+ function recursiveFindRowsToKeep(currentNestedRow) {
40
+ // Keep all subrows if a parent row matches the filter
41
+ if (filteredIds.has(currentNestedRow.data.id)) {
42
+ return currentNestedRow;
43
+ }
44
+ if (!currentNestedRow.subRows) {
45
+ return null;
46
+ }
47
+ const subRowsToKeep = [];
48
+ for (const subRow of currentNestedRow.subRows) {
49
+ const rowToKeep = recursiveFindRowsToKeep(subRow);
50
+ if (rowToKeep) {
51
+ subRowsToKeep.push(rowToKeep);
52
+ }
53
+ }
54
+ if (subRowsToKeep.length == 0) {
55
+ return null;
56
+ }
57
+ return {
58
+ ...currentNestedRow,
59
+ subRows: subRowsToKeep,
60
+ };
61
+ }
62
+ const keptNestedRows = [];
63
+ for (const outerLevelHeader of allRows) {
64
+ if (!outerLevelHeader.subRows) {
65
+ continue;
66
+ }
67
+ const keptSubRows = [];
68
+ for (const nestedRow of outerLevelHeader.subRows) {
69
+ const rowToKeep = recursiveFindRowsToKeep(nestedRow);
70
+ if (rowToKeep) {
71
+ keptSubRows.push(rowToKeep);
72
+ }
73
+ }
74
+ if (keptSubRows.length == 0) {
75
+ continue;
76
+ }
77
+ keptNestedRows.push({
78
+ ...outerLevelHeader,
79
+ subRows: keptSubRows,
80
+ });
81
+ }
82
+ return keptNestedRows;
83
+ }
84
+ TableNestingHelpers.findNestedRowsWithHeadersToKeep = findNestedRowsWithHeadersToKeep;
85
+ // Count how many rows we have at the bottom level of nesting.
86
+ function countBottomLevelNestedRows(allNestedRows) {
87
+ let bottomLevelRowCount = 0;
88
+ function recursiveCountRows(currentNestedRow) {
89
+ if (!currentNestedRow.subRows || currentNestedRow.subRows.length == 0) {
90
+ bottomLevelRowCount++;
91
+ }
92
+ else {
93
+ for (const subRow of currentNestedRow.subRows) {
94
+ recursiveCountRows(subRow);
95
+ }
96
+ }
97
+ }
98
+ for (const nestedRow of allNestedRows) {
99
+ recursiveCountRows(nestedRow);
100
+ }
101
+ return bottomLevelRowCount;
102
+ }
103
+ TableNestingHelpers.countBottomLevelNestedRows = countBottomLevelNestedRows;
104
+ // Count how many rows we have at the bottom level of nesting.
105
+ function countBottomLevelNestedHeaderRows(allHeaders) {
106
+ let bottomLevelRowCount = 0;
107
+ for (const headerRow of allHeaders) {
108
+ const currentHeaderBottomRowCount = countBottomLevelNestedRows(headerRow.subRows);
109
+ bottomLevelRowCount += currentHeaderBottomRowCount;
110
+ }
111
+ return bottomLevelRowCount;
112
+ }
113
+ TableNestingHelpers.countBottomLevelNestedHeaderRows = countBottomLevelNestedHeaderRows;
114
+ })(TableNestingHelpers || (TableNestingHelpers = {}));
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGluZy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9uZXN0aW5nLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsTUFBTSxLQUFXLG1CQUFtQixDQTRLbkM7QUE1S0QsV0FBaUIsbUJBQW1CO0lBQ2xDLFNBQWdCLHNCQUFzQixDQU1wQyxVQUFpQyxFQUNqQyxTQUF5QyxFQUN6QyxlQUF5RDtRQUV6RCxNQUFNLGNBQWMsR0FBZ0MsVUFBVSxDQUFDLE9BQU87WUFDcEUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQzlCLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQzNEO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLE1BQU0sY0FBYyxHQUE0QixlQUFlO1lBQzdELENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVQsbURBQW1EO1FBQ25ELE1BQU0sb0JBQW9CLEdBQVksS0FBSyxDQUFDO1FBRTVDLE1BQU0scUJBQXFCLEdBQVksb0JBQW9CLENBQUMsY0FBYyxDQUN4RSxTQUFTLEVBQ1QsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25CLENBQUM7UUFFRixPQUFPO1lBQ0wsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDckIsT0FBTyxFQUFFLGNBQWM7WUFDdkIsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixPQUFPLEVBQUUsY0FBYztZQUN2QixXQUFXLEVBQUUscUJBQXFCO1NBQ25DLENBQUM7SUFDSixDQUFDO0lBcENlLDBDQUFzQix5QkFvQ3JDLENBQUE7SUFFRCxTQUFnQiw0QkFBNEIsQ0FNMUMsVUFBdUMsRUFDdkMsU0FBeUMsRUFDekMsZUFBeUQ7UUFFekQsTUFBTSxjQUFjLEdBQWdDLFVBQVUsQ0FBQyxPQUFPO1lBQ3BFLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUM5QixzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUMzRDtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxNQUFNLHdCQUF3QixHQUM1QixvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNFLE9BQU87WUFDTCxFQUFFLEVBQUUsVUFBVSxDQUFDLFVBQVUsSUFBSSxFQUFFO1lBQy9CLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUNqQyxXQUFXLEVBQUUsd0JBQXdCO1NBQ3RDLENBQUM7SUFDSixDQUFDO0lBekJlLGdEQUE0QiwrQkF5QjNDLENBQUE7SUFFRCxTQUFnQiwrQkFBK0IsQ0FDN0MsT0FBc0MsRUFDdEMsWUFBaUI7UUFFakIsTUFBTSxXQUFXLEdBQXlCLElBQUksR0FBRyxDQUMvQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUNoQyxDQUFDO1FBRUYsU0FBUyx1QkFBdUIsQ0FDOUIsZ0JBQXVDO1lBRXZDLHNEQUFzRDtZQUN0RCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxPQUFPLGdCQUFnQixDQUFDO2FBQ3pCO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE1BQU0sYUFBYSxHQUE0QixFQUFFLENBQUM7WUFDbEQsS0FBSyxNQUFNLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzdDLE1BQU0sU0FBUyxHQUNiLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLFNBQVMsRUFBRTtvQkFDYixhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQjthQUNGO1lBRUQsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDN0IsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUVELE9BQU87Z0JBQ0wsR0FBRyxnQkFBZ0I7Z0JBQ25CLE9BQU8sRUFBRSxhQUFhO2FBQ3ZCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQWtDLEVBQUUsQ0FBQztRQUV6RCxLQUFLLE1BQU0sZ0JBQWdCLElBQUksT0FBTyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzdCLFNBQVM7YUFDVjtZQUVELE1BQU0sV0FBVyxHQUE0QixFQUFFLENBQUM7WUFDaEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hELE1BQU0sU0FBUyxHQUNiLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLFNBQVMsRUFBRTtvQkFDYixXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUM3QjthQUNGO1lBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDM0IsU0FBUzthQUNWO1lBRUQsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDbEIsR0FBRyxnQkFBZ0I7Z0JBQ25CLE9BQU8sRUFBRSxXQUFXO2FBQ3JCLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQWxFZSxtREFBK0Isa0NBa0U5QyxDQUFBO0lBRUQsOERBQThEO0lBQzlELFNBQWdCLDBCQUEwQixDQUN4QyxhQUFzQztRQUV0QyxJQUFJLG1CQUFtQixHQUFXLENBQUMsQ0FBQztRQUVwQyxTQUFTLGtCQUFrQixDQUFDLGdCQUF1QztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNyRSxtQkFBbUIsRUFBRSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLEtBQUssTUFBTSxNQUFNLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFO29CQUM3QyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDNUI7YUFDRjtRQUNILENBQUM7UUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsRUFBRTtZQUNyQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMvQjtRQUVELE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQXBCZSw4Q0FBMEIsNkJBb0J6QyxDQUFBO0lBRUQsOERBQThEO0lBQzlELFNBQWdCLGdDQUFnQyxDQUM5QyxVQUF5QztRQUV6QyxJQUFJLG1CQUFtQixHQUFXLENBQUMsQ0FBQztRQUVwQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxNQUFNLDJCQUEyQixHQUFXLDBCQUEwQixDQUNwRSxTQUFTLENBQUMsT0FBTyxDQUNsQixDQUFDO1lBQ0YsbUJBQW1CLElBQUksMkJBQTJCLENBQUM7U0FDcEQ7UUFFRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFiZSxvREFBZ0MsbUNBYS9DLENBQUE7QUFDSCxDQUFDLEVBNUtnQixtQkFBbUIsS0FBbkIsbUJBQW1CLFFBNEtuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgVGFibGVDb2xsYXBzZUhlbHBlcnMgfSBmcm9tICcuL2NvbGxhcHNlLWhlbHBlcnMnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFRhYmxlTmVzdGluZ0hlbHBlcnMge1xuICBleHBvcnQgZnVuY3Rpb24gY29udmVydFRvRnVsbE5lc3RlZFJvdzxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwID0geyBrZXk6ICcnIH0sXG4gID4oXG4gICAgY3VycmVudFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+LFxuICAgIGNvcmVTdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+LFxuICAgIHJvd0xpbmtGdW5jdGlvbj86IChyb3c6IFIsIGdyb3VwPzogRykgPT4gUml2VGFibGUuUm93TGluayxcbiAgKTogUml2VGFibGUuRnVsbE5lc3RlZFJvdzxSPiB7XG4gICAgY29uc3QgY3VycmVudFN1YlJvd3M6IFJpdlRhYmxlLkZ1bGxOZXN0ZWRSb3c8Uj5bXSA9IGN1cnJlbnRSb3cuc3ViUm93c1xuICAgICAgPyBjdXJyZW50Um93LnN1YlJvd3MubWFwKHN1YnJvdyA9PlxuICAgICAgICAgIGNvbnZlcnRUb0Z1bGxOZXN0ZWRSb3coc3Vicm93LCBjb3JlU3RhdGUsIHJvd0xpbmtGdW5jdGlvbiksXG4gICAgICAgIClcbiAgICAgIDogW107XG5cbiAgICBjb25zdCBjdXJyZW50Um93TGluazogUml2VGFibGUuUm93TGluayB8IG51bGwgPSByb3dMaW5rRnVuY3Rpb25cbiAgICAgID8gcm93TGlua0Z1bmN0aW9uKGN1cnJlbnRSb3cuZGF0YSlcbiAgICAgIDogbnVsbDtcblxuICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IHNlbGVjdGluZyBuZXN0ZWQgcm93c1xuICAgIGNvbnN0IGN1cnJlbnRSb3dJc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdCBjdXJyZW50Um93SXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBUYWJsZUNvbGxhcHNlSGVscGVycy5pc1Jvd0NvbGxhcHNlZChcbiAgICAgIGNvcmVTdGF0ZSxcbiAgICAgIGN1cnJlbnRSb3cuZGF0YS5pZCxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjdXJyZW50Um93LmRhdGEuaWQsXG4gICAgICBkYXRhOiBjdXJyZW50Um93LmRhdGEsXG4gICAgICByb3dMaW5rOiBjdXJyZW50Um93TGluayxcbiAgICAgIHNlbGVjdGVkOiBjdXJyZW50Um93SXNTZWxlY3RlZCxcbiAgICAgIHN1YlJvd3M6IGN1cnJlbnRTdWJSb3dzLFxuICAgICAgaXNDb2xsYXBzZWQ6IGN1cnJlbnRSb3dJc0NvbGxhcHNlZCxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Z1bGxOZXN0ZWRIZWFkZXJSb3c8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCA9IHsga2V5OiAnJyB9LFxuICA+KFxuICAgIGN1cnJlbnRSb3c6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPixcbiAgICBjb3JlU3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICByb3dMaW5rRnVuY3Rpb24/OiAocm93OiBSLCBncm91cD86IEcpID0+IFJpdlRhYmxlLlJvd0xpbmssXG4gICk6IFJpdlRhYmxlLkZ1bGxOZXN0ZWRIZWFkZXJSb3c8Uj4ge1xuICAgIGNvbnN0IGN1cnJlbnRTdWJSb3dzOiBSaXZUYWJsZS5GdWxsTmVzdGVkUm93PFI+W10gPSBjdXJyZW50Um93LnN1YlJvd3NcbiAgICAgID8gY3VycmVudFJvdy5zdWJSb3dzLm1hcChzdWJyb3cgPT5cbiAgICAgICAgICBjb252ZXJ0VG9GdWxsTmVzdGVkUm93KHN1YnJvdywgY29yZVN0YXRlLCByb3dMaW5rRnVuY3Rpb24pLFxuICAgICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgY29uc3QgY3VycmVudEhlYWRlcklzQ29sbGFwc2VkOiBib29sZWFuID1cbiAgICAgIFRhYmxlQ29sbGFwc2VIZWxwZXJzLmlzSGVhZGVyQ29sbGFwc2VkKGNvcmVTdGF0ZSwgY3VycmVudFJvdy5oZWFkZXJUZXh0KTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogY3VycmVudFJvdy5oZWFkZXJUZXh0ID8/ICcnLFxuICAgICAgc3ViUm93czogY3VycmVudFN1YlJvd3MsXG4gICAgICBoZWFkZXJUZXh0OiBjdXJyZW50Um93LmhlYWRlclRleHQsXG4gICAgICBpc0NvbGxhcHNlZDogY3VycmVudEhlYWRlcklzQ29sbGFwc2VkLFxuICAgIH07XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZmluZE5lc3RlZFJvd3NXaXRoSGVhZGVyc1RvS2VlcDxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICBhbGxSb3dzOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSxcbiAgICBmaWx0ZXJlZFJvd3M6IFJbXSxcbiAgKTogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkSWRzOiBTZXQ8c3RyaW5nIHwgbnVtYmVyPiA9IG5ldyBTZXQoXG4gICAgICBmaWx0ZXJlZFJvd3MubWFwKHJvdyA9PiByb3cuaWQpLFxuICAgICk7XG5cbiAgICBmdW5jdGlvbiByZWN1cnNpdmVGaW5kUm93c1RvS2VlcChcbiAgICAgIGN1cnJlbnROZXN0ZWRSb3c6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPixcbiAgICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4gfCBudWxsIHtcbiAgICAgIC8vIEtlZXAgYWxsIHN1YnJvd3MgaWYgYSBwYXJlbnQgcm93IG1hdGNoZXMgdGhlIGZpbHRlclxuICAgICAgaWYgKGZpbHRlcmVkSWRzLmhhcyhjdXJyZW50TmVzdGVkUm93LmRhdGEuaWQpKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50TmVzdGVkUm93O1xuICAgICAgfVxuXG4gICAgICBpZiAoIWN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3ViUm93c1RvS2VlcDogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc3ViUm93IG9mIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cykge1xuICAgICAgICBjb25zdCByb3dUb0tlZXA6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwgPVxuICAgICAgICAgIHJlY3Vyc2l2ZUZpbmRSb3dzVG9LZWVwKHN1YlJvdyk7XG4gICAgICAgIGlmIChyb3dUb0tlZXApIHtcbiAgICAgICAgICBzdWJSb3dzVG9LZWVwLnB1c2gocm93VG9LZWVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3ViUm93c1RvS2VlcC5sZW5ndGggPT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgc3ViUm93czogc3ViUm93c1RvS2VlcCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qga2VwdE5lc3RlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG91dGVyTGV2ZWxIZWFkZXIgb2YgYWxsUm93cykge1xuICAgICAgaWYgKCFvdXRlckxldmVsSGVhZGVyLnN1YlJvd3MpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGtlcHRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBuZXN0ZWRSb3cgb2Ygb3V0ZXJMZXZlbEhlYWRlci5zdWJSb3dzKSB7XG4gICAgICAgIGNvbnN0IHJvd1RvS2VlcDogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCA9XG4gICAgICAgICAgcmVjdXJzaXZlRmluZFJvd3NUb0tlZXAobmVzdGVkUm93KTtcbiAgICAgICAgaWYgKHJvd1RvS2VlcCkge1xuICAgICAgICAgIGtlcHRTdWJSb3dzLnB1c2gocm93VG9LZWVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoa2VwdFN1YlJvd3MubGVuZ3RoID09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGtlcHROZXN0ZWRSb3dzLnB1c2goe1xuICAgICAgICAuLi5vdXRlckxldmVsSGVhZGVyLFxuICAgICAgICBzdWJSb3dzOiBrZXB0U3ViUm93cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBrZXB0TmVzdGVkUm93cztcbiAgfVxuXG4gIC8vIENvdW50IGhvdyBtYW55IHJvd3Mgd2UgaGF2ZSBhdCB0aGUgYm90dG9tIGxldmVsIG9mIG5lc3RpbmcuXG4gIGV4cG9ydCBmdW5jdGlvbiBjb3VudEJvdHRvbUxldmVsTmVzdGVkUm93czxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICBhbGxOZXN0ZWRSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgKTogbnVtYmVyIHtcbiAgICBsZXQgYm90dG9tTGV2ZWxSb3dDb3VudDogbnVtYmVyID0gMDtcblxuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUNvdW50Um93cyhjdXJyZW50TmVzdGVkUm93OiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4pIHtcbiAgICAgIGlmICghY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzIHx8IGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPT0gMCkge1xuICAgICAgICBib3R0b21MZXZlbFJvd0NvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IHN1YlJvdyBvZiBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpIHtcbiAgICAgICAgICByZWN1cnNpdmVDb3VudFJvd3Moc3ViUm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmVzdGVkUm93IG9mIGFsbE5lc3RlZFJvd3MpIHtcbiAgICAgIHJlY3Vyc2l2ZUNvdW50Um93cyhuZXN0ZWRSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBib3R0b21MZXZlbFJvd0NvdW50O1xuICB9XG5cbiAgLy8gQ291bnQgaG93IG1hbnkgcm93cyB3ZSBoYXZlIGF0IHRoZSBib3R0b20gbGV2ZWwgb2YgbmVzdGluZy5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNvdW50Qm90dG9tTGV2ZWxOZXN0ZWRIZWFkZXJSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICApOiBudW1iZXIge1xuICAgIGxldCBib3R0b21MZXZlbFJvd0NvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3QgY3VycmVudEhlYWRlckJvdHRvbVJvd0NvdW50OiBudW1iZXIgPSBjb3VudEJvdHRvbUxldmVsTmVzdGVkUm93cyhcbiAgICAgICAgaGVhZGVyUm93LnN1YlJvd3MsXG4gICAgICApO1xuICAgICAgYm90dG9tTGV2ZWxSb3dDb3VudCArPSBjdXJyZW50SGVhZGVyQm90dG9tUm93Q291bnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvdHRvbUxldmVsUm93Q291bnQ7XG4gIH1cbn1cbiJdfQ==
@@ -139,5 +139,26 @@ export var TableOrderHelpers;
139
139
  return sortedHeaderRows;
140
140
  }
141
141
  TableOrderHelpers.sortNestedRowsWithHeadersBasedOnSearchMatches = sortNestedRowsWithHeadersBasedOnSearchMatches;
142
+ /*
143
+ When a defaultSort is specified, seed the initial query.order so the
144
+ table header shows the sort indicator from the start.
145
+ */
146
+ function seedDefaultSortOption(options) {
147
+ if (options?.defaultSort && !options?.initialState?.query?.order) {
148
+ const order = options.defaultSort;
149
+ return {
150
+ ...options,
151
+ initialState: {
152
+ ...options.initialState,
153
+ query: {
154
+ ...options.initialState?.query,
155
+ order,
156
+ },
157
+ },
158
+ };
159
+ }
160
+ return options;
161
+ }
162
+ TableOrderHelpers.seedDefaultSortOption = seedDefaultSortOption;
142
163
  })(TableOrderHelpers || (TableOrderHelpers = {}));
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3RhYmxlL3N0YXRlLWhlbHBlcnMvb3JkZXItaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR2pDLE1BQU0sS0FBVyxpQkFBaUIsQ0FnTmpDO0FBaE5ELFdBQWlCLGlCQUFpQjtJQUNoQyxTQUFnQixjQUFjLENBQzVCLElBQVMsRUFDVCxHQUFZLEVBQ1osU0FBa0M7UUFFbEMsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQU5lLGdDQUFjLGlCQU03QixDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLElBQTZCLEVBQzdCLEdBQVksRUFDWixTQUFrQztRQUVsQyxPQUFPLE9BQU8sQ0FDWixJQUFJLEVBQ0osQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFWZSwwQ0FBd0IsMkJBVXZDLENBQUE7SUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsSUFBNkIsRUFDN0Isa0JBQWdEO1FBRWhELE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcs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T0FBTyxDQUFDLENBQUM7d0JBQzNELFVBQVUsQ0FBQyxJQUFJLENBQUM7NEJBQ2QsR0FBRyxnQkFBZ0I7NEJBQ25CLE9BQU8sRUFBRSxhQUFhO3lCQUN2QixDQUFDLENBQUM7cUJBQ0o7eUJBQU07d0JBQ0wsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3FCQUNuQztpQkFDRjtnQkFFRCxPQUFPLFVBQVUsQ0FBQzthQUNuQjtRQUNILENBQUM7UUFFRCxPQUFPLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFuQ2Usb0RBQWtDLHFDQW1DakQsQ0FBQTtJQUVELGlEQUFpRDtJQUNqRCxTQUFnQiw2Q0FBNkMsQ0FHM0QsVUFBeUMsRUFDekMsa0JBQWdEO1FBRWhELE1BQU0sZ0JBQWdCLEdBQWtDLEVBQUUsQ0FBQztRQUMzRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxNQUFNLGFBQWEsR0FDakIsa0NBQWtDLENBQ2hDLFNBQVMsQ0FBQyxPQUFPLEVBQ2pCLGtCQUFrQixDQUNuQixDQUFDO1lBQ0osZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUNwQixHQUFHLFNBQVM7Z0JBQ1osT0FBTyxFQUFFLGFBQWE7YUFDdkIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFwQmUsK0RBQTZDLGdEQW9CNUQsQ0FBQTtBQUNILENBQUMsRUFoTmdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUFnTmpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZU9yZGVySGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlckVtcHR5TGFzdDxSPihcbiAgICByb3dzOiBSW10sXG4gICAga2V5OiBrZXlvZiBSLFxuICAgIGRpcmVjdGlvbjogUml2VGFibGUuT3JkZXJEaXJlY3Rpb24sXG4gICk6IFJbXSB7XG4gICAgcmV0dXJuIG9yZGVyQnkocm93cywgW3JvdyA9PiByb3dba2V5XSA9PSBudWxsLCBrZXldLCBbJ2FzYycsIGRpcmVjdGlvbl0pO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIG9yZGVyTmVzdGVkUm93c0VtcHR5TGFzdDxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICByb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgICBrZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgcm93cyxcbiAgICAgIFtyb3cgPT4gcm93LmRhdGFba2V5XSA9PSBudWxsLCByb3cgPT4gcm93LmRhdGFba2V5XV0sXG4gICAgICBbJ2FzYycsIGRpcmVjdGlvbl0sXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KHJvd3MsIFtyb3cgPT4gaWRUb1NlYXJjaEluZGV4TWFwLmdldChyb3cuZGF0YS5pZCldLCBbJ2FzYyddKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uOiBDLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgIG9yZGVyOlxuICAgICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIFdlIG9ubHkgc29ydCB0aGUgbG93ZXN0IGxldmVsIHJvd3MgaWYgcm93cyBhcmUgbmVzdGVkLlxuXG4gICAgSW4gb3RoZXIgd29yZHMsIHdlIHNvcnQgd2l0aGluIGVhY2ggbmVzdGVkIGdyb3VwLCBidXQgZG9cbiAgICAgIE5PVCBzb3J0IGluIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBncm91cHMuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIHNvcnRLZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gb3JkZXJOZXN0ZWRSb3dzRW1wdHlMYXN0KFxuICAgICAgICAgIG5lc3RlZFJvd3MsXG4gICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgICAgICAgICBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzKGFsbFJvd3MpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgZGF0YSBpbnNpZGUgdGhlIGhlYWRlcnMsIG5vdCB0aGUgaGVhZGVycyB0aGVtc2VsdmVzXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzV2l0aEhlYWRlcnM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgc29ydEtleToga2V5b2YgUixcbiAgICBkaXJlY3Rpb246IFJpdlRhYmxlLk9yZGVyRGlyZWN0aW9uLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc29ydGVkSGVhZGVyUm93czogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHNvcnRMb3dMZXZlbE5lc3RlZFJvd3MoXG4gICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICBzb3J0S2V5LFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICApO1xuICAgICAgc29ydGVkSGVhZGVyUm93cy5wdXNoKHtcbiAgICAgICAgLi4uaGVhZGVyUm93LFxuICAgICAgICBzdWJSb3dzOiBzb3J0ZWRTdWJSb3dzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZEhlYWRlclJvd3M7XG4gIH1cblxuICAvLyBDcmVhdGUgbWFwIHRvIGhlbHAgdXMgc29ydCBvbiBGdXNlIHJlbGV2YW5jZSBvcmRlclxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSWRUb1NlYXJjaEluZGV4TWFwPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3NNYXRjaGluZ1NlYXJjaDogUltdLFxuICApOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+IHtcbiAgICBjb25zdCBpZFRvU2VhcmNoSW5kZXhNYXA6IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NNYXRjaGluZ1NlYXJjaC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm93TWF0Y2hpbmdJbmRleDogUiA9IHJvd3NNYXRjaGluZ1NlYXJjaFtpXTtcbiAgICAgIGlkVG9TZWFyY2hJbmRleE1hcC5zZXQocm93TWF0Y2hpbmdJbmRleC5pZCwgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkVG9TZWFyY2hJbmRleE1hcDtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzQmFzZWRPblNlYXJjaE1hdGNoZXM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgaWRUb1NlYXJjaEluZGV4TWFwOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+LFxuICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSB7XG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlU29ydFJvd3NCeVNlYXJjaE1hdGNoKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID1cbiAgICAgICAgICBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoKG5lc3RlZFJvd3MsIGlkVG9TZWFyY2hJbmRleE1hcCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9XG4gICAgICAgICAgICAgIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChhbGxSb3dzKTtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzV2l0aEhlYWRlcnNCYXNlZE9uU2VhcmNoTWF0Y2hlczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICA+KFxuICAgIGFsbEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10ge1xuICAgIGNvbnN0IHNvcnRlZEhlYWRlclJvd3M6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3Qgc29ydGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPVxuICAgICAgICBzb3J0TmVzdGVkUm93c0Jhc2VkT25TZWFyY2hNYXRjaGVzKFxuICAgICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICAgIGlkVG9TZWFyY2hJbmRleE1hcCxcbiAgICAgICAgKTtcbiAgICAgIHNvcnRlZEhlYWRlclJvd3MucHVzaCh7XG4gICAgICAgIC4uLmhlYWRlclJvdyxcbiAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzb3J0ZWRIZWFkZXJSb3dzO1xuICB9XG59XG4iXX0=
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3RhYmxlL3N0YXRlLWhlbHBlcnMvb3JkZXItaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSWpDLE1BQU0sS0FBVyxpQkFBaUIsQ0E0T2pDO0FBNU9ELFdBQWlCLGlCQUFpQjtJQUNoQyxTQUFnQixjQUFjLENBQzVCLElBQVMsRUFDVCxHQUFZLEVBQ1osU0FBa0M7UUFFbEMsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQU5lLGdDQUFjLGlCQU03QixDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLElBQTZCLEVBQzdCLEdBQVksRUFDWixTQUFrQztRQUVsQyxPQUFPLE9BQU8sQ0FDWixJQUFJLEVBQ0osQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFWZSwwQ0FBd0IsMkJBVXZDLENBQUE7SUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsSUFBNkIsRUFDN0Isa0JBQWdEO1FBRWhELE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcs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S0FBSzt3QkFDOUIsS0FBSztxQkFDK0I7aUJBQ3ZDO2FBQ0YsQ0FBQztTQUNIO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQXRCZSx1Q0FBcUIsd0JBc0JwQyxDQUFBO0FBQ0gsQ0FBQyxFQTVPZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQTRPakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvcmRlckJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndXRpbGl0eS10eXBlcyc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZU9yZGVySGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlckVtcHR5TGFzdDxSPihcbiAgICByb3dzOiBSW10sXG4gICAga2V5OiBrZXlvZiBSLFxuICAgIGRpcmVjdGlvbjogUml2VGFibGUuT3JkZXJEaXJlY3Rpb24sXG4gICk6IFJbXSB7XG4gICAgcmV0dXJuIG9yZGVyQnkocm93cywgW3JvdyA9PiByb3dba2V5XSA9PSBudWxsLCBrZXldLCBbJ2FzYycsIGRpcmVjdGlvbl0pO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIG9yZGVyTmVzdGVkUm93c0VtcHR5TGFzdDxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICByb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgICBrZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgcm93cyxcbiAgICAgIFtyb3cgPT4gcm93LmRhdGFba2V5XSA9PSBudWxsLCByb3cgPT4gcm93LmRhdGFba2V5XV0sXG4gICAgICBbJ2FzYycsIGRpcmVjdGlvbl0sXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KHJvd3MsIFtyb3cgPT4gaWRUb1NlYXJjaEluZGV4TWFwLmdldChyb3cuZGF0YS5pZCldLCBbJ2FzYyddKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uOiBDLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgIG9yZGVyOlxuICAgICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIFdlIG9ubHkgc29ydCB0aGUgbG93ZXN0IGxldmVsIHJvd3MgaWYgcm93cyBhcmUgbmVzdGVkLlxuXG4gICAgSW4gb3RoZXIgd29yZHMsIHdlIHNvcnQgd2l0aGluIGVhY2ggbmVzdGVkIGdyb3VwLCBidXQgZG9cbiAgICAgIE5PVCBzb3J0IGluIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBncm91cHMuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIHNvcnRLZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gb3JkZXJOZXN0ZWRSb3dzRW1wdHlMYXN0KFxuICAgICAgICAgIG5lc3RlZFJvd3MsXG4gICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgICAgICAgICBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzKGFsbFJvd3MpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgZGF0YSBpbnNpZGUgdGhlIGhlYWRlcnMsIG5vdCB0aGUgaGVhZGVycyB0aGVtc2VsdmVzXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzV2l0aEhlYWRlcnM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgc29ydEtleToga2V5b2YgUixcbiAgICBkaXJlY3Rpb246IFJpdlRhYmxlLk9yZGVyRGlyZWN0aW9uLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc29ydGVkSGVhZGVyUm93czogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHNvcnRMb3dMZXZlbE5lc3RlZFJvd3MoXG4gICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICBzb3J0S2V5LFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICApO1xuICAgICAgc29ydGVkSGVhZGVyUm93cy5wdXNoKHtcbiAgICAgICAgLi4uaGVhZGVyUm93LFxuICAgICAgICBzdWJSb3dzOiBzb3J0ZWRTdWJSb3dzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZEhlYWRlclJvd3M7XG4gIH1cblxuICAvLyBDcmVhdGUgbWFwIHRvIGhlbHAgdXMgc29ydCBvbiBGdXNlIHJlbGV2YW5jZSBvcmRlclxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSWRUb1NlYXJjaEluZGV4TWFwPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3NNYXRjaGluZ1NlYXJjaDogUltdLFxuICApOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+IHtcbiAgICBjb25zdCBpZFRvU2VhcmNoSW5kZXhNYXA6IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NNYXRjaGluZ1NlYXJjaC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm93TWF0Y2hpbmdJbmRleDogUiA9IHJvd3NNYXRjaGluZ1NlYXJjaFtpXTtcbiAgICAgIGlkVG9TZWFyY2hJbmRleE1hcC5zZXQocm93TWF0Y2hpbmdJbmRleC5pZCwgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkVG9TZWFyY2hJbmRleE1hcDtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzQmFzZWRPblNlYXJjaE1hdGNoZXM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgaWRUb1NlYXJjaEluZGV4TWFwOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+LFxuICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSB7XG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlU29ydFJvd3NCeVNlYXJjaE1hdGNoKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID1cbiAgICAgICAgICBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoKG5lc3RlZFJvd3MsIGlkVG9TZWFyY2hJbmRleE1hcCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9XG4gICAgICAgICAgICAgIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChhbGxSb3dzKTtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzV2l0aEhlYWRlcnNCYXNlZE9uU2VhcmNoTWF0Y2hlczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICA+KFxuICAgIGFsbEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10ge1xuICAgIGNvbnN0IHNvcnRlZEhlYWRlclJvd3M6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3Qgc29ydGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPVxuICAgICAgICBzb3J0TmVzdGVkUm93c0Jhc2VkT25TZWFyY2hNYXRjaGVzKFxuICAgICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICAgIGlkVG9TZWFyY2hJbmRleE1hcCxcbiAgICAgICAgKTtcbiAgICAgIHNvcnRlZEhlYWRlclJvd3MucHVzaCh7XG4gICAgICAgIC4uLmhlYWRlclJvdyxcbiAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzb3J0ZWRIZWFkZXJSb3dzO1xuICB9XG5cbiAgLypcbiAgICBXaGVuIGEgZGVmYXVsdFNvcnQgaXMgc3BlY2lmaWVkLCBzZWVkIHRoZSBpbml0aWFsIHF1ZXJ5Lm9yZGVyIHNvIHRoZVxuICAgIHRhYmxlIGhlYWRlciBzaG93cyB0aGUgc29ydCBpbmRpY2F0b3IgZnJvbSB0aGUgc3RhcnQuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzZWVkRGVmYXVsdFNvcnRPcHRpb248XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICA+KFxuICAgIG9wdGlvbnM/OiBSaXZUYWJsZS5Jbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+LFxuICApOiBSaXZUYWJsZS5Jbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAob3B0aW9ucz8uZGVmYXVsdFNvcnQgJiYgIW9wdGlvbnM/LmluaXRpYWxTdGF0ZT8ucXVlcnk/Lm9yZGVyKSB7XG4gICAgICBjb25zdCBvcmRlcjogUml2VGFibGUuUXVlcnk8QywgRj5bJ29yZGVyJ10gPSBvcHRpb25zLmRlZmF1bHRTb3J0O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5pbml0aWFsU3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuaW5pdGlhbFN0YXRlPy5xdWVyeSxcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgIH0gYXMgRGVlcFBhcnRpYWw8Uml2VGFibGUuUXVlcnk8QywgRj4+LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxufVxuIl19