@projectcor/people-microfront 1.0.9-0 → 1.0.9-2

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.
@@ -19,6 +19,8 @@ import { Search } from '../../components/Search/Search';
19
19
  import { LayoutSearchUser } from '../../components/Layout/Layout';
20
20
  import { useAssignedWorkspacesFromHost } from '../../hooks/useAssignedWorkspacesFromHost';
21
21
  import { isCorWorkspacesFeatureEnabled } from '../../utils/isCorWorkspacesFeatureEnabled';
22
+ import { buildChipLabelMap, loadUsersFilters, optionLabelById, saveUsersFilters } from '../../utils/peopleFiltersStorage';
23
+ import { getEffectiveUsersFilters, writeUsersFiltersToUrl } from '../../utils/peopleFiltersUrl';
22
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
25
  export var FiltersContainer = /*#__PURE__*/memo(function () {
24
26
  var _useTranslation = useTranslation('people'),
@@ -33,6 +35,9 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
33
35
  data = _useGetTeams.data,
34
36
  currentPage = _useGetTeams.currentPage,
35
37
  lastPage = _useGetTeams.lastPage;
38
+ var initialMerged = useMemo(function () {
39
+ return getEffectiveUsersFilters();
40
+ }, []);
36
41
  var workspacesFeatureEnabled = isCorWorkspacesFeatureEnabled();
37
42
  var _useAssignedWorkspace = useAssignedWorkspacesFromHost(workspacesFeatureEnabled),
38
43
  workspacesList = _useAssignedWorkspace.workspacesList,
@@ -43,7 +48,9 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
43
48
  var canLoadMoreWorkspaces = workspaceCurrentPage < workspaceLastPage;
44
49
  var _useLoadMoreGuard = useLoadMoreGuard(workspacesLoading, canLoadMoreWorkspaces),
45
50
  requestWorkspacesLoadMore = _useLoadMoreGuard.requestLoadMore;
46
- var _useState = useState(''),
51
+ var _useState = useState(function () {
52
+ return initialMerged.searchInput;
53
+ }),
47
54
  _useState2 = _slicedToArray(_useState, 2),
48
55
  searchTermValue = _useState2[0],
49
56
  setSearchTermValue = _useState2[1];
@@ -56,15 +63,21 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
56
63
  positionOptions = _useState6[0],
57
64
  setPositionOptions = _useState6[1];
58
65
  var defaultPositionsRef = useRef(positions || []);
59
- var _useState7 = useState([]),
66
+ var _useState7 = useState(function () {
67
+ return initialMerged.selectedTeams;
68
+ }),
60
69
  _useState8 = _slicedToArray(_useState7, 2),
61
70
  selectedTeams = _useState8[0],
62
71
  setSelectedTeams = _useState8[1];
63
- var _useState9 = useState([]),
72
+ var _useState9 = useState(function () {
73
+ return initialMerged.selectedPositions;
74
+ }),
64
75
  _useState0 = _slicedToArray(_useState9, 2),
65
76
  selectedPositions = _useState0[0],
66
77
  setSelectedPositions = _useState0[1];
67
- var _useState1 = useState([]),
78
+ var _useState1 = useState(function () {
79
+ return initialMerged.selectedWorkspaces;
80
+ }),
68
81
  _useState10 = _slicedToArray(_useState1, 2),
69
82
  selectedWorkspaces = _useState10[0],
70
83
  setSelectedWorkspaces = _useState10[1];
@@ -84,11 +97,19 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
84
97
  _useState18 = _slicedToArray(_useState17, 2),
85
98
  teamFilterSelectionResetKey = _useState18[0],
86
99
  setTeamFilterSelectionResetKey = _useState18[1];
100
+ var _useState19 = useState(function () {
101
+ var _initialMerged$chipLa;
102
+ return (_initialMerged$chipLa = initialMerged.chipLabels) !== null && _initialMerged$chipLa !== void 0 ? _initialMerged$chipLa : {};
103
+ }),
104
+ _useState20 = _slicedToArray(_useState19, 2),
105
+ persistedChipLabels = _useState20[0],
106
+ setPersistedChipLabels = _useState20[1];
87
107
  var workspaceOptions = useMemo(function () {
88
108
  return workspacesList.map(function (w) {
109
+ var _w$name;
89
110
  return {
90
- id: w.id,
91
- label: w.name
111
+ id: Number(w.id),
112
+ label: String((_w$name = w.name) !== null && _w$name !== void 0 ? _w$name : '')
92
113
  };
93
114
  });
94
115
  }, [workspacesList]);
@@ -111,7 +132,6 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
111
132
  } : {} : selectedTeams.length ? {
112
133
  team: selectedTeams
113
134
  } : {};
114
- // allocation API: CorFilters.getUsers usa workspaceIds / workspaceId / workspace_id (no "workspaces")
115
135
  var workspacesFilter = workspacesOverride !== undefined ? workspacesOverride.length ? {
116
136
  workspaceIds: workspacesOverride
117
137
  } : {} : selectedWorkspaces.length ? {
@@ -245,12 +265,33 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
245
265
  window.removeEventListener(SEARCH_EVENT, handleSearch);
246
266
  };
247
267
  }, [handleGetUsers, handleGetTeams, handleGetWorkspaces, searchTermValue, selectedTeams, selectedPositions, selectedWorkspaces, teamSearchTerm]);
268
+ useEffect(function () {
269
+ if (!workspacesFeatureEnabled) return;
270
+ handleGetWorkspaces({
271
+ page: 1
272
+ });
273
+ }, [workspacesFeatureEnabled, handleGetWorkspaces]);
274
+ useEffect(function () {
275
+ var _persisted$selectedTe, _persisted$selectedWo;
276
+ var persisted = getEffectiveUsersFilters();
277
+ if (!(persisted !== null && persisted !== void 0 && (_persisted$selectedTe = persisted.selectedTeams) !== null && _persisted$selectedTe !== void 0 && _persisted$selectedTe.length)) return;
278
+ var teamListFilter = {};
279
+ if ((_persisted$selectedWo = persisted.selectedWorkspaces) !== null && _persisted$selectedWo !== void 0 && _persisted$selectedWo.length) {
280
+ teamListFilter.workspaceIds = persisted.selectedWorkspaces;
281
+ }
282
+ handleGetTeams(_objectSpread({
283
+ page: 1
284
+ }, Object.keys(teamListFilter).length ? {
285
+ filter: teamListFilter
286
+ } : {}));
287
+ }, [handleGetTeams]);
248
288
  useEffect(function () {
249
289
  if (!(data !== null && data !== void 0 && data.teamsUsers) || error) return;
250
290
  var mapped = data.teamsUsers.data.map(function (team) {
291
+ var _team$name;
251
292
  return {
252
- id: team.id,
253
- label: team.name
293
+ id: Number(team.id),
294
+ label: String((_team$name = team.name) !== null && _team$name !== void 0 ? _team$name : '')
254
295
  };
255
296
  });
256
297
  if (data.teamsUsers.page === 1) {
@@ -261,7 +302,7 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
261
302
  return o.id;
262
303
  }));
263
304
  var newOnes = mapped.filter(function (o) {
264
- return !existingIds.has(o.id);
305
+ return !existingIds.has(Number(o.id));
265
306
  });
266
307
  return newOnes.length ? [].concat(_toConsumableArray(prev), _toConsumableArray(newOnes)) : prev;
267
308
  });
@@ -343,8 +384,83 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
343
384
  filter: teamListFilter
344
385
  } : {}));
345
386
  }, [teamSearchTerm, selectedWorkspaces, handleGetTeams]);
387
+ useEffect(function () {
388
+ var _prev$chipLabels, _prev$chipLabels2, _prev$chipLabels3;
389
+ var prev = loadUsersFilters();
390
+ var chipLabels = {};
391
+ var teams = buildChipLabelMap(selectedTeams, teamOptions, prev === null || prev === void 0 || (_prev$chipLabels = prev.chipLabels) === null || _prev$chipLabels === void 0 ? void 0 : _prev$chipLabels.teams);
392
+ var workspaces = buildChipLabelMap(selectedWorkspaces, workspaceOptions, prev === null || prev === void 0 || (_prev$chipLabels2 = prev.chipLabels) === null || _prev$chipLabels2 === void 0 ? void 0 : _prev$chipLabels2.workspaces);
393
+ var positionsMap = buildChipLabelMap(selectedPositions, positionOptions, prev === null || prev === void 0 || (_prev$chipLabels3 = prev.chipLabels) === null || _prev$chipLabels3 === void 0 ? void 0 : _prev$chipLabels3.positions);
394
+ if (teams) chipLabels.teams = teams;
395
+ if (workspaces) chipLabels.workspaces = workspaces;
396
+ if (positionsMap) chipLabels.positions = positionsMap;
397
+ setPersistedChipLabels(chipLabels);
398
+ var payload = _objectSpread({
399
+ searchInput: searchTermValue,
400
+ selectedTeams: selectedTeams,
401
+ selectedPositions: selectedPositions,
402
+ selectedWorkspaces: selectedWorkspaces
403
+ }, Object.keys(chipLabels).length ? {
404
+ chipLabels: chipLabels
405
+ } : {});
406
+ saveUsersFilters(payload);
407
+ writeUsersFiltersToUrl(payload);
408
+ }, [searchTermValue, selectedTeams, selectedPositions, selectedWorkspaces, teamOptions, workspaceOptions, positionOptions]);
409
+ var workspaceInitialSelection = useMemo(function () {
410
+ if (!selectedWorkspaces.length) return undefined;
411
+ var fromStorage = persistedChipLabels === null || persistedChipLabels === void 0 ? void 0 : persistedChipLabels.workspaces;
412
+ return selectedWorkspaces.map(function (id) {
413
+ var _ref2, _optionLabelById;
414
+ return {
415
+ id: id,
416
+ label: (_ref2 = (_optionLabelById = optionLabelById(id, workspaceOptions)) !== null && _optionLabelById !== void 0 ? _optionLabelById : fromStorage === null || fromStorage === void 0 ? void 0 : fromStorage[String(id)]) !== null && _ref2 !== void 0 ? _ref2 : "#".concat(id)
417
+ };
418
+ });
419
+ }, [selectedWorkspaces, workspaceOptions, persistedChipLabels]);
420
+ var teamInitialSelection = useMemo(function () {
421
+ if (!selectedTeams.length) return undefined;
422
+ var fromStorage = persistedChipLabels === null || persistedChipLabels === void 0 ? void 0 : persistedChipLabels.teams;
423
+ return selectedTeams.map(function (id) {
424
+ var _ref3, _optionLabelById2;
425
+ return {
426
+ id: id,
427
+ label: (_ref3 = (_optionLabelById2 = optionLabelById(id, teamOptions)) !== null && _optionLabelById2 !== void 0 ? _optionLabelById2 : fromStorage === null || fromStorage === void 0 ? void 0 : fromStorage[String(id)]) !== null && _ref3 !== void 0 ? _ref3 : "#".concat(id)
428
+ };
429
+ });
430
+ }, [selectedTeams, teamOptions, persistedChipLabels]);
431
+ var positionInitialSelection = useMemo(function () {
432
+ if (!selectedPositions.length) return undefined;
433
+ var fromStorage = persistedChipLabels === null || persistedChipLabels === void 0 ? void 0 : persistedChipLabels.positions;
434
+ return selectedPositions.map(function (id) {
435
+ var _ref4, _optionLabelById3;
436
+ return {
437
+ id: id,
438
+ label: (_ref4 = (_optionLabelById3 = optionLabelById(id, positionOptions)) !== null && _optionLabelById3 !== void 0 ? _optionLabelById3 : fromStorage === null || fromStorage === void 0 ? void 0 : fromStorage[String(id)]) !== null && _ref4 !== void 0 ? _ref4 : "#".concat(id)
439
+ };
440
+ });
441
+ }, [selectedPositions, positionOptions, persistedChipLabels]);
442
+ var workspaceFilterChipKey = useMemo(function () {
443
+ var _workspaceInitialSele;
444
+ return "ws-".concat(selectedWorkspaces.join('-'), "_").concat((_workspaceInitialSele = workspaceInitialSelection === null || workspaceInitialSelection === void 0 ? void 0 : workspaceInitialSelection.map(function (x) {
445
+ return "".concat(x.id, ":").concat(x.label);
446
+ }).join('|')) !== null && _workspaceInitialSele !== void 0 ? _workspaceInitialSele : '');
447
+ }, [selectedWorkspaces, workspaceInitialSelection]);
448
+ var teamFilterChipKey = useMemo(function () {
449
+ var _teamInitialSelection;
450
+ return "tm-".concat(selectedTeams.join('-'), "_").concat((_teamInitialSelection = teamInitialSelection === null || teamInitialSelection === void 0 ? void 0 : teamInitialSelection.map(function (x) {
451
+ return "".concat(x.id, ":").concat(x.label);
452
+ }).join('|')) !== null && _teamInitialSelection !== void 0 ? _teamInitialSelection : '');
453
+ }, [selectedTeams, teamInitialSelection]);
454
+ var positionFilterChipKey = useMemo(function () {
455
+ var _positionInitialSelec;
456
+ return "pos-".concat(selectedPositions.join('-'), "_").concat((_positionInitialSelec = positionInitialSelection === null || positionInitialSelection === void 0 ? void 0 : positionInitialSelection.map(function (x) {
457
+ return "".concat(x.id, ":").concat(x.label);
458
+ }).join('|')) !== null && _positionInitialSelec !== void 0 ? _positionInitialSelec : '');
459
+ }, [selectedPositions, positionInitialSelection]);
346
460
  return /*#__PURE__*/_jsxs(LayoutSearchUser, {
347
- children: [/*#__PURE__*/_jsx(Search, {}), workspacesFeatureEnabled && /*#__PURE__*/_jsx(FilterChip, {
461
+ children: [/*#__PURE__*/_jsx(Search, {
462
+ initialSearch: initialMerged.searchInput
463
+ }), workspacesFeatureEnabled && /*#__PURE__*/_jsx(FilterChip, {
348
464
  id: "workspaceFilter",
349
465
  label: t('filters.workspace'),
350
466
  options: workspaceOptionsToShow,
@@ -354,8 +470,9 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
354
470
  hasMorePages: canLoadMoreWorkspaces,
355
471
  loadMoreLoading: workspacesLoading && workspacesList.length > 0,
356
472
  optionsLoading: workspacesLoading && workspacesList.length === 0,
357
- loadingMessage: t('users.loadingWorkspaces')
358
- }), /*#__PURE__*/_jsx(FilterChip, {
473
+ loadingMessage: t('users.loadingWorkspaces'),
474
+ initialResolvedSelection: workspaceInitialSelection
475
+ }, workspaceFilterChipKey), /*#__PURE__*/_jsx(FilterChip, {
359
476
  id: "teamFilter",
360
477
  label: t('filters.team'),
361
478
  options: teamOptions,
@@ -365,14 +482,16 @@ export var FiltersContainer = /*#__PURE__*/memo(function () {
365
482
  onLoadMore: handleTeamsLoadMore,
366
483
  hasMorePages: canLoadMoreTeams,
367
484
  loadMoreLoading: loading,
368
- dispatchSearchOnClose: false
369
- }), /*#__PURE__*/_jsx(FilterChip, {
485
+ dispatchSearchOnClose: false,
486
+ initialResolvedSelection: teamInitialSelection
487
+ }, teamFilterChipKey), /*#__PURE__*/_jsx(FilterChip, {
370
488
  id: "positionFilter",
371
489
  label: t('filters.position'),
372
490
  options: positionOptionsToShow,
373
491
  emptyMessage: t('users.emptyFilterMessage'),
374
- dispatchSearchOnClose: true
375
- })]
492
+ dispatchSearchOnClose: true,
493
+ initialResolvedSelection: positionInitialSelection
494
+ }, positionFilterChipKey)]
376
495
  });
377
496
  });
378
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZW1vIiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VUcmFuc2xhdGlvbiIsInVzZVVzZXJzUXVlcnkiLCJGaWx0ZXJDaGlwIiwidXNlR2V0VGVhbXMiLCJ1c2VMb2FkTW9yZUd1YXJkIiwiU0VBUkNIX0VWRU5UIiwiU2VhcmNoIiwiTGF5b3V0U2VhcmNoVXNlciIsInVzZUFzc2lnbmVkV29ya3NwYWNlc0Zyb21Ib3N0IiwiaXNDb3JXb3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRmlsdGVyc0NvbnRhaW5lciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlVXNlcnNRdWVyeSIsImhhbmRsZUdldFVzZXJzIiwicG9zaXRpb25zIiwiX3VzZUdldFRlYW1zIiwiaGFuZGxlR2V0VGVhbXMiLCJsb2FkaW5nIiwiZXJyb3IiLCJkYXRhIiwiY3VycmVudFBhZ2UiLCJsYXN0UGFnZSIsIndvcmtzcGFjZXNGZWF0dXJlRW5hYmxlZCIsIl91c2VBc3NpZ25lZFdvcmtzcGFjZSIsIndvcmtzcGFjZXNMaXN0Iiwid29ya3NwYWNlc0xvYWRpbmciLCJoYW5kbGVHZXRXb3Jrc3BhY2VzIiwid29ya3NwYWNlQ3VycmVudFBhZ2UiLCJ3b3Jrc3BhY2VMYXN0UGFnZSIsImNhbkxvYWRNb3JlV29ya3NwYWNlcyIsIl91c2VMb2FkTW9yZUd1YXJkIiwicmVxdWVzdFdvcmtzcGFjZXNMb2FkTW9yZSIsInJlcXVlc3RMb2FkTW9yZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlYXJjaFRlcm1WYWx1ZSIsInNldFNlYXJjaFRlcm1WYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwidGVhbU9wdGlvbnMiLCJzZXRUZWFtT3B0aW9ucyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwicG9zaXRpb25PcHRpb25zIiwic2V0UG9zaXRpb25PcHRpb25zIiwiZGVmYXVsdFBvc2l0aW9uc1JlZiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VsZWN0ZWRUZWFtcyIsInNldFNlbGVjdGVkVGVhbXMiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkUG9zaXRpb25zIiwic2V0U2VsZWN0ZWRQb3NpdGlvbnMiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZWxlY3RlZFdvcmtzcGFjZXMiLCJzZXRTZWxlY3RlZFdvcmtzcGFjZXMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidGVhbVNlYXJjaFRlcm0iLCJzZXRUZWFtU2VhcmNoVGVybSIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJwb3NpdGlvblNlYXJjaFRlcm0iLCJzZXRQb3NpdGlvblNlYXJjaFRlcm0iLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2Iiwid29ya3NwYWNlU2VhcmNoVGVybSIsInNldFdvcmtzcGFjZVNlYXJjaFRlcm0iLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwidGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5Iiwic2V0VGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5Iiwid29ya3NwYWNlT3B0aW9ucyIsIm1hcCIsInciLCJpZCIsImxhYmVsIiwibmFtZSIsImNhbkxvYWRNb3JlVGVhbXMiLCJfdXNlTG9hZE1vcmVHdWFyZDIiLCJyZXF1ZXN0VGVhbXNMb2FkTW9yZSIsImJ1aWxkQW5kU2VuZFVzZXJSZXF1ZXN0IiwiX3JlZiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNlYXJjaElucHV0T3ZlcnJpZGUiLCJ0ZWFtc092ZXJyaWRlIiwicG9zaXRpb25zT3ZlcnJpZGUiLCJ3b3Jrc3BhY2VzT3ZlcnJpZGUiLCJwb3NpdGlvbnNGaWx0ZXIiLCJ0ZWFtc0ZpbHRlciIsInRlYW0iLCJ3b3Jrc3BhY2VzRmlsdGVyIiwid29ya3NwYWNlSWRzIiwidmFsdWVzVG9GaWx0ZXIiLCJfb2JqZWN0U3ByZWFkIiwic2VhcmNoSW5wdXQiLCJwYWdlIiwiaGFuZGxlU2VhcmNoIiwiZXZlbnQiLCJfZXZlbnQkZGV0YWlsIiwiZGV0YWlsIiwic2VhcmNoVGVybSIsInR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJhcmVUZWFtc0VxdWFsIiwiZXZlcnkiLCJ2YWx1ZSIsImluZGV4IiwidGVybSIsInRyaW0iLCJ0ZWFtTGlzdEZpbHRlciIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJhcmVQb3NpdGlvbnNFcXVhbCIsImFyZVdvcmtzcGFjZXNFcXVhbCIsImsiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRlYW1zVXNlcnMiLCJtYXBwZWQiLCJwcmV2IiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJvIiwibmV3T25lcyIsImhhcyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImN1cnJlbnQiLCJoYW5kbGVUZWFtc0xvYWRNb3JlIiwiaGFuZGxlV29ya3NwYWNlc0xvYWRNb3JlIiwicG9zaXRpb25PcHRpb25zVG9TaG93IiwidG9Mb3dlckNhc2UiLCJwb3NXaXRoQ2F0ZWdvcnkiLCJzZWxlY3RlZE9wdHMiLCJwIiwiaW5jbHVkZXMiLCJmaWx0ZXJlZE9wdHMiLCJjYXRlZ29yeU5hbWUiLCJmaWx0ZXJlZElkcyIsInNlbGVjdGVkTm90SW5GaWx0ZXJlZCIsIndvcmtzcGFjZU9wdGlvbnNUb1Nob3ciLCJoYW5kbGVUZWFtRmlsdGVyT3BlbiIsImNoaWxkcmVuIiwib3B0aW9ucyIsImVtcHR5TWVzc2FnZSIsImRpc3BhdGNoU2VhcmNoT25DbG9zZSIsIm9uTG9hZE1vcmUiLCJoYXNNb3JlUGFnZXMiLCJsb2FkTW9yZUxvYWRpbmciLCJvcHRpb25zTG9hZGluZyIsImxvYWRpbmdNZXNzYWdlIiwic2VsZWN0aW9uUmVzZXRLZXkiLCJvbk9wZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGFpbmVyL0ZpbHRlcnMvRmlsdGVyc0NvbnRhaW5lci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlcnNRdWVyeSB9IGZyb20gJy4uLy4uL2NvbnRleHQvVXNlcnNDb250ZXh0J1xuaW1wb3J0IHsgRmlsdGVyQ2hpcCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXJDaGlwJ1xuaW1wb3J0IHsgdXNlR2V0VGVhbXMgfSBmcm9tICcuLi8uLi9ob29rcy91c2VHZXRUZWFtcydcbmltcG9ydCB7IHVzZUxvYWRNb3JlR3VhcmQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VMb2FkTW9yZUd1YXJkJ1xuaW1wb3J0IHsgU0VBUkNIX0VWRU5UIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2VhcmNoRXZlbnQnXG5pbXBvcnQgeyBTZWFyY2ggfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1NlYXJjaC9TZWFyY2gnXG5pbXBvcnQgeyBMYXlvdXRTZWFyY2hVc2VyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9MYXlvdXQvTGF5b3V0J1xuaW1wb3J0IHsgdXNlQXNzaWduZWRXb3Jrc3BhY2VzRnJvbUhvc3QgfSBmcm9tICcuLi8uLi9ob29rcy91c2VBc3NpZ25lZFdvcmtzcGFjZXNGcm9tSG9zdCdcbmltcG9ydCB7IGlzQ29yV29ya3NwYWNlc0ZlYXR1cmVFbmFibGVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvaXNDb3JXb3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQnXG5cbmV4cG9ydCBjb25zdCBGaWx0ZXJzQ29udGFpbmVyID0gbWVtbygoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ3Blb3BsZScpXG4gIGNvbnN0IHsgaGFuZGxlR2V0VXNlcnMsIHBvc2l0aW9ucyB9ID0gdXNlVXNlcnNRdWVyeSgpXG4gIGNvbnN0IHsgaGFuZGxlR2V0VGVhbXMsIGxvYWRpbmcsIGVycm9yLCBkYXRhLCBjdXJyZW50UGFnZSwgbGFzdFBhZ2UgfSA9IHVzZUdldFRlYW1zKClcblxuICBjb25zdCB3b3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQgPSBpc0NvcldvcmtzcGFjZXNGZWF0dXJlRW5hYmxlZCgpXG4gIGNvbnN0IHtcbiAgICB3b3Jrc3BhY2VzTGlzdCxcbiAgICBsb2FkaW5nOiB3b3Jrc3BhY2VzTG9hZGluZyxcbiAgICBoYW5kbGVHZXRXb3Jrc3BhY2VzLFxuICAgIGN1cnJlbnRQYWdlOiB3b3Jrc3BhY2VDdXJyZW50UGFnZSxcbiAgICBsYXN0UGFnZTogd29ya3NwYWNlTGFzdFBhZ2UsXG4gIH0gPSB1c2VBc3NpZ25lZFdvcmtzcGFjZXNGcm9tSG9zdCh3b3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQpXG5cbiAgY29uc3QgY2FuTG9hZE1vcmVXb3Jrc3BhY2VzID0gd29ya3NwYWNlQ3VycmVudFBhZ2UgPCB3b3Jrc3BhY2VMYXN0UGFnZVxuICBjb25zdCB7IHJlcXVlc3RMb2FkTW9yZTogcmVxdWVzdFdvcmtzcGFjZXNMb2FkTW9yZSB9ID0gdXNlTG9hZE1vcmVHdWFyZCh3b3Jrc3BhY2VzTG9hZGluZywgY2FuTG9hZE1vcmVXb3Jrc3BhY2VzKVxuXG4gIGNvbnN0IFtzZWFyY2hUZXJtVmFsdWUsIHNldFNlYXJjaFRlcm1WYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW3RlYW1PcHRpb25zLCBzZXRUZWFtT3B0aW9uc10gPSB1c2VTdGF0ZTx7IGlkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdPihbXSlcbiAgY29uc3QgW3Bvc2l0aW9uT3B0aW9ucywgc2V0UG9zaXRpb25PcHRpb25zXSA9IHVzZVN0YXRlPHsgaWQ6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10+KHBvc2l0aW9ucyB8fCBbXSlcbiAgY29uc3QgZGVmYXVsdFBvc2l0aW9uc1JlZiA9IHVzZVJlZjx7IGlkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmc7IGNhdGVnb3J5TmFtZT86IHN0cmluZyB9W10+KHBvc2l0aW9ucyB8fCBbXSlcblxuICBjb25zdCBbc2VsZWN0ZWRUZWFtcywgc2V0U2VsZWN0ZWRUZWFtc10gPSB1c2VTdGF0ZTxudW1iZXJbXT4oW10pXG4gIGNvbnN0IFtzZWxlY3RlZFBvc2l0aW9ucywgc2V0U2VsZWN0ZWRQb3NpdGlvbnNdID0gdXNlU3RhdGU8bnVtYmVyW10+KFtdKVxuICBjb25zdCBbc2VsZWN0ZWRXb3Jrc3BhY2VzLCBzZXRTZWxlY3RlZFdvcmtzcGFjZXNdID0gdXNlU3RhdGU8bnVtYmVyW10+KFtdKVxuICBjb25zdCBbdGVhbVNlYXJjaFRlcm0sIHNldFRlYW1TZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbcG9zaXRpb25TZWFyY2hUZXJtLCBzZXRQb3NpdGlvblNlYXJjaFRlcm1dID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt3b3Jrc3BhY2VTZWFyY2hUZXJtLCBzZXRXb3Jrc3BhY2VTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5LCBzZXRUZWFtRmlsdGVyU2VsZWN0aW9uUmVzZXRLZXldID0gdXNlU3RhdGUoMClcblxuICBjb25zdCB3b3Jrc3BhY2VPcHRpb25zID0gdXNlTWVtbygoKSA9PiB3b3Jrc3BhY2VzTGlzdC5tYXAodyA9PiAoeyBpZDogdy5pZCwgbGFiZWw6IHcubmFtZSB9KSksIFt3b3Jrc3BhY2VzTGlzdF0pXG5cbiAgY29uc3QgY2FuTG9hZE1vcmVUZWFtcyA9IGN1cnJlbnRQYWdlIDwgbGFzdFBhZ2VcbiAgY29uc3QgeyByZXF1ZXN0TG9hZE1vcmU6IHJlcXVlc3RUZWFtc0xvYWRNb3JlIH0gPSB1c2VMb2FkTW9yZUd1YXJkKGxvYWRpbmcsIGNhbkxvYWRNb3JlVGVhbXMpXG5cbiAgY29uc3QgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QgPSAoe1xuICAgIHNlYXJjaElucHV0T3ZlcnJpZGUsXG4gICAgdGVhbXNPdmVycmlkZSxcbiAgICBwb3NpdGlvbnNPdmVycmlkZSxcbiAgICB3b3Jrc3BhY2VzT3ZlcnJpZGUsXG4gIH06IHtcbiAgICBzZWFyY2hJbnB1dE92ZXJyaWRlPzogc3RyaW5nXG4gICAgdGVhbXNPdmVycmlkZT86IG51bWJlcltdXG4gICAgcG9zaXRpb25zT3ZlcnJpZGU/OiBudW1iZXJbXVxuICAgIHdvcmtzcGFjZXNPdmVycmlkZT86IG51bWJlcltdXG4gIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IHBvc2l0aW9uc0ZpbHRlciA9XG4gICAgICBwb3NpdGlvbnNPdmVycmlkZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcG9zaXRpb25zT3ZlcnJpZGUubGVuZ3RoXG4gICAgICAgICAgPyB7IHBvc2l0aW9uczogcG9zaXRpb25zT3ZlcnJpZGUgfVxuICAgICAgICAgIDoge31cbiAgICAgICAgOiBzZWxlY3RlZFBvc2l0aW9ucy5sZW5ndGhcbiAgICAgICAgPyB7IHBvc2l0aW9uczogc2VsZWN0ZWRQb3NpdGlvbnMgfVxuICAgICAgICA6IHt9XG4gICAgY29uc3QgdGVhbXNGaWx0ZXIgPVxuICAgICAgdGVhbXNPdmVycmlkZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGVhbXNPdmVycmlkZS5sZW5ndGhcbiAgICAgICAgICA/IHsgdGVhbTogdGVhbXNPdmVycmlkZSB9XG4gICAgICAgICAgOiB7fVxuICAgICAgICA6IHNlbGVjdGVkVGVhbXMubGVuZ3RoXG4gICAgICAgID8geyB0ZWFtOiBzZWxlY3RlZFRlYW1zIH1cbiAgICAgICAgOiB7fVxuICAgIC8vIGFsbG9jYXRpb24gQVBJOiBDb3JGaWx0ZXJzLmdldFVzZXJzIHVzYSB3b3Jrc3BhY2VJZHMgLyB3b3Jrc3BhY2VJZCAvIHdvcmtzcGFjZV9pZCAobm8gXCJ3b3Jrc3BhY2VzXCIpXG4gICAgY29uc3Qgd29ya3NwYWNlc0ZpbHRlciA9XG4gICAgICB3b3Jrc3BhY2VzT3ZlcnJpZGUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHdvcmtzcGFjZXNPdmVycmlkZS5sZW5ndGhcbiAgICAgICAgICA/IHsgd29ya3NwYWNlSWRzOiB3b3Jrc3BhY2VzT3ZlcnJpZGUgfVxuICAgICAgICAgIDoge31cbiAgICAgICAgOiBzZWxlY3RlZFdvcmtzcGFjZXMubGVuZ3RoXG4gICAgICAgID8geyB3b3Jrc3BhY2VJZHM6IHNlbGVjdGVkV29ya3NwYWNlcyB9XG4gICAgICAgIDoge31cbiAgICBjb25zdCB2YWx1ZXNUb0ZpbHRlciA9IHsgLi4ucG9zaXRpb25zRmlsdGVyLCAuLi50ZWFtc0ZpbHRlciwgLi4ud29ya3NwYWNlc0ZpbHRlciB9XG5cbiAgICBoYW5kbGVHZXRVc2Vycyh7XG4gICAgICBzZWFyY2hJbnB1dDogc2VhcmNoSW5wdXRPdmVycmlkZSAhPT0gdW5kZWZpbmVkID8gc2VhcmNoSW5wdXRPdmVycmlkZSA6IHNlYXJjaFRlcm1WYWx1ZSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICB2YWx1ZXNUb0ZpbHRlcjogdmFsdWVzVG9GaWx0ZXIgYXMgYW55LFxuICAgIH0pXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaCA9IChldmVudDogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc2VhcmNoVGVybSwgdHlwZSwgdmFsdWVzVG9GaWx0ZXIgfSA9IGV2ZW50LmRldGFpbFxuICAgICAgaWYgKHR5cGUgPT09ICdmaWx0ZXIxJykge1xuICAgICAgICBzZXRTZWFyY2hUZXJtVmFsdWUoc2VhcmNoVGVybSlcbiAgICAgICAgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QoeyBzZWFyY2hJbnB1dE92ZXJyaWRlOiBzZWFyY2hUZXJtIH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ3RlYW1GaWx0ZXInKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlc1RvRmlsdGVyKSkge1xuICAgICAgICAgIGlmICh2YWx1ZXNUb0ZpbHRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZVRlYW1zRXF1YWwgPSB2YWx1ZXNUb0ZpbHRlci5ldmVyeSgodmFsdWUsIGluZGV4OiBudW1iZXIpID0+IHZhbHVlID09PSBzZWxlY3RlZFRlYW1zW2luZGV4XSlcbiAgICAgICAgICAgIGlmIChhcmVUZWFtc0VxdWFsKSByZXR1cm5cbiAgICAgICAgICAgIHNldFNlbGVjdGVkVGVhbXModmFsdWVzVG9GaWx0ZXIpXG4gICAgICAgICAgICBidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCh7IHRlYW1zT3ZlcnJpZGU6IHZhbHVlc1RvRmlsdGVyIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkVGVhbXMoW10pXG4gICAgICAgICAgICBidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCh7IHRlYW1zT3ZlcnJpZGU6IFtdIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRlYW1TZWFyY2hUZXJtKHNlYXJjaFRlcm0gPz8gJycpXG4gICAgICAgICAgY29uc3QgdGVybSA9IChzZWFyY2hUZXJtID8/ICcnKS50cmltKClcbiAgICAgICAgICBjb25zdCB0ZWFtTGlzdEZpbHRlcjogeyBuYW1lPzogc3RyaW5nOyB3b3Jrc3BhY2VJZHM/OiBudW1iZXJbXSB9ID0ge31cbiAgICAgICAgICBpZiAodGVybSkgdGVhbUxpc3RGaWx0ZXIubmFtZSA9IHRlcm1cbiAgICAgICAgICBpZiAoc2VsZWN0ZWRXb3Jrc3BhY2VzLmxlbmd0aCkgdGVhbUxpc3RGaWx0ZXIud29ya3NwYWNlSWRzID0gc2VsZWN0ZWRXb3Jrc3BhY2VzXG4gICAgICAgICAgaGFuZGxlR2V0VGVhbXMoe1xuICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgIC4uLihPYmplY3Qua2V5cyh0ZWFtTGlzdEZpbHRlcikubGVuZ3RoID8geyBmaWx0ZXI6IHRlYW1MaXN0RmlsdGVyIH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ3Bvc2l0aW9uRmlsdGVyJykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXNUb0ZpbHRlcikpIHtcbiAgICAgICAgICBpZiAoIXZhbHVlc1RvRmlsdGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRQb3NpdGlvbnMoW10pXG4gICAgICAgICAgICBidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCh7IHBvc2l0aW9uc092ZXJyaWRlOiBbXSB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhcmVQb3NpdGlvbnNFcXVhbCA9IHZhbHVlc1RvRmlsdGVyLmV2ZXJ5KCh2YWx1ZSwgaW5kZXg6IG51bWJlcikgPT4gdmFsdWUgPT09IHNlbGVjdGVkUG9zaXRpb25zW2luZGV4XSlcbiAgICAgICAgICAgIGlmIChhcmVQb3NpdGlvbnNFcXVhbCkgcmV0dXJuXG4gICAgICAgICAgICBzZXRTZWxlY3RlZFBvc2l0aW9ucyh2YWx1ZXNUb0ZpbHRlcilcbiAgICAgICAgICAgIGJ1aWxkQW5kU2VuZFVzZXJSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgcG9zaXRpb25zT3ZlcnJpZGU6IHZhbHVlc1RvRmlsdGVyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0UG9zaXRpb25TZWFyY2hUZXJtKHNlYXJjaFRlcm0gPz8gJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICd3b3Jrc3BhY2VGaWx0ZXInKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlc1RvRmlsdGVyKSkge1xuICAgICAgICAgIGlmICghdmFsdWVzVG9GaWx0ZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFdvcmtzcGFjZXMoW10pXG4gICAgICAgICAgICBidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCh7IHdvcmtzcGFjZXNPdmVycmlkZTogW10gfSlcbiAgICAgICAgICAgIGNvbnN0IHRlcm0gPSB0ZWFtU2VhcmNoVGVybS50cmltKClcbiAgICAgICAgICAgIGhhbmRsZUdldFRlYW1zKHsgcGFnZTogMSwgLi4uKHRlcm0gPyB7IGZpbHRlcjogeyBuYW1lOiB0ZXJtIH0gfSA6IHt9KSB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhcmVXb3Jrc3BhY2VzRXF1YWwgPSB2YWx1ZXNUb0ZpbHRlci5ldmVyeShcbiAgICAgICAgICAgICAgKHZhbHVlLCBpbmRleDogbnVtYmVyKSA9PiB2YWx1ZSA9PT0gc2VsZWN0ZWRXb3Jrc3BhY2VzW2luZGV4XVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGFyZVdvcmtzcGFjZXNFcXVhbCkgcmV0dXJuXG4gICAgICAgICAgICBzZXRTZWxlY3RlZFdvcmtzcGFjZXModmFsdWVzVG9GaWx0ZXIpXG4gICAgICAgICAgICBzZXRTZWxlY3RlZFRlYW1zKFtdKVxuICAgICAgICAgICAgc2V0VGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5KGsgPT4gayArIDEpXG4gICAgICAgICAgICBidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCh7IHdvcmtzcGFjZXNPdmVycmlkZTogdmFsdWVzVG9GaWx0ZXIsIHRlYW1zT3ZlcnJpZGU6IFtdIH0pXG4gICAgICAgICAgICBjb25zdCB0ZXJtID0gdGVhbVNlYXJjaFRlcm0udHJpbSgpXG4gICAgICAgICAgICBjb25zdCB0ZWFtTGlzdEZpbHRlcjogeyBuYW1lPzogc3RyaW5nOyB3b3Jrc3BhY2VJZHM6IG51bWJlcltdIH0gPSB7XG4gICAgICAgICAgICAgIHdvcmtzcGFjZUlkczogdmFsdWVzVG9GaWx0ZXIsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGVybSkgdGVhbUxpc3RGaWx0ZXIubmFtZSA9IHRlcm1cbiAgICAgICAgICAgIGhhbmRsZUdldFRlYW1zKHsgcGFnZTogMSwgZmlsdGVyOiB0ZWFtTGlzdEZpbHRlciB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gc2VhcmNoVGVybSA/PyAnJ1xuICAgICAgICAgIHNldFdvcmtzcGFjZVNlYXJjaFRlcm0odGVybSlcbiAgICAgICAgICBoYW5kbGVHZXRXb3Jrc3BhY2VzKHtcbiAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAuLi4odGVybS50cmltKCkgPyB7IGZpbHRlcjogeyBuYW1lOiB0ZXJtLnRyaW0oKSB9IH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFNFQVJDSF9FVkVOVCwgaGFuZGxlU2VhcmNoIGFzIHVua25vd24gYXMgRXZlbnRMaXN0ZW5lcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoU0VBUkNIX0VWRU5ULCBoYW5kbGVTZWFyY2ggYXMgdW5rbm93biBhcyBFdmVudExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW1xuICAgIGhhbmRsZUdldFVzZXJzLFxuICAgIGhhbmRsZUdldFRlYW1zLFxuICAgIGhhbmRsZUdldFdvcmtzcGFjZXMsXG4gICAgc2VhcmNoVGVybVZhbHVlLFxuICAgIHNlbGVjdGVkVGVhbXMsXG4gICAgc2VsZWN0ZWRQb3NpdGlvbnMsXG4gICAgc2VsZWN0ZWRXb3Jrc3BhY2VzLFxuICAgIHRlYW1TZWFyY2hUZXJtLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkYXRhPy50ZWFtc1VzZXJzIHx8IGVycm9yKSByZXR1cm5cbiAgICBjb25zdCBtYXBwZWQgPSBkYXRhLnRlYW1zVXNlcnMuZGF0YS5tYXAoKHRlYW06IHsgaWQ6IG51bWJlcjsgbmFtZTogc3RyaW5nIH0pID0+ICh7XG4gICAgICBpZDogdGVhbS5pZCxcbiAgICAgIGxhYmVsOiB0ZWFtLm5hbWUsXG4gICAgfSkpXG4gICAgaWYgKGRhdGEudGVhbXNVc2Vycy5wYWdlID09PSAxKSB7XG4gICAgICBzZXRUZWFtT3B0aW9ucyhtYXBwZWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRlYW1PcHRpb25zKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAobyA9PiBvLmlkKSlcbiAgICAgICAgY29uc3QgbmV3T25lcyA9IG1hcHBlZC5maWx0ZXIoKG86IHsgaWQ6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9KSA9PiAhZXhpc3RpbmdJZHMuaGFzKG8uaWQpKVxuICAgICAgICByZXR1cm4gbmV3T25lcy5sZW5ndGggPyBbLi4ucHJldiwgLi4ubmV3T25lc10gOiBwcmV2XG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2RhdGEsIGVycm9yXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwb3NpdGlvbnMpIHtcbiAgICAgIHNldFBvc2l0aW9uT3B0aW9ucyhwb3NpdGlvbnMpXG4gICAgICBpZiAocG9zaXRpb25zLmxlbmd0aCkge1xuICAgICAgICBkZWZhdWx0UG9zaXRpb25zUmVmLmN1cnJlbnQgPSBwb3NpdGlvbnNcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3NpdGlvbnNdKVxuXG4gIGNvbnN0IGhhbmRsZVRlYW1zTG9hZE1vcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmVxdWVzdFRlYW1zTG9hZE1vcmUoKCkgPT4ge1xuICAgICAgY29uc3QgdGVybSA9IHRlYW1TZWFyY2hUZXJtPy50cmltKClcbiAgICAgIGNvbnN0IHRlYW1MaXN0RmlsdGVyOiB7IG5hbWU/OiBzdHJpbmc7IHdvcmtzcGFjZUlkcz86IG51bWJlcltdIH0gPSB7fVxuICAgICAgaWYgKHRlcm0pIHRlYW1MaXN0RmlsdGVyLm5hbWUgPSB0ZXJtXG4gICAgICBpZiAoc2VsZWN0ZWRXb3Jrc3BhY2VzLmxlbmd0aCkgdGVhbUxpc3RGaWx0ZXIud29ya3NwYWNlSWRzID0gc2VsZWN0ZWRXb3Jrc3BhY2VzXG4gICAgICBoYW5kbGVHZXRUZWFtcyh7XG4gICAgICAgIHBhZ2U6IGN1cnJlbnRQYWdlICsgMSxcbiAgICAgICAgLi4uKE9iamVjdC5rZXlzKHRlYW1MaXN0RmlsdGVyKS5sZW5ndGggPyB7IGZpbHRlcjogdGVhbUxpc3RGaWx0ZXIgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfSwgW3JlcXVlc3RUZWFtc0xvYWRNb3JlLCBjdXJyZW50UGFnZSwgdGVhbVNlYXJjaFRlcm0sIHNlbGVjdGVkV29ya3NwYWNlcywgaGFuZGxlR2V0VGVhbXNdKVxuXG4gIGNvbnN0IGhhbmRsZVdvcmtzcGFjZXNMb2FkTW9yZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXF1ZXN0V29ya3NwYWNlc0xvYWRNb3JlKCgpID0+XG4gICAgICBoYW5kbGVHZXRXb3Jrc3BhY2VzKHtcbiAgICAgICAgcGFnZTogd29ya3NwYWNlQ3VycmVudFBhZ2UgKyAxLFxuICAgICAgICAuLi4od29ya3NwYWNlU2VhcmNoVGVybT8udHJpbSgpID8geyBmaWx0ZXI6IHsgbmFtZTogd29ya3NwYWNlU2VhcmNoVGVybS50cmltKCkgfSB9IDoge30pLFxuICAgICAgfSlcbiAgICApXG4gIH0sIFtyZXF1ZXN0V29ya3NwYWNlc0xvYWRNb3JlLCB3b3Jrc3BhY2VDdXJyZW50UGFnZSwgd29ya3NwYWNlU2VhcmNoVGVybSwgaGFuZGxlR2V0V29ya3NwYWNlc10pXG5cbiAgY29uc3QgcG9zaXRpb25PcHRpb25zVG9TaG93ID0gIXBvc2l0aW9uU2VhcmNoVGVybS50cmltKClcbiAgICA/IHBvc2l0aW9uT3B0aW9uc1xuICAgIDogKCgpID0+IHtcbiAgICAgICAgY29uc3QgdGVybSA9IHBvc2l0aW9uU2VhcmNoVGVybS50cmltKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICBjb25zdCBwb3NXaXRoQ2F0ZWdvcnkgPSBwb3NpdGlvbk9wdGlvbnMgYXMgeyBpZDogbnVtYmVyOyBsYWJlbDogc3RyaW5nOyBjYXRlZ29yeU5hbWU/OiBzdHJpbmcgfVtdXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0cyA9IHBvc1dpdGhDYXRlZ29yeS5maWx0ZXIocCA9PiBzZWxlY3RlZFBvc2l0aW9ucy5pbmNsdWRlcyhwLmlkKSlcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPcHRzID0gcG9zV2l0aENhdGVnb3J5LmZpbHRlcihcbiAgICAgICAgICBwID0+IHAubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fCAocC5jYXRlZ29yeU5hbWUgJiYgcC5jYXRlZ29yeU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSlcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBmaWx0ZXJlZElkcyA9IG5ldyBTZXQoZmlsdGVyZWRPcHRzLm1hcChvID0+IG8uaWQpKVxuICAgICAgICBjb25zdCBzZWxlY3RlZE5vdEluRmlsdGVyZWQgPSBzZWxlY3RlZE9wdHMuZmlsdGVyKG8gPT4gIWZpbHRlcmVkSWRzLmhhcyhvLmlkKSlcbiAgICAgICAgcmV0dXJuIFsuLi5zZWxlY3RlZE5vdEluRmlsdGVyZWQsIC4uLmZpbHRlcmVkT3B0c11cbiAgICAgIH0pKClcblxuICBjb25zdCB3b3Jrc3BhY2VPcHRpb25zVG9TaG93ID0gIXdvcmtzcGFjZVNlYXJjaFRlcm0udHJpbSgpXG4gICAgPyB3b3Jrc3BhY2VPcHRpb25zXG4gICAgOiAoKCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXJtID0gd29ya3NwYWNlU2VhcmNoVGVybS50cmltKCkudG9Mb3dlckNhc2UoKVxuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdHMgPSB3b3Jrc3BhY2VPcHRpb25zLmZpbHRlcihwID0+IHNlbGVjdGVkV29ya3NwYWNlcy5pbmNsdWRlcyhwLmlkKSlcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPcHRzID0gd29ya3NwYWNlT3B0aW9ucy5maWx0ZXIocCA9PiBwLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkSWRzID0gbmV3IFNldChmaWx0ZXJlZE9wdHMubWFwKG8gPT4gby5pZCkpXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTm90SW5GaWx0ZXJlZCA9IHNlbGVjdGVkT3B0cy5maWx0ZXIobyA9PiAhZmlsdGVyZWRJZHMuaGFzKG8uaWQpKVxuICAgICAgICByZXR1cm4gWy4uLnNlbGVjdGVkTm90SW5GaWx0ZXJlZCwgLi4uZmlsdGVyZWRPcHRzXVxuICAgICAgfSkoKVxuXG4gIGNvbnN0IGhhbmRsZVRlYW1GaWx0ZXJPcGVuID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSB0ZWFtU2VhcmNoVGVybS50cmltKClcbiAgICBjb25zdCB0ZWFtTGlzdEZpbHRlcjogeyBuYW1lPzogc3RyaW5nOyB3b3Jrc3BhY2VJZHM/OiBudW1iZXJbXSB9ID0ge31cbiAgICBpZiAodGVybSkgdGVhbUxpc3RGaWx0ZXIubmFtZSA9IHRlcm1cbiAgICBpZiAoc2VsZWN0ZWRXb3Jrc3BhY2VzLmxlbmd0aCkgdGVhbUxpc3RGaWx0ZXIud29ya3NwYWNlSWRzID0gc2VsZWN0ZWRXb3Jrc3BhY2VzXG4gICAgaGFuZGxlR2V0VGVhbXMoe1xuICAgICAgcGFnZTogMSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyh0ZWFtTGlzdEZpbHRlcikubGVuZ3RoID8geyBmaWx0ZXI6IHRlYW1MaXN0RmlsdGVyIH0gOiB7fSksXG4gICAgfSlcbiAgfSwgW3RlYW1TZWFyY2hUZXJtLCBzZWxlY3RlZFdvcmtzcGFjZXMsIGhhbmRsZUdldFRlYW1zXSlcblxuICByZXR1cm4gKFxuICAgIDxMYXlvdXRTZWFyY2hVc2VyPlxuICAgICAgPFNlYXJjaCAvPlxuICAgICAge3dvcmtzcGFjZXNGZWF0dXJlRW5hYmxlZCAmJiAoXG4gICAgICAgIDxGaWx0ZXJDaGlwXG4gICAgICAgICAgaWQ9XCJ3b3Jrc3BhY2VGaWx0ZXJcIlxuICAgICAgICAgIGxhYmVsPXt0KCdmaWx0ZXJzLndvcmtzcGFjZScpfVxuICAgICAgICAgIG9wdGlvbnM9e3dvcmtzcGFjZU9wdGlvbnNUb1Nob3d9XG4gICAgICAgICAgZW1wdHlNZXNzYWdlPXt0KCd1c2Vycy5lbXB0eUZpbHRlck1lc3NhZ2UnKX1cbiAgICAgICAgICBkaXNwYXRjaFNlYXJjaE9uQ2xvc2U9e2ZhbHNlfVxuICAgICAgICAgIG9uTG9hZE1vcmU9e2hhbmRsZVdvcmtzcGFjZXNMb2FkTW9yZX1cbiAgICAgICAgICBoYXNNb3JlUGFnZXM9e2NhbkxvYWRNb3JlV29ya3NwYWNlc31cbiAgICAgICAgICBsb2FkTW9yZUxvYWRpbmc9e3dvcmtzcGFjZXNMb2FkaW5nICYmIHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA+IDB9XG4gICAgICAgICAgb3B0aW9uc0xvYWRpbmc9e3dvcmtzcGFjZXNMb2FkaW5nICYmIHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA9PT0gMH1cbiAgICAgICAgICBsb2FkaW5nTWVzc2FnZT17dCgndXNlcnMubG9hZGluZ1dvcmtzcGFjZXMnKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8RmlsdGVyQ2hpcFxuICAgICAgICBpZD1cInRlYW1GaWx0ZXJcIlxuICAgICAgICBsYWJlbD17dCgnZmlsdGVycy50ZWFtJyl9XG4gICAgICAgIG9wdGlvbnM9e3RlYW1PcHRpb25zfVxuICAgICAgICBlbXB0eU1lc3NhZ2U9e3QoJ3VzZXJzLmVtcHR5RmlsdGVyTWVzc2FnZScpfVxuICAgICAgICBzZWxlY3Rpb25SZXNldEtleT17dGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5fVxuICAgICAgICBvbk9wZW49e2hhbmRsZVRlYW1GaWx0ZXJPcGVufVxuICAgICAgICBvbkxvYWRNb3JlPXtoYW5kbGVUZWFtc0xvYWRNb3JlfVxuICAgICAgICBoYXNNb3JlUGFnZXM9e2NhbkxvYWRNb3JlVGVhbXN9XG4gICAgICAgIGxvYWRNb3JlTG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgZGlzcGF0Y2hTZWFyY2hPbkNsb3NlPXtmYWxzZX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyQ2hpcFxuICAgICAgICBpZD1cInBvc2l0aW9uRmlsdGVyXCJcbiAgICAgICAgbGFiZWw9e3QoJ2ZpbHRlcnMucG9zaXRpb24nKX1cbiAgICAgICAgb3B0aW9ucz17cG9zaXRpb25PcHRpb25zVG9TaG93fVxuICAgICAgICBlbXB0eU1lc3NhZ2U9e3QoJ3VzZXJzLmVtcHR5RmlsdGVyTWVzc2FnZScpfVxuICAgICAgICBkaXNwYXRjaFNlYXJjaE9uQ2xvc2VcbiAgICAgIC8+XG4gICAgPC9MYXlvdXRTZWFyY2hVc2VyPlxuICApXG59KVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFDL0UsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsYUFBYSxRQUFRLDRCQUE0QjtBQUMxRCxTQUFTQyxVQUFVLFFBQVEscUNBQXFDO0FBQ2hFLFNBQVNDLFdBQVcsUUFBUSx5QkFBeUI7QUFDckQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLFlBQVksUUFBUSw0QkFBNEI7QUFDekQsU0FBU0MsTUFBTSxRQUFRLGdDQUFnQztBQUN2RCxTQUFTQyxnQkFBZ0IsUUFBUSxnQ0FBZ0M7QUFDakUsU0FBU0MsNkJBQTZCLFFBQVEsMkNBQTJDO0FBQ3pGLFNBQVNDLDZCQUE2QixRQUFRLDJDQUEyQztBQUFBLFNBQUFDLEdBQUEsSUFBQUMs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
497
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZW1vIiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VUcmFuc2xhdGlvbiIsInVzZVVzZXJzUXVlcnkiLCJGaWx0ZXJDaGlwIiwidXNlR2V0VGVhbXMiLCJ1c2VMb2FkTW9yZUd1YXJkIiwiU0VBUkNIX0VWRU5UIiwiU2VhcmNoIiwiTGF5b3V0U2VhcmNoVXNlciIsInVzZUFzc2lnbmVkV29ya3NwYWNlc0Zyb21Ib3N0IiwiaXNDb3JXb3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQiLCJidWlsZENoaXBMYWJlbE1hcCIsImxvYWRVc2Vyc0ZpbHRlcnMiLCJvcHRpb25MYWJlbEJ5SWQiLCJzYXZlVXNlcnNGaWx0ZXJzIiwiZ2V0RWZmZWN0aXZlVXNlcnNGaWx0ZXJzIiwid3JpdGVVc2Vyc0ZpbHRlcnNUb1VybCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGaWx0ZXJzQ29udGFpbmVyIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VVc2Vyc1F1ZXJ5IiwiaGFuZGxlR2V0VXNlcnMiLCJwb3NpdGlvbnMiLCJfdXNlR2V0VGVhbXMiLCJoYW5kbGVHZXRUZWFtcyIsImxvYWRpbmciLCJlcnJvciIsImRhdGEiLCJjdXJyZW50UGFnZSIsImxhc3RQYWdlIiwiaW5pdGlhbE1lcmdlZCIsIndvcmtzcGFjZXNGZWF0dXJlRW5hYmxlZCIsIl91c2VBc3NpZ25lZFdvcmtzcGFjZSIsIndvcmtzcGFjZXNMaXN0Iiwid29ya3NwYWNlc0xvYWRpbmciLCJoYW5kbGVHZXRXb3Jrc3BhY2VzIiwid29ya3NwYWNlQ3VycmVudFBhZ2UiLCJ3b3Jrc3BhY2VMYXN0UGFnZSIsImNhbkxvYWRNb3JlV29ya3NwYWNlcyIsIl91c2VMb2FkTW9yZUd1YXJkIiwicmVxdWVzdFdvcmtzcGFjZXNMb2FkTW9yZSIsInJlcXVlc3RMb2FkTW9yZSIsIl91c2VTdGF0ZSIsInNlYXJjaElucHV0IiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VhcmNoVGVybVZhbHVlIiwic2V0U2VhcmNoVGVybVZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJ0ZWFtT3B0aW9ucyIsInNldFRlYW1PcHRpb25zIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwb3NpdGlvbk9wdGlvbnMiLCJzZXRQb3NpdGlvbk9wdGlvbnMiLCJkZWZhdWx0UG9zaXRpb25zUmVmIiwiX3VzZVN0YXRlNyIsInNlbGVjdGVkVGVhbXMiLCJfdXNlU3RhdGU4Iiwic2V0U2VsZWN0ZWRUZWFtcyIsIl91c2VTdGF0ZTkiLCJzZWxlY3RlZFBvc2l0aW9ucyIsIl91c2VTdGF0ZTAiLCJzZXRTZWxlY3RlZFBvc2l0aW9ucyIsIl91c2VTdGF0ZTEiLCJzZWxlY3RlZFdvcmtzcGFjZXMiLCJfdXNlU3RhdGUxMCIsInNldFNlbGVjdGVkV29ya3NwYWNlcyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ0ZWFtU2VhcmNoVGVybSIsInNldFRlYW1TZWFyY2hUZXJtIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInBvc2l0aW9uU2VhcmNoVGVybSIsInNldFBvc2l0aW9uU2VhcmNoVGVybSIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJ3b3Jrc3BhY2VTZWFyY2hUZXJtIiwic2V0V29ya3NwYWNlU2VhcmNoVGVybSIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJ0ZWFtRmlsdGVyU2VsZWN0aW9uUmVzZXRLZXkiLCJzZXRUZWFtRmlsdGVyU2VsZWN0aW9uUmVzZXRLZXkiLCJfdXNlU3RhdGUxOSIsIl9pbml0aWFsTWVyZ2VkJGNoaXBMYSIsImNoaXBMYWJlbHMiLCJfdXNlU3RhdGUyMCIsInBlcnNpc3RlZENoaXBMYWJlbHMiLCJzZXRQZXJzaXN0ZWRDaGlwTGFiZWxzIiwid29ya3NwYWNlT3B0aW9ucyIsIm1hcCIsInciLCJfdyRuYW1lIiwiaWQiLCJOdW1iZXIiLCJsYWJlbCIsIlN0cmluZyIsIm5hbWUiLCJjYW5Mb2FkTW9yZVRlYW1zIiwiX3VzZUxvYWRNb3JlR3VhcmQyIiwicmVxdWVzdFRlYW1zTG9hZE1vcmUiLCJidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCIsIl9yZWYiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzZWFyY2hJbnB1dE92ZXJyaWRlIiwidGVhbXNPdmVycmlkZSIsInBvc2l0aW9uc092ZXJyaWRlIiwid29ya3NwYWNlc092ZXJyaWRlIiwicG9zaXRpb25zRmlsdGVyIiwidGVhbXNGaWx0ZXIiLCJ0ZWFtIiwid29ya3NwYWNlc0ZpbHRlciIsIndvcmtzcGFjZUlkcyIsInZhbHVlc1RvRmlsdGVyIiwiX29iamVjdFNwcmVhZCIsInBhZ2UiLCJoYW5kbGVTZWFyY2giLCJldmVudCIsIl9ldmVudCRkZXRhaWwiLCJkZXRhaWwiLCJzZWFyY2hUZXJtIiwidHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImFyZVRlYW1zRXF1YWwiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJ0ZXJtIiwidHJpbSIsInRlYW1MaXN0RmlsdGVyIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImFyZVBvc2l0aW9uc0VxdWFsIiwiYXJlV29ya3NwYWNlc0VxdWFsIiwiayIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX3BlcnNpc3RlZCRzZWxlY3RlZFRlIiwiX3BlcnNpc3RlZCRzZWxlY3RlZFdvIiwicGVyc2lzdGVkIiwidGVhbXNVc2VycyIsIm1hcHBlZCIsIl90ZWFtJG5hbWUiLCJwcmV2IiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJvIiwibmV3T25lcyIsImhhcyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImN1cnJlbnQiLCJoYW5kbGVUZWFtc0xvYWRNb3JlIiwiaGFuZGxlV29ya3NwYWNlc0xvYWRNb3JlIiwicG9zaXRpb25PcHRpb25zVG9TaG93IiwidG9Mb3dlckNhc2UiLCJwb3NXaXRoQ2F0ZWdvcnkiLCJzZWxlY3RlZE9wdHMiLCJwIiwiaW5jbHVkZXMiLCJmaWx0ZXJlZE9wdHMiLCJjYXRlZ29yeU5hbWUiLCJmaWx0ZXJlZElkcyIsInNlbGVjdGVkTm90SW5GaWx0ZXJlZCIsIndvcmtzcGFjZU9wdGlvbnNUb1Nob3ciLCJoYW5kbGVUZWFtRmlsdGVyT3BlbiIsIl9wcmV2JGNoaXBMYWJlbHMiLCJfcHJldiRjaGlwTGFiZWxzMiIsIl9wcmV2JGNoaXBMYWJlbHMzIiwidGVhbXMiLCJ3b3Jrc3BhY2VzIiwicG9zaXRpb25zTWFwIiwicGF5bG9hZCIsIndvcmtzcGFjZUluaXRpYWxTZWxlY3Rpb24iLCJmcm9tU3RvcmFnZSIsIl9yZWYyIiwiX29wdGlvbkxhYmVsQnlJZCIsInRlYW1Jbml0aWFsU2VsZWN0aW9uIiwiX3JlZjMiLCJfb3B0aW9uTGFiZWxCeUlkMiIsInBvc2l0aW9uSW5pdGlhbFNlbGVjdGlvbiIsIl9yZWY0IiwiX29wdGlvbkxhYmVsQnlJZDMiLCJ3b3Jrc3BhY2VGaWx0ZXJDaGlwS2V5IiwiX3dvcmtzcGFjZUluaXRpYWxTZWxlIiwiam9pbiIsIngiLCJ0ZWFtRmlsdGVyQ2hpcEtleSIsIl90ZWFtSW5pdGlhbFNlbGVjdGlvbiIsInBvc2l0aW9uRmlsdGVyQ2hpcEtleSIsIl9wb3NpdGlvbkluaXRpYWxTZWxlYyIsImNoaWxkcmVuIiwiaW5pdGlhbFNlYXJjaCIsIm9wdGlvbnMiLCJlbXB0eU1lc3NhZ2UiLCJkaXNwYXRjaFNlYXJjaE9uQ2xvc2UiLCJvbkxvYWRNb3JlIiwiaGFzTW9yZVBhZ2VzIiwibG9hZE1vcmVMb2FkaW5nIiwib3B0aW9uc0xvYWRpbmciLCJsb2FkaW5nTWVzc2FnZSIsImluaXRpYWxSZXNvbHZlZFNlbGVjdGlvbiIsInNlbGVjdGlvblJlc2V0S2V5Iiwib25PcGVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRhaW5lci9GaWx0ZXJzL0ZpbHRlcnNDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZiwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXJzUXVlcnkgfSBmcm9tICcuLi8uLi9jb250ZXh0L1VzZXJzQ29udGV4dCdcbmltcG9ydCB7IEZpbHRlckNoaXAgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyQ2hpcCdcbmltcG9ydCB7IHVzZUdldFRlYW1zIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlR2V0VGVhbXMnXG5pbXBvcnQgeyB1c2VMb2FkTW9yZUd1YXJkIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlTG9hZE1vcmVHdWFyZCdcbmltcG9ydCB7IFNFQVJDSF9FVkVOVCB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNlYXJjaEV2ZW50J1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9TZWFyY2gvU2VhcmNoJ1xuaW1wb3J0IHsgTGF5b3V0U2VhcmNoVXNlciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dCdcbmltcG9ydCB7IHVzZUFzc2lnbmVkV29ya3NwYWNlc0Zyb21Ib3N0IH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlQXNzaWduZWRXb3Jrc3BhY2VzRnJvbUhvc3QnXG5pbXBvcnQgeyBpc0NvcldvcmtzcGFjZXNGZWF0dXJlRW5hYmxlZCB9IGZyb20gJy4uLy4uL3V0aWxzL2lzQ29yV29ya3NwYWNlc0ZlYXR1cmVFbmFibGVkJ1xuaW1wb3J0IHtcbiAgYnVpbGRDaGlwTGFiZWxNYXAsXG4gIGxvYWRVc2Vyc0ZpbHRlcnMsXG4gIG9wdGlvbkxhYmVsQnlJZCxcbiAgc2F2ZVVzZXJzRmlsdGVycyxcbiAgdHlwZSBDaGlwTGFiZWxzUGVyc2lzdGVkLFxufSBmcm9tICcuLi8uLi91dGlscy9wZW9wbGVGaWx0ZXJzU3RvcmFnZSdcbmltcG9ydCB7IGdldEVmZmVjdGl2ZVVzZXJzRmlsdGVycywgd3JpdGVVc2Vyc0ZpbHRlcnNUb1VybCB9IGZyb20gJy4uLy4uL3V0aWxzL3Blb3BsZUZpbHRlcnNVcmwnXG5cbmV4cG9ydCBjb25zdCBGaWx0ZXJzQ29udGFpbmVyID0gbWVtbygoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ3Blb3BsZScpXG4gIGNvbnN0IHsgaGFuZGxlR2V0VXNlcnMsIHBvc2l0aW9ucyB9ID0gdXNlVXNlcnNRdWVyeSgpXG4gIGNvbnN0IHsgaGFuZGxlR2V0VGVhbXMsIGxvYWRpbmcsIGVycm9yLCBkYXRhLCBjdXJyZW50UGFnZSwgbGFzdFBhZ2UgfSA9IHVzZUdldFRlYW1zKClcblxuICBjb25zdCBpbml0aWFsTWVyZ2VkID0gdXNlTWVtbygoKSA9PiBnZXRFZmZlY3RpdmVVc2Vyc0ZpbHRlcnMoKSwgW10pXG5cbiAgY29uc3Qgd29ya3NwYWNlc0ZlYXR1cmVFbmFibGVkID0gaXNDb3JXb3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQoKVxuICBjb25zdCB7XG4gICAgd29ya3NwYWNlc0xpc3QsXG4gICAgbG9hZGluZzogd29ya3NwYWNlc0xvYWRpbmcsXG4gICAgaGFuZGxlR2V0V29ya3NwYWNlcyxcbiAgICBjdXJyZW50UGFnZTogd29ya3NwYWNlQ3VycmVudFBhZ2UsXG4gICAgbGFzdFBhZ2U6IHdvcmtzcGFjZUxhc3RQYWdlLFxuICB9ID0gdXNlQXNzaWduZWRXb3Jrc3BhY2VzRnJvbUhvc3Qod29ya3NwYWNlc0ZlYXR1cmVFbmFibGVkKVxuXG4gIGNvbnN0IGNhbkxvYWRNb3JlV29ya3NwYWNlcyA9IHdvcmtzcGFjZUN1cnJlbnRQYWdlIDwgd29ya3NwYWNlTGFzdFBhZ2VcbiAgY29uc3QgeyByZXF1ZXN0TG9hZE1vcmU6IHJlcXVlc3RXb3Jrc3BhY2VzTG9hZE1vcmUgfSA9IHVzZUxvYWRNb3JlR3VhcmQod29ya3NwYWNlc0xvYWRpbmcsIGNhbkxvYWRNb3JlV29ya3NwYWNlcylcblxuICBjb25zdCBbc2VhcmNoVGVybVZhbHVlLCBzZXRTZWFyY2hUZXJtVmFsdWVdID0gdXNlU3RhdGUoKCkgPT4gaW5pdGlhbE1lcmdlZC5zZWFyY2hJbnB1dClcbiAgY29uc3QgW3RlYW1PcHRpb25zLCBzZXRUZWFtT3B0aW9uc10gPSB1c2VTdGF0ZTx7IGlkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdPihbXSlcbiAgY29uc3QgW3Bvc2l0aW9uT3B0aW9ucywgc2V0UG9zaXRpb25PcHRpb25zXSA9IHVzZVN0YXRlPHsgaWQ6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10+KHBvc2l0aW9ucyB8fCBbXSlcbiAgY29uc3QgZGVmYXVsdFBvc2l0aW9uc1JlZiA9IHVzZVJlZjx7IGlkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmc7IGNhdGVnb3J5TmFtZT86IHN0cmluZyB9W10+KHBvc2l0aW9ucyB8fCBbXSlcblxuICBjb25zdCBbc2VsZWN0ZWRUZWFtcywgc2V0U2VsZWN0ZWRUZWFtc10gPSB1c2VTdGF0ZTxudW1iZXJbXT4oKCkgPT4gaW5pdGlhbE1lcmdlZC5zZWxlY3RlZFRlYW1zKVxuICBjb25zdCBbc2VsZWN0ZWRQb3NpdGlvbnMsIHNldFNlbGVjdGVkUG9zaXRpb25zXSA9IHVzZVN0YXRlPG51bWJlcltdPigoKSA9PiBpbml0aWFsTWVyZ2VkLnNlbGVjdGVkUG9zaXRpb25zKVxuICBjb25zdCBbc2VsZWN0ZWRXb3Jrc3BhY2VzLCBzZXRTZWxlY3RlZFdvcmtzcGFjZXNdID0gdXNlU3RhdGU8bnVtYmVyW10+KCgpID0+IGluaXRpYWxNZXJnZWQuc2VsZWN0ZWRXb3Jrc3BhY2VzKVxuICBjb25zdCBbdGVhbVNlYXJjaFRlcm0sIHNldFRlYW1TZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbcG9zaXRpb25TZWFyY2hUZXJtLCBzZXRQb3NpdGlvblNlYXJjaFRlcm1dID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFt3b3Jrc3BhY2VTZWFyY2hUZXJtLCBzZXRXb3Jrc3BhY2VTZWFyY2hUZXJtXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbdGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5LCBzZXRUZWFtRmlsdGVyU2VsZWN0aW9uUmVzZXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3BlcnNpc3RlZENoaXBMYWJlbHMsIHNldFBlcnNpc3RlZENoaXBMYWJlbHNdID0gdXNlU3RhdGUoKCkgPT4gaW5pdGlhbE1lcmdlZC5jaGlwTGFiZWxzID8/IHt9KVxuXG4gIGNvbnN0IHdvcmtzcGFjZU9wdGlvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IHdvcmtzcGFjZXNMaXN0Lm1hcCh3ID0+ICh7IGlkOiBOdW1iZXIody5pZCksIGxhYmVsOiBTdHJpbmcody5uYW1lID8/ICcnKSB9KSksXG4gICAgW3dvcmtzcGFjZXNMaXN0XVxuICApXG5cbiAgY29uc3QgY2FuTG9hZE1vcmVUZWFtcyA9IGN1cnJlbnRQYWdlIDwgbGFzdFBhZ2VcbiAgY29uc3QgeyByZXF1ZXN0TG9hZE1vcmU6IHJlcXVlc3RUZWFtc0xvYWRNb3JlIH0gPSB1c2VMb2FkTW9yZUd1YXJkKGxvYWRpbmcsIGNhbkxvYWRNb3JlVGVhbXMpXG5cbiAgY29uc3QgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QgPSAoe1xuICAgIHNlYXJjaElucHV0T3ZlcnJpZGUsXG4gICAgdGVhbXNPdmVycmlkZSxcbiAgICBwb3NpdGlvbnNPdmVycmlkZSxcbiAgICB3b3Jrc3BhY2VzT3ZlcnJpZGUsXG4gIH06IHtcbiAgICBzZWFyY2hJbnB1dE92ZXJyaWRlPzogc3RyaW5nXG4gICAgdGVhbXNPdmVycmlkZT86IG51bWJlcltdXG4gICAgcG9zaXRpb25zT3ZlcnJpZGU/OiBudW1iZXJbXVxuICAgIHdvcmtzcGFjZXNPdmVycmlkZT86IG51bWJlcltdXG4gIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IHBvc2l0aW9uc0ZpbHRlciA9XG4gICAgICBwb3NpdGlvbnNPdmVycmlkZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcG9zaXRpb25zT3ZlcnJpZGUubGVuZ3RoXG4gICAgICAgICAgPyB7IHBvc2l0aW9uczogcG9zaXRpb25zT3ZlcnJpZGUgfVxuICAgICAgICAgIDoge31cbiAgICAgICAgOiBzZWxlY3RlZFBvc2l0aW9ucy5sZW5ndGhcbiAgICAgICAgPyB7IHBvc2l0aW9uczogc2VsZWN0ZWRQb3NpdGlvbnMgfVxuICAgICAgICA6IHt9XG4gICAgY29uc3QgdGVhbXNGaWx0ZXIgPVxuICAgICAgdGVhbXNPdmVycmlkZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGVhbXNPdmVycmlkZS5sZW5ndGhcbiAgICAgICAgICA/IHsgdGVhbTogdGVhbXNPdmVycmlkZSB9XG4gICAgICAgICAgOiB7fVxuICAgICAgICA6IHNlbGVjdGVkVGVhbXMubGVuZ3RoXG4gICAgICAgID8geyB0ZWFtOiBzZWxlY3RlZFRlYW1zIH1cbiAgICAgICAgOiB7fVxuICAgIGNvbnN0IHdvcmtzcGFjZXNGaWx0ZXIgPVxuICAgICAgd29ya3NwYWNlc092ZXJyaWRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB3b3Jrc3BhY2VzT3ZlcnJpZGUubGVuZ3RoXG4gICAgICAgICAgPyB7IHdvcmtzcGFjZUlkczogd29ya3NwYWNlc092ZXJyaWRlIH1cbiAgICAgICAgICA6IHt9XG4gICAgICAgIDogc2VsZWN0ZWRXb3Jrc3BhY2VzLmxlbmd0aFxuICAgICAgICA/IHsgd29ya3NwYWNlSWRzOiBzZWxlY3RlZFdvcmtzcGFjZXMgfVxuICAgICAgICA6IHt9XG4gICAgY29uc3QgdmFsdWVzVG9GaWx0ZXIgPSB7IC4uLnBvc2l0aW9uc0ZpbHRlciwgLi4udGVhbXNGaWx0ZXIsIC4uLndvcmtzcGFjZXNGaWx0ZXIgfVxuXG4gICAgaGFuZGxlR2V0VXNlcnMoe1xuICAgICAgc2VhcmNoSW5wdXQ6IHNlYXJjaElucHV0T3ZlcnJpZGUgIT09IHVuZGVmaW5lZCA/IHNlYXJjaElucHV0T3ZlcnJpZGUgOiBzZWFyY2hUZXJtVmFsdWUsXG4gICAgICBwYWdlOiAxLFxuICAgICAgdmFsdWVzVG9GaWx0ZXI6IHZhbHVlc1RvRmlsdGVyIGFzIGFueSxcbiAgICB9KVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2ggPSAoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHNlYXJjaFRlcm0sIHR5cGUsIHZhbHVlc1RvRmlsdGVyIH0gPSBldmVudC5kZXRhaWxcbiAgICAgIGlmICh0eXBlID09PSAnZmlsdGVyMScpIHtcbiAgICAgICAgc2V0U2VhcmNoVGVybVZhbHVlKHNlYXJjaFRlcm0pXG4gICAgICAgIGJ1aWxkQW5kU2VuZFVzZXJSZXF1ZXN0KHsgc2VhcmNoSW5wdXRPdmVycmlkZTogc2VhcmNoVGVybSB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICd0ZWFtRmlsdGVyJykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXNUb0ZpbHRlcikpIHtcbiAgICAgICAgICBpZiAodmFsdWVzVG9GaWx0ZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBhcmVUZWFtc0VxdWFsID0gdmFsdWVzVG9GaWx0ZXIuZXZlcnkoKHZhbHVlLCBpbmRleDogbnVtYmVyKSA9PiB2YWx1ZSA9PT0gc2VsZWN0ZWRUZWFtc1tpbmRleF0pXG4gICAgICAgICAgICBpZiAoYXJlVGVhbXNFcXVhbCkgcmV0dXJuXG4gICAgICAgICAgICBzZXRTZWxlY3RlZFRlYW1zKHZhbHVlc1RvRmlsdGVyKVxuICAgICAgICAgICAgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QoeyB0ZWFtc092ZXJyaWRlOiB2YWx1ZXNUb0ZpbHRlciB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFRlYW1zKFtdKVxuICAgICAgICAgICAgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QoeyB0ZWFtc092ZXJyaWRlOiBbXSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUZWFtU2VhcmNoVGVybShzZWFyY2hUZXJtID8/ICcnKVxuICAgICAgICAgIGNvbnN0IHRlcm0gPSAoc2VhcmNoVGVybSA/PyAnJykudHJpbSgpXG4gICAgICAgICAgY29uc3QgdGVhbUxpc3RGaWx0ZXI6IHsgbmFtZT86IHN0cmluZzsgd29ya3NwYWNlSWRzPzogbnVtYmVyW10gfSA9IHt9XG4gICAgICAgICAgaWYgKHRlcm0pIHRlYW1MaXN0RmlsdGVyLm5hbWUgPSB0ZXJtXG4gICAgICAgICAgaWYgKHNlbGVjdGVkV29ya3NwYWNlcy5sZW5ndGgpIHRlYW1MaXN0RmlsdGVyLndvcmtzcGFjZUlkcyA9IHNlbGVjdGVkV29ya3NwYWNlc1xuICAgICAgICAgIGhhbmRsZUdldFRlYW1zKHtcbiAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAuLi4oT2JqZWN0LmtleXModGVhbUxpc3RGaWx0ZXIpLmxlbmd0aCA/IHsgZmlsdGVyOiB0ZWFtTGlzdEZpbHRlciB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdwb3NpdGlvbkZpbHRlcicpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzVG9GaWx0ZXIpKSB7XG4gICAgICAgICAgaWYgKCF2YWx1ZXNUb0ZpbHRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUG9zaXRpb25zKFtdKVxuICAgICAgICAgICAgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QoeyBwb3NpdGlvbnNPdmVycmlkZTogW10gfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXJlUG9zaXRpb25zRXF1YWwgPSB2YWx1ZXNUb0ZpbHRlci5ldmVyeSgodmFsdWUsIGluZGV4OiBudW1iZXIpID0+IHZhbHVlID09PSBzZWxlY3RlZFBvc2l0aW9uc1tpbmRleF0pXG4gICAgICAgICAgICBpZiAoYXJlUG9zaXRpb25zRXF1YWwpIHJldHVyblxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRQb3NpdGlvbnModmFsdWVzVG9GaWx0ZXIpXG4gICAgICAgICAgICBidWlsZEFuZFNlbmRVc2VyUmVxdWVzdCh7XG4gICAgICAgICAgICAgIHBvc2l0aW9uc092ZXJyaWRlOiB2YWx1ZXNUb0ZpbHRlcixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFBvc2l0aW9uU2VhcmNoVGVybShzZWFyY2hUZXJtID8/ICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnd29ya3NwYWNlRmlsdGVyJykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXNUb0ZpbHRlcikpIHtcbiAgICAgICAgICBpZiAoIXZhbHVlc1RvRmlsdGVyLmxlbmd0aCkge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRXb3Jrc3BhY2VzKFtdKVxuICAgICAgICAgICAgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QoeyB3b3Jrc3BhY2VzT3ZlcnJpZGU6IFtdIH0pXG4gICAgICAgICAgICBjb25zdCB0ZXJtID0gdGVhbVNlYXJjaFRlcm0udHJpbSgpXG4gICAgICAgICAgICBoYW5kbGVHZXRUZWFtcyh7IHBhZ2U6IDEsIC4uLih0ZXJtID8geyBmaWx0ZXI6IHsgbmFtZTogdGVybSB9IH0gOiB7fSkgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXJlV29ya3NwYWNlc0VxdWFsID0gdmFsdWVzVG9GaWx0ZXIuZXZlcnkoXG4gICAgICAgICAgICAgICh2YWx1ZSwgaW5kZXg6IG51bWJlcikgPT4gdmFsdWUgPT09IHNlbGVjdGVkV29ya3NwYWNlc1tpbmRleF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChhcmVXb3Jrc3BhY2VzRXF1YWwpIHJldHVyblxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRXb3Jrc3BhY2VzKHZhbHVlc1RvRmlsdGVyKVxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRUZWFtcyhbXSlcbiAgICAgICAgICAgIHNldFRlYW1GaWx0ZXJTZWxlY3Rpb25SZXNldEtleShrID0+IGsgKyAxKVxuICAgICAgICAgICAgYnVpbGRBbmRTZW5kVXNlclJlcXVlc3QoeyB3b3Jrc3BhY2VzT3ZlcnJpZGU6IHZhbHVlc1RvRmlsdGVyLCB0ZWFtc092ZXJyaWRlOiBbXSB9KVxuICAgICAgICAgICAgY29uc3QgdGVybSA9IHRlYW1TZWFyY2hUZXJtLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgdGVhbUxpc3RGaWx0ZXI6IHsgbmFtZT86IHN0cmluZzsgd29ya3NwYWNlSWRzOiBudW1iZXJbXSB9ID0ge1xuICAgICAgICAgICAgICB3b3Jrc3BhY2VJZHM6IHZhbHVlc1RvRmlsdGVyLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRlcm0pIHRlYW1MaXN0RmlsdGVyLm5hbWUgPSB0ZXJtXG4gICAgICAgICAgICBoYW5kbGVHZXRUZWFtcyh7IHBhZ2U6IDEsIGZpbHRlcjogdGVhbUxpc3RGaWx0ZXIgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGVybSA9IHNlYXJjaFRlcm0gPz8gJydcbiAgICAgICAgICBzZXRXb3Jrc3BhY2VTZWFyY2hUZXJtKHRlcm0pXG4gICAgICAgICAgaGFuZGxlR2V0V29ya3NwYWNlcyh7XG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgICAgLi4uKHRlcm0udHJpbSgpID8geyBmaWx0ZXI6IHsgbmFtZTogdGVybS50cmltKCkgfSB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihTRUFSQ0hfRVZFTlQsIGhhbmRsZVNlYXJjaCBhcyB1bmtub3duIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFNFQVJDSF9FVkVOVCwgaGFuZGxlU2VhcmNoIGFzIHVua25vd24gYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtcbiAgICBoYW5kbGVHZXRVc2VycyxcbiAgICBoYW5kbGVHZXRUZWFtcyxcbiAgICBoYW5kbGVHZXRXb3Jrc3BhY2VzLFxuICAgIHNlYXJjaFRlcm1WYWx1ZSxcbiAgICBzZWxlY3RlZFRlYW1zLFxuICAgIHNlbGVjdGVkUG9zaXRpb25zLFxuICAgIHNlbGVjdGVkV29ya3NwYWNlcyxcbiAgICB0ZWFtU2VhcmNoVGVybSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghd29ya3NwYWNlc0ZlYXR1cmVFbmFibGVkKSByZXR1cm5cbiAgICBoYW5kbGVHZXRXb3Jrc3BhY2VzKHsgcGFnZTogMSB9KVxuICB9LCBbd29ya3NwYWNlc0ZlYXR1cmVFbmFibGVkLCBoYW5kbGVHZXRXb3Jrc3BhY2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBlcnNpc3RlZCA9IGdldEVmZmVjdGl2ZVVzZXJzRmlsdGVycygpXG4gICAgaWYgKCFwZXJzaXN0ZWQ/LnNlbGVjdGVkVGVhbXM/Lmxlbmd0aCkgcmV0dXJuXG5cbiAgICBjb25zdCB0ZWFtTGlzdEZpbHRlcjogeyBuYW1lPzogc3RyaW5nOyB3b3Jrc3BhY2VJZHM/OiBudW1iZXJbXSB9ID0ge31cbiAgICBpZiAocGVyc2lzdGVkLnNlbGVjdGVkV29ya3NwYWNlcz8ubGVuZ3RoKSB7XG4gICAgICB0ZWFtTGlzdEZpbHRlci53b3Jrc3BhY2VJZHMgPSBwZXJzaXN0ZWQuc2VsZWN0ZWRXb3Jrc3BhY2VzXG4gICAgfVxuICAgIGhhbmRsZUdldFRlYW1zKHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICAuLi4oT2JqZWN0LmtleXModGVhbUxpc3RGaWx0ZXIpLmxlbmd0aCA/IHsgZmlsdGVyOiB0ZWFtTGlzdEZpbHRlciB9IDoge30pLFxuICAgIH0pXG4gIH0sIFtoYW5kbGVHZXRUZWFtc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRhdGE/LnRlYW1zVXNlcnMgfHwgZXJyb3IpIHJldHVyblxuICAgIGNvbnN0IG1hcHBlZCA9IGRhdGEudGVhbXNVc2Vycy5kYXRhLm1hcCgodGVhbTogeyBpZDogbnVtYmVyIHwgc3RyaW5nOyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9KSA9PiAoe1xuICAgICAgaWQ6IE51bWJlcih0ZWFtLmlkKSxcbiAgICAgIGxhYmVsOiBTdHJpbmcodGVhbS5uYW1lID8/ICcnKSxcbiAgICB9KSlcbiAgICBpZiAoZGF0YS50ZWFtc1VzZXJzLnBhZ2UgPT09IDEpIHtcbiAgICAgIHNldFRlYW1PcHRpb25zKG1hcHBlZClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGVhbU9wdGlvbnMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChvID0+IG8uaWQpKVxuICAgICAgICBjb25zdCBuZXdPbmVzID0gbWFwcGVkLmZpbHRlcigobzogeyBpZDogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH0pID0+ICFleGlzdGluZ0lkcy5oYXMoTnVtYmVyKG8uaWQpKSlcbiAgICAgICAgcmV0dXJuIG5ld09uZXMubGVuZ3RoID8gWy4uLnByZXYsIC4uLm5ld09uZXNdIDogcHJldlxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtkYXRhLCBlcnJvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocG9zaXRpb25zKSB7XG4gICAgICBzZXRQb3NpdGlvbk9wdGlvbnMocG9zaXRpb25zKVxuICAgICAgaWYgKHBvc2l0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgZGVmYXVsdFBvc2l0aW9uc1JlZi5jdXJyZW50ID0gcG9zaXRpb25zXG4gICAgICB9XG4gICAgfVxuICB9LCBbcG9zaXRpb25zXSlcblxuICBjb25zdCBoYW5kbGVUZWFtc0xvYWRNb3JlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJlcXVlc3RUZWFtc0xvYWRNb3JlKCgpID0+IHtcbiAgICAgIGNvbnN0IHRlcm0gPSB0ZWFtU2VhcmNoVGVybT8udHJpbSgpXG4gICAgICBjb25zdCB0ZWFtTGlzdEZpbHRlcjogeyBuYW1lPzogc3RyaW5nOyB3b3Jrc3BhY2VJZHM/OiBudW1iZXJbXSB9ID0ge31cbiAgICAgIGlmICh0ZXJtKSB0ZWFtTGlzdEZpbHRlci5uYW1lID0gdGVybVxuICAgICAgaWYgKHNlbGVjdGVkV29ya3NwYWNlcy5sZW5ndGgpIHRlYW1MaXN0RmlsdGVyLndvcmtzcGFjZUlkcyA9IHNlbGVjdGVkV29ya3NwYWNlc1xuICAgICAgaGFuZGxlR2V0VGVhbXMoe1xuICAgICAgICBwYWdlOiBjdXJyZW50UGFnZSArIDEsXG4gICAgICAgIC4uLihPYmplY3Qua2V5cyh0ZWFtTGlzdEZpbHRlcikubGVuZ3RoID8geyBmaWx0ZXI6IHRlYW1MaXN0RmlsdGVyIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH0pXG4gIH0sIFtyZXF1ZXN0VGVhbXNMb2FkTW9yZSwgY3VycmVudFBhZ2UsIHRlYW1TZWFyY2hUZXJtLCBzZWxlY3RlZFdvcmtzcGFjZXMsIGhhbmRsZUdldFRlYW1zXSlcblxuICBjb25zdCBoYW5kbGVXb3Jrc3BhY2VzTG9hZE1vcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmVxdWVzdFdvcmtzcGFjZXNMb2FkTW9yZSgoKSA9PlxuICAgICAgaGFuZGxlR2V0V29ya3NwYWNlcyh7XG4gICAgICAgIHBhZ2U6IHdvcmtzcGFjZUN1cnJlbnRQYWdlICsgMSxcbiAgICAgICAgLi4uKHdvcmtzcGFjZVNlYXJjaFRlcm0/LnRyaW0oKSA/IHsgZmlsdGVyOiB7IG5hbWU6IHdvcmtzcGFjZVNlYXJjaFRlcm0udHJpbSgpIH0gfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbcmVxdWVzdFdvcmtzcGFjZXNMb2FkTW9yZSwgd29ya3NwYWNlQ3VycmVudFBhZ2UsIHdvcmtzcGFjZVNlYXJjaFRlcm0sIGhhbmRsZUdldFdvcmtzcGFjZXNdKVxuXG4gIGNvbnN0IHBvc2l0aW9uT3B0aW9uc1RvU2hvdyA9ICFwb3NpdGlvblNlYXJjaFRlcm0udHJpbSgpXG4gICAgPyBwb3NpdGlvbk9wdGlvbnNcbiAgICA6ICgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm0gPSBwb3NpdGlvblNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgY29uc3QgcG9zV2l0aENhdGVnb3J5ID0gcG9zaXRpb25PcHRpb25zIGFzIHsgaWQ6IG51bWJlcjsgbGFiZWw6IHN0cmluZzsgY2F0ZWdvcnlOYW1lPzogc3RyaW5nIH1bXVxuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdHMgPSBwb3NXaXRoQ2F0ZWdvcnkuZmlsdGVyKHAgPT4gc2VsZWN0ZWRQb3NpdGlvbnMuaW5jbHVkZXMocC5pZCkpXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkT3B0cyA9IHBvc1dpdGhDYXRlZ29yeS5maWx0ZXIoXG4gICAgICAgICAgcCA9PiBwLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkgfHwgKHAuY2F0ZWdvcnlOYW1lICYmIHAuY2F0ZWdvcnlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgZmlsdGVyZWRJZHMgPSBuZXcgU2V0KGZpbHRlcmVkT3B0cy5tYXAobyA9PiBvLmlkKSlcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWROb3RJbkZpbHRlcmVkID0gc2VsZWN0ZWRPcHRzLmZpbHRlcihvID0+ICFmaWx0ZXJlZElkcy5oYXMoby5pZCkpXG4gICAgICAgIHJldHVybiBbLi4uc2VsZWN0ZWROb3RJbkZpbHRlcmVkLCAuLi5maWx0ZXJlZE9wdHNdXG4gICAgICB9KSgpXG5cbiAgY29uc3Qgd29ya3NwYWNlT3B0aW9uc1RvU2hvdyA9ICF3b3Jrc3BhY2VTZWFyY2hUZXJtLnRyaW0oKVxuICAgID8gd29ya3NwYWNlT3B0aW9uc1xuICAgIDogKCgpID0+IHtcbiAgICAgICAgY29uc3QgdGVybSA9IHdvcmtzcGFjZVNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRzID0gd29ya3NwYWNlT3B0aW9ucy5maWx0ZXIocCA9PiBzZWxlY3RlZFdvcmtzcGFjZXMuaW5jbHVkZXMocC5pZCkpXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkT3B0cyA9IHdvcmtzcGFjZU9wdGlvbnMuZmlsdGVyKHAgPT4gcC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKVxuICAgICAgICBjb25zdCBmaWx0ZXJlZElkcyA9IG5ldyBTZXQoZmlsdGVyZWRPcHRzLm1hcChvID0+IG8uaWQpKVxuICAgICAgICBjb25zdCBzZWxlY3RlZE5vdEluRmlsdGVyZWQgPSBzZWxlY3RlZE9wdHMuZmlsdGVyKG8gPT4gIWZpbHRlcmVkSWRzLmhhcyhvLmlkKSlcbiAgICAgICAgcmV0dXJuIFsuLi5zZWxlY3RlZE5vdEluRmlsdGVyZWQsIC4uLmZpbHRlcmVkT3B0c11cbiAgICAgIH0pKClcblxuICBjb25zdCBoYW5kbGVUZWFtRmlsdGVyT3BlbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0ZXJtID0gdGVhbVNlYXJjaFRlcm0udHJpbSgpXG4gICAgY29uc3QgdGVhbUxpc3RGaWx0ZXI6IHsgbmFtZT86IHN0cmluZzsgd29ya3NwYWNlSWRzPzogbnVtYmVyW10gfSA9IHt9XG4gICAgaWYgKHRlcm0pIHRlYW1MaXN0RmlsdGVyLm5hbWUgPSB0ZXJtXG4gICAgaWYgKHNlbGVjdGVkV29ya3NwYWNlcy5sZW5ndGgpIHRlYW1MaXN0RmlsdGVyLndvcmtzcGFjZUlkcyA9IHNlbGVjdGVkV29ya3NwYWNlc1xuICAgIGhhbmRsZUdldFRlYW1zKHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICAuLi4oT2JqZWN0LmtleXModGVhbUxpc3RGaWx0ZXIpLmxlbmd0aCA/IHsgZmlsdGVyOiB0ZWFtTGlzdEZpbHRlciB9IDoge30pLFxuICAgIH0pXG4gIH0sIFt0ZWFtU2VhcmNoVGVybSwgc2VsZWN0ZWRXb3Jrc3BhY2VzLCBoYW5kbGVHZXRUZWFtc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcmV2ID0gbG9hZFVzZXJzRmlsdGVycygpXG4gICAgY29uc3QgY2hpcExhYmVsczogQ2hpcExhYmVsc1BlcnNpc3RlZCA9IHt9XG4gICAgY29uc3QgdGVhbXMgPSBidWlsZENoaXBMYWJlbE1hcChzZWxlY3RlZFRlYW1zLCB0ZWFtT3B0aW9ucywgcHJldj8uY2hpcExhYmVscz8udGVhbXMpXG4gICAgY29uc3Qgd29ya3NwYWNlcyA9IGJ1aWxkQ2hpcExhYmVsTWFwKHNlbGVjdGVkV29ya3NwYWNlcywgd29ya3NwYWNlT3B0aW9ucywgcHJldj8uY2hpcExhYmVscz8ud29ya3NwYWNlcylcbiAgICBjb25zdCBwb3NpdGlvbnNNYXAgPSBidWlsZENoaXBMYWJlbE1hcChzZWxlY3RlZFBvc2l0aW9ucywgcG9zaXRpb25PcHRpb25zLCBwcmV2Py5jaGlwTGFiZWxzPy5wb3NpdGlvbnMpXG4gICAgaWYgKHRlYW1zKSBjaGlwTGFiZWxzLnRlYW1zID0gdGVhbXNcbiAgICBpZiAod29ya3NwYWNlcykgY2hpcExhYmVscy53b3Jrc3BhY2VzID0gd29ya3NwYWNlc1xuICAgIGlmIChwb3NpdGlvbnNNYXApIGNoaXBMYWJlbHMucG9zaXRpb25zID0gcG9zaXRpb25zTWFwXG5cbiAgICBzZXRQZXJzaXN0ZWRDaGlwTGFiZWxzKGNoaXBMYWJlbHMpXG5cbiAgICBjb25zdCBwYXlsb2FkOiBQYXJhbWV0ZXJzPHR5cGVvZiBzYXZlVXNlcnNGaWx0ZXJzPlswXSA9IHtcbiAgICAgIHNlYXJjaElucHV0OiBzZWFyY2hUZXJtVmFsdWUsXG4gICAgICBzZWxlY3RlZFRlYW1zLFxuICAgICAgc2VsZWN0ZWRQb3NpdGlvbnMsXG4gICAgICBzZWxlY3RlZFdvcmtzcGFjZXMsXG4gICAgICAuLi4oT2JqZWN0LmtleXMoY2hpcExhYmVscykubGVuZ3RoID8geyBjaGlwTGFiZWxzIH0gOiB7fSksXG4gICAgfVxuICAgIHNhdmVVc2Vyc0ZpbHRlcnMocGF5bG9hZClcbiAgICB3cml0ZVVzZXJzRmlsdGVyc1RvVXJsKHBheWxvYWQpXG4gIH0sIFtcbiAgICBzZWFyY2hUZXJtVmFsdWUsXG4gICAgc2VsZWN0ZWRUZWFtcyxcbiAgICBzZWxlY3RlZFBvc2l0aW9ucyxcbiAgICBzZWxlY3RlZFdvcmtzcGFjZXMsXG4gICAgdGVhbU9wdGlvbnMsXG4gICAgd29ya3NwYWNlT3B0aW9ucyxcbiAgICBwb3NpdGlvbk9wdGlvbnMsXG4gIF0pXG5cbiAgY29uc3Qgd29ya3NwYWNlSW5pdGlhbFNlbGVjdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2VsZWN0ZWRXb3Jrc3BhY2VzLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGZyb21TdG9yYWdlID0gcGVyc2lzdGVkQ2hpcExhYmVscz8ud29ya3NwYWNlc1xuICAgIHJldHVybiBzZWxlY3RlZFdvcmtzcGFjZXMubWFwKGlkID0+ICh7XG4gICAgICBpZCxcbiAgICAgIGxhYmVsOiBvcHRpb25MYWJlbEJ5SWQoaWQsIHdvcmtzcGFjZU9wdGlvbnMpID8/IGZyb21TdG9yYWdlPy5bU3RyaW5nKGlkKV0gPz8gYCMke2lkfWAsXG4gICAgfSkpXG4gIH0sIFtzZWxlY3RlZFdvcmtzcGFjZXMsIHdvcmtzcGFjZU9wdGlvbnMsIHBlcnNpc3RlZENoaXBMYWJlbHNdKVxuXG4gIGNvbnN0IHRlYW1Jbml0aWFsU2VsZWN0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFRlYW1zLmxlbmd0aCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGZyb21TdG9yYWdlID0gcGVyc2lzdGVkQ2hpcExhYmVscz8udGVhbXNcbiAgICByZXR1cm4gc2VsZWN0ZWRUZWFtcy5tYXAoaWQgPT4gKHtcbiAgICAgIGlkLFxuICAgICAgbGFiZWw6IG9wdGlvbkxhYmVsQnlJZChpZCwgdGVhbU9wdGlvbnMpID8/IGZyb21TdG9yYWdlPy5bU3RyaW5nKGlkKV0gPz8gYCMke2lkfWAsXG4gICAgfSkpXG4gIH0sIFtzZWxlY3RlZFRlYW1zLCB0ZWFtT3B0aW9ucywgcGVyc2lzdGVkQ2hpcExhYmVsc10pXG5cbiAgY29uc3QgcG9zaXRpb25Jbml0aWFsU2VsZWN0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZFBvc2l0aW9ucy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBmcm9tU3RvcmFnZSA9IHBlcnNpc3RlZENoaXBMYWJlbHM/LnBvc2l0aW9uc1xuICAgIHJldHVybiBzZWxlY3RlZFBvc2l0aW9ucy5tYXAoaWQgPT4gKHtcbiAgICAgIGlkLFxuICAgICAgbGFiZWw6IG9wdGlvbkxhYmVsQnlJZChpZCwgcG9zaXRpb25PcHRpb25zKSA/PyBmcm9tU3RvcmFnZT8uW1N0cmluZyhpZCldID8/IGAjJHtpZH1gLFxuICAgIH0pKVxuICB9LCBbc2VsZWN0ZWRQb3NpdGlvbnMsIHBvc2l0aW9uT3B0aW9ucywgcGVyc2lzdGVkQ2hpcExhYmVsc10pXG5cbiAgY29uc3Qgd29ya3NwYWNlRmlsdGVyQ2hpcEtleSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGB3cy0ke3NlbGVjdGVkV29ya3NwYWNlcy5qb2luKCctJyl9XyR7d29ya3NwYWNlSW5pdGlhbFNlbGVjdGlvbj8ubWFwKHggPT4gYCR7eC5pZH06JHt4LmxhYmVsfWApLmpvaW4oJ3wnKSA/PyAnJ31gLFxuICAgIFtzZWxlY3RlZFdvcmtzcGFjZXMsIHdvcmtzcGFjZUluaXRpYWxTZWxlY3Rpb25dXG4gIClcblxuICBjb25zdCB0ZWFtRmlsdGVyQ2hpcEtleSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYHRtLSR7c2VsZWN0ZWRUZWFtcy5qb2luKCctJyl9XyR7dGVhbUluaXRpYWxTZWxlY3Rpb24/Lm1hcCh4ID0+IGAke3guaWR9OiR7eC5sYWJlbH1gKS5qb2luKCd8JykgPz8gJyd9YCxcbiAgICBbc2VsZWN0ZWRUZWFtcywgdGVhbUluaXRpYWxTZWxlY3Rpb25dXG4gIClcblxuICBjb25zdCBwb3NpdGlvbkZpbHRlckNoaXBLZXkgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBgcG9zLSR7c2VsZWN0ZWRQb3NpdGlvbnMuam9pbignLScpfV8ke3Bvc2l0aW9uSW5pdGlhbFNlbGVjdGlvbj8ubWFwKHggPT4gYCR7eC5pZH06JHt4LmxhYmVsfWApLmpvaW4oJ3wnKSA/PyAnJ31gLFxuICAgIFtzZWxlY3RlZFBvc2l0aW9ucywgcG9zaXRpb25Jbml0aWFsU2VsZWN0aW9uXVxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0U2VhcmNoVXNlcj5cbiAgICAgIDxTZWFyY2ggaW5pdGlhbFNlYXJjaD17aW5pdGlhbE1lcmdlZC5zZWFyY2hJbnB1dH0gLz5cbiAgICAgIHt3b3Jrc3BhY2VzRmVhdHVyZUVuYWJsZWQgJiYgKFxuICAgICAgICA8RmlsdGVyQ2hpcFxuICAgICAgICAgIGtleT17d29ya3NwYWNlRmlsdGVyQ2hpcEtleX1cbiAgICAgICAgICBpZD1cIndvcmtzcGFjZUZpbHRlclwiXG4gICAgICAgICAgbGFiZWw9e3QoJ2ZpbHRlcnMud29ya3NwYWNlJyl9XG4gICAgICAgICAgb3B0aW9ucz17d29ya3NwYWNlT3B0aW9uc1RvU2hvd31cbiAgICAgICAgICBlbXB0eU1lc3NhZ2U9e3QoJ3VzZXJzLmVtcHR5RmlsdGVyTWVzc2FnZScpfVxuICAgICAgICAgIGRpc3BhdGNoU2VhcmNoT25DbG9zZT17ZmFsc2V9XG4gICAgICAgICAgb25Mb2FkTW9yZT17aGFuZGxlV29ya3NwYWNlc0xvYWRNb3JlfVxuICAgICAgICAgIGhhc01vcmVQYWdlcz17Y2FuTG9hZE1vcmVXb3Jrc3BhY2VzfVxuICAgICAgICAgIGxvYWRNb3JlTG9hZGluZz17d29ya3NwYWNlc0xvYWRpbmcgJiYgd29ya3NwYWNlc0xpc3QubGVuZ3RoID4gMH1cbiAgICAgICAgICBvcHRpb25zTG9hZGluZz17d29ya3NwYWNlc0xvYWRpbmcgJiYgd29ya3NwYWNlc0xpc3QubGVuZ3RoID09PSAwfVxuICAgICAgICAgIGxvYWRpbmdNZXNzYWdlPXt0KCd1c2Vycy5sb2FkaW5nV29ya3NwYWNlcycpfVxuICAgICAgICAgIGluaXRpYWxSZXNvbHZlZFNlbGVjdGlvbj17d29ya3NwYWNlSW5pdGlhbFNlbGVjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8RmlsdGVyQ2hpcFxuICAgICAgICBrZXk9e3RlYW1GaWx0ZXJDaGlwS2V5fVxuICAgICAgICBpZD1cInRlYW1GaWx0ZXJcIlxuICAgICAgICBsYWJlbD17dCgnZmlsdGVycy50ZWFtJyl9XG4gICAgICAgIG9wdGlvbnM9e3RlYW1PcHRpb25zfVxuICAgICAgICBlbXB0eU1lc3NhZ2U9e3QoJ3VzZXJzLmVtcHR5RmlsdGVyTWVzc2FnZScpfVxuICAgICAgICBzZWxlY3Rpb25SZXNldEtleT17dGVhbUZpbHRlclNlbGVjdGlvblJlc2V0S2V5fVxuICAgICAgICBvbk9wZW49e2hhbmRsZVRlYW1GaWx0ZXJPcGVufVxuICAgICAgICBvbkxvYWRNb3JlPXtoYW5kbGVUZWFtc0xvYWRNb3JlfVxuICAgICAgICBoYXNNb3JlUGFnZXM9e2NhbkxvYWRNb3JlVGVhbXN9XG4gICAgICAgIGxvYWRNb3JlTG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgZGlzcGF0Y2hTZWFyY2hPbkNsb3NlPXtmYWxzZX1cbiAgICAgICAgaW5pdGlhbFJlc29sdmVkU2VsZWN0aW9uPXt0ZWFtSW5pdGlhbFNlbGVjdGlvbn1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyQ2hpcFxuICAgICAgICBrZXk9e3Bvc2l0aW9uRmlsdGVyQ2hpcEtleX1cbiAgICAgICAgaWQ9XCJwb3NpdGlvbkZpbHRlclwiXG4gICAgICAgIGxhYmVsPXt0KCdmaWx0ZXJzLnBvc2l0aW9uJyl9XG4gICAgICAgIG9wdGlvbnM9e3Bvc2l0aW9uT3B0aW9uc1RvU2hvd31cbiAgICAgICAgZW1wdHlNZXNzYWdlPXt0KCd1c2Vycy5lbXB0eUZpbHRlck1lc3NhZ2UnKX1cbiAgICAgICAgZGlzcGF0Y2hTZWFyY2hPbkNsb3NlXG4gICAgICAgIGluaXRpYWxSZXNvbHZlZFNlbGVjdGlvbj17cG9zaXRpb25Jbml0aWFsU2VsZWN0aW9ufVxuICAgICAgLz5cbiAgICA8L0xheW91dFNlYXJjaFVzZXI+XG4gIClcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLElBQUksRUFBRUMsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUMvRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxhQUFhLFFBQVEsNEJBQTRCO0FBQzFELFNBQVNDLFVBQVUsUUFBUSxxQ0FBcUM7QUFDaEUsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUNyRCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsWUFBWSxRQUFRLDRCQUE0QjtBQUN6RCxTQUFTQyxNQUFNLFFBQVEsZ0NBQWdDO0FBQ3ZELFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFTQyw2QkFBNkIsUUFBUSwyQ0FBMkM7QUFDekYsU0FBU0MsNkJBQTZCLFFBQVEsMkNBQTJDO0FBQ3pGLFNBQ0VDLGlCQUFpQixFQUNqQkMsZ0JBQWdCLEVBQ2hCQyxlQUFlLEVBQ2ZDLGdCQUFnQixRQUVYLGtDQUFrQztBQUN6QyxTQUFTQyx3QkFBd0IsRUFBRUMsc0JBQXNCLFFBQVEsOEJBQThCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUUvRixPQUFP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