@projectcor/people-microfront 1.0.2-2 → 1.0.2-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/App.js +1 -43
- package/lib/App.stories.js +25 -2
- package/lib/components/DeleteTeamModal/DeleteTeamModal.js +36 -24
- package/lib/components/DeleteTeamModal/DeleteTeamModal.styles.js +18 -6
- package/lib/components/DeleteTeamModal/DeleteTeamModal.types.js +1 -1
- package/lib/components/DeletedUserIcon/DeletedUserIcon.styles.js +2 -2
- package/lib/components/DisabledUserIcon/DisabledUserIcon.styles.js +2 -2
- package/lib/components/EmptyStateTeams/EmptyStateTeams.js +2 -2
- package/lib/components/EmptyUser/EmptyUser.js +7 -48
- package/lib/components/EmptyUser/EmptyUser.styles.js +18 -0
- package/lib/components/Filters/FilterChip/FilterChip.js +12 -9
- package/lib/components/Filters/FilterChip/FilterChip.styles.js +6 -0
- package/lib/components/HeaderTeams/HeaderTeams.js +2 -2
- package/lib/components/Illustration/EmptyFilter.js +67 -0
- package/lib/components/Layout/Layout.js +23 -2
- package/lib/components/Layout/Layout.styles.js +16 -1
- package/lib/components/Layout/index.js +2 -3
- package/lib/components/MenuOptions/MenuOptions.js +4 -18
- package/lib/components/ModalBloquedUser/ModalBloquedUser.js +5 -28
- package/lib/components/ModalBloquedUser/ModalBloquedUser.styles.js +14 -0
- package/lib/components/ModalEditUserPosition/ModalEditUserPosition.js +17 -52
- package/lib/components/ModalEditUserPosition/ModalEditUserPosition.styles.js +36 -0
- package/lib/components/ModalEditUserPosition/UserEditPositionRow.js +28 -105
- package/lib/components/ModalEditUserPosition/UserEditPositionRow.styles.js +55 -1
- package/lib/components/ModalOptionsWithSearch/ModalOptionsWithSearch.js +11 -4
- package/lib/components/ModalOptionsWithSearch/ModalOptionsWithSearch.styles.js +5 -1
- package/lib/components/Pagination/Pagination.styles.js +5 -1
- package/lib/components/Pagination/PaginationView.js +80 -0
- package/lib/components/Search/Search.js +4 -4
- package/lib/components/Table/Header/HeaderTable.js +5 -21
- package/lib/components/Table/Header/HeaderTable.styles.js +14 -0
- package/lib/components/Table/Row/Row.js +61 -21
- package/lib/components/Table/Row/Row.styles.js +33 -9
- package/lib/components/Table/TeamRow/AddMemberModal/AddMemberModal.js +65 -0
- package/lib/components/Table/TeamRow/AddMemberModal/AddMemberModal.styles.js +38 -0
- package/lib/components/Table/TeamRow/AddMemberModal/index.js +2 -0
- package/lib/components/Table/TeamRow/AddUsers/AddUsers.js +185 -0
- package/lib/components/Table/TeamRow/AddUsers/AddUsers.styles.js +25 -0
- package/lib/components/Table/TeamRow/AddUsers/index.js +2 -0
- package/lib/components/Table/TeamRow/RemoveMemberModal/RemoveMemberModal.js +65 -0
- package/lib/components/Table/TeamRow/RemoveMemberModal/RemoveMemberModal.styles.js +38 -0
- package/lib/components/Table/TeamRow/RemoveMemberModal/index.js +2 -0
- package/lib/components/Table/TeamRow/TeamRow.js +76 -63
- package/lib/components/Table/TeamRow/TeamRow.styles.js +6 -0
- package/lib/components/Table/TeamRow/UsersRow/UsersRow.js +191 -0
- package/lib/components/Table/TeamRow/UsersRow/UsersRow.styles.js +40 -0
- package/lib/components/Table/TeamRow/UsersRow/index.js +2 -0
- package/lib/components/TeamDetailsModal/MembersSelect.js +104 -31
- package/lib/components/TeamDetailsModal/TeamDetailsModal.js +73 -77
- package/lib/components/TeamDetailsModal/TeamDetailsModal.styles.js +19 -11
- package/lib/components/TeamDetailsModal/TeamDetailsModal.types.js +1 -1
- package/lib/components/TeamDetailsModal/index.js +1 -1
- package/lib/components/UserRow/UserRow.js +17 -66
- package/lib/components/UserRow/UserRow.styles.js +30 -2
- package/lib/container/Body/BodyContainer.js +3 -8
- package/lib/container/Body/BodyContainerViewTeams.js +72 -98
- package/lib/container/Filters/FiltersContainer.js +44 -16
- package/lib/container/MainView/MainTeamsView.js +36 -0
- package/lib/container/MainView/MainUsersView.js +51 -81
- package/lib/container/MainView/MainUsersView.styles.js +32 -0
- package/lib/container/MainView/MainView.js +21 -41
- package/lib/container/Pagination/PaginationContainer.js +10 -123
- package/lib/container/Pagination/PaginationTeamsContainer.js +32 -0
- package/lib/container/RouterComponent/RouterComponent.js +20 -31
- package/lib/container/RouterComponent/RouterComponent.stories.js +1 -3
- package/lib/container/RouterComponent/RouterComponent.styles.js +26 -0
- package/lib/container/TableContainer/TableContainer.js +17 -9
- package/lib/context/TeamsContext.js +5 -2
- package/lib/context/UsersContext.js +77 -22
- package/lib/hooks/useAbortController.js +15 -11
- package/lib/hooks/useAssignUserToTeam.js +78 -0
- package/lib/hooks/useCreateTeams.js +67 -0
- package/lib/hooks/useDeleteTeam.js +67 -0
- package/lib/hooks/useGetTeams.js +8 -4
- package/lib/hooks/useGetTotalPositions.js +24 -0
- package/lib/hooks/useGetTotalTeams.js +24 -0
- package/lib/hooks/useGetUsers.js +25 -8
- package/lib/hooks/useGetUsersForFilter.js +1 -2
- package/lib/hooks/useGraphAdapter.js +19 -8
- package/lib/hooks/useResize.js +9 -4
- package/lib/hooks/useUnassignUserFromTeam.js +67 -0
- package/lib/hooks/useUpdateTeam.js +65 -0
- package/lib/lang/i18nextForWeb.js +2 -2
- package/lib/lang/translation/br.json +21 -4
- package/lib/lang/translation/en.json +58 -41
- package/lib/lang/translation/es.json +21 -4
- package/lib/lang/translation/fr.json +86 -69
- package/lib/mocks/mockedUser.js +7 -1
- package/lib/query/assignUserToTeam.js +5 -0
- package/lib/query/createTeam.js +5 -0
- package/lib/query/deleteTeam.js +5 -0
- package/lib/query/getTeams.js +2 -2
- package/lib/query/getTotalPositions.js +5 -0
- package/lib/query/getTotalTeams.js +5 -0
- package/lib/query/getUsers.js +2 -2
- package/lib/query/unassignUserFromTeam.js +5 -0
- package/lib/query/updateTeam.js +5 -0
- package/lib/types/global.d.js +1 -1
- package/package.json +2 -2
|
@@ -1,49 +1,121 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
-
import { useState,
|
|
3
|
+
import { useState, useEffect, useRef, useCallback } from 'react';
|
|
4
4
|
import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
|
|
5
5
|
import { CUSelect } from '@projectcor/selector/lib/components/CUSelect';
|
|
6
6
|
import { SearchComponent } from '../Filters/SearchComponent/SearchComponent';
|
|
7
|
+
import { useGetUsers } from '../../hooks/useGetUsers';
|
|
8
|
+
import { useDebounce } from '../../hooks/useDebounce';
|
|
7
9
|
import { SCBackdropInputSelect, SCCUItemsList, SCCUSelectItem, SCWrapperSelectIcon, SCMemberItemContent, SCMemberCheckbox, SCMemberSearchWrapper } from './TeamDetailsModal.styles';
|
|
8
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
11
|
export var MembersSelect = function MembersSelect(_ref) {
|
|
10
12
|
var value = _ref.value,
|
|
11
|
-
membersList = _ref.membersList,
|
|
12
13
|
onChange = _ref.onChange;
|
|
13
14
|
var _useState = useState(false),
|
|
14
15
|
_useState2 = _slicedToArray(_useState, 2),
|
|
15
16
|
showSelectMembers = _useState2[0],
|
|
16
17
|
setShowSelectMembers = _useState2[1];
|
|
18
|
+
var _useGetUsers = useGetUsers(),
|
|
19
|
+
handleGetUsers = _useGetUsers.handleGetUsers,
|
|
20
|
+
users = _useGetUsers.users,
|
|
21
|
+
currentPage = _useGetUsers.currentPage,
|
|
22
|
+
totalPages = _useGetUsers.totalPages,
|
|
23
|
+
loading = _useGetUsers.loading;
|
|
17
24
|
var _useState3 = useState(''),
|
|
18
25
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
19
26
|
searchValue = _useState4[0],
|
|
20
27
|
setSearchValue = _useState4[1];
|
|
28
|
+
var debouncedSearchValue = useDebounce(searchValue, 300);
|
|
29
|
+
var _useState5 = useState([]),
|
|
30
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
31
|
+
accumulatedUsers = _useState6[0],
|
|
32
|
+
setAccumulatedUsers = _useState6[1];
|
|
33
|
+
var scrollContainerRef = useRef(null);
|
|
34
|
+
var isLoadingMoreRef = useRef(false);
|
|
21
35
|
var handleSelectMember = function handleSelectMember(member) {
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return m !==
|
|
28
|
-
});
|
|
29
|
-
onChange(updatedMembers.join(' - '));
|
|
36
|
+
var alredySelected = value.some(function (m) {
|
|
37
|
+
return m.id === member.id;
|
|
38
|
+
});
|
|
39
|
+
if (alredySelected) {
|
|
40
|
+
onChange('members', value.filter(function (m) {
|
|
41
|
+
return m.id !== member.id;
|
|
42
|
+
}));
|
|
30
43
|
} else {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
44
|
+
onChange('members', [].concat(_toConsumableArray(value), [{
|
|
45
|
+
id: member.id,
|
|
46
|
+
name: "".concat(member.firstName, " ").concat(member.lastName)
|
|
47
|
+
}]));
|
|
34
48
|
}
|
|
35
|
-
// No cerrar el selector para permitir selección múltiple
|
|
36
49
|
};
|
|
37
50
|
var handleSearch = function handleSearch(e) {
|
|
38
51
|
setSearchValue(e.target.value);
|
|
39
52
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
53
|
+
|
|
54
|
+
// Resetear usuarios acumulados cuando cambia el search o se abre el selector
|
|
55
|
+
useEffect(function () {
|
|
56
|
+
if (showSelectMembers) {
|
|
57
|
+
setAccumulatedUsers([]);
|
|
58
|
+
isLoadingMoreRef.current = false;
|
|
59
|
+
handleGetUsers({
|
|
60
|
+
page: 1,
|
|
61
|
+
searchInput: debouncedSearchValue
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}, [debouncedSearchValue, showSelectMembers, handleGetUsers]);
|
|
65
|
+
|
|
66
|
+
// Acumular usuarios cuando se reciben nuevos datos
|
|
67
|
+
useEffect(function () {
|
|
68
|
+
if (users.length > 0 && showSelectMembers) {
|
|
69
|
+
if (currentPage === 1) {
|
|
70
|
+
// Si es la primera página, reemplazar
|
|
71
|
+
setAccumulatedUsers(users);
|
|
72
|
+
} else {
|
|
73
|
+
// Si es una página posterior, agregar a los existentes
|
|
74
|
+
setAccumulatedUsers(function (prev) {
|
|
75
|
+
// Evitar duplicados
|
|
76
|
+
var existingIds = new Set(prev.map(function (u) {
|
|
77
|
+
return u.id;
|
|
78
|
+
}));
|
|
79
|
+
var newUsers = users.filter(function (u) {
|
|
80
|
+
return !existingIds.has(u.id);
|
|
81
|
+
});
|
|
82
|
+
return [].concat(_toConsumableArray(prev), _toConsumableArray(newUsers));
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
isLoadingMoreRef.current = false;
|
|
86
|
+
}
|
|
87
|
+
}, [users, currentPage, showSelectMembers]);
|
|
88
|
+
var handleScroll = useCallback(function () {
|
|
89
|
+
var container = scrollContainerRef.current;
|
|
90
|
+
if (!container || loading || isLoadingMoreRef.current) return;
|
|
91
|
+
var scrollTop = container.scrollTop,
|
|
92
|
+
scrollHeight = container.scrollHeight,
|
|
93
|
+
clientHeight = container.clientHeight;
|
|
94
|
+
var isNearBottom = scrollTop + clientHeight >= scrollHeight - 10; // 10px de margen
|
|
95
|
+
|
|
96
|
+
if (isNearBottom && currentPage < totalPages) {
|
|
97
|
+
isLoadingMoreRef.current = true;
|
|
98
|
+
handleGetUsers({
|
|
99
|
+
page: currentPage + 1,
|
|
100
|
+
searchInput: debouncedSearchValue
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}, [currentPage, totalPages, loading, handleGetUsers, debouncedSearchValue]);
|
|
104
|
+
useEffect(function () {
|
|
105
|
+
var container = scrollContainerRef.current;
|
|
106
|
+
if (!container || !showSelectMembers) return undefined;
|
|
107
|
+
container.addEventListener('scroll', handleScroll);
|
|
108
|
+
return function () {
|
|
109
|
+
container.removeEventListener('scroll', handleScroll);
|
|
110
|
+
};
|
|
111
|
+
}, [handleScroll, showSelectMembers]);
|
|
112
|
+
var handleClickActionSelect = function handleClickActionSelect() {
|
|
113
|
+
setShowSelectMembers(!showSelectMembers);
|
|
114
|
+
if (!showSelectMembers) {
|
|
115
|
+
setSearchValue('');
|
|
116
|
+
setAccumulatedUsers([]);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
47
119
|
return /*#__PURE__*/_jsxs(CUSelect, {
|
|
48
120
|
title: "Agregar miembros *",
|
|
49
121
|
placeholder: "Seleccionar miembros",
|
|
@@ -55,33 +127,34 @@ export var MembersSelect = function MembersSelect(_ref) {
|
|
|
55
127
|
color: "#20201F"
|
|
56
128
|
})
|
|
57
129
|
}),
|
|
58
|
-
value: value
|
|
130
|
+
value: value.map(function (member) {
|
|
131
|
+
return member.name;
|
|
132
|
+
}).join(' - '),
|
|
59
133
|
open: showSelectMembers,
|
|
60
|
-
handleClickAction:
|
|
61
|
-
return setShowSelectMembers(!showSelectMembers);
|
|
62
|
-
},
|
|
134
|
+
handleClickAction: handleClickActionSelect,
|
|
63
135
|
children: [/*#__PURE__*/_jsx(SCBackdropInputSelect, {
|
|
64
136
|
onClick: function onClick() {
|
|
65
137
|
return setShowSelectMembers(false);
|
|
66
138
|
}
|
|
67
139
|
}), /*#__PURE__*/_jsxs(SCCUItemsList, {
|
|
140
|
+
ref: scrollContainerRef,
|
|
68
141
|
children: [/*#__PURE__*/_jsx(SCMemberSearchWrapper, {
|
|
69
142
|
children: /*#__PURE__*/_jsx(SearchComponent, {
|
|
70
143
|
placeholder: "Buscar miembro",
|
|
71
144
|
onChange: handleSearch,
|
|
72
145
|
value: searchValue
|
|
73
146
|
})
|
|
74
|
-
}),
|
|
147
|
+
}), accumulatedUsers.map(function (member) {
|
|
75
148
|
var memberName = "".concat(member.firstName, " ").concat(member.lastName);
|
|
76
|
-
var isSelected = (value === null || value === void 0 ? void 0 : value.
|
|
149
|
+
var isSelected = (value === null || value === void 0 ? void 0 : value.some(function (m) {
|
|
150
|
+
return m.id === member.id;
|
|
151
|
+
})) || false;
|
|
77
152
|
return /*#__PURE__*/_jsx(SCCUSelectItem, {
|
|
78
153
|
onClick: function onClick(e) {
|
|
79
154
|
e.stopPropagation();
|
|
80
155
|
handleSelectMember(member);
|
|
81
156
|
},
|
|
82
|
-
|
|
83
|
-
backgroundColor: isSelected ? '#edfaff' : 'transparent'
|
|
84
|
-
},
|
|
157
|
+
isSelected: isSelected,
|
|
85
158
|
children: /*#__PURE__*/_jsxs(SCMemberItemContent, {
|
|
86
159
|
children: [/*#__PURE__*/_jsx("span", {
|
|
87
160
|
children: memberName
|
|
@@ -100,4 +173,4 @@ export var MembersSelect = function MembersSelect(_ref) {
|
|
|
100
173
|
})]
|
|
101
174
|
});
|
|
102
175
|
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJDaGV2cm9uRG93biIsIkNVU2VsZWN0IiwiU2VhcmNoQ29tcG9uZW50IiwiU0NCYWNrZHJvcElucHV0U2VsZWN0IiwiU0NDVUl0ZW1zTGlzdCIsIlNDQ1VTZWxlY3RJdGVtIiwiU0NXcmFwcGVyU2VsZWN0SWNvbiIsIlNDTWVtYmVySXRlbUNvbnRlbnQiLCJTQ01lbWJlckNoZWNrYm94IiwiU0NNZW1iZXJTZWFyY2hXcmFwcGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIk1lbWJlcnNTZWxlY3QiLCJfcmVmIiwidmFsdWUiLCJtZW1iZXJzTGlzdCIsIm9uQ2hhbmdlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd1NlbGVjdE1lbWJlcnMiLCJzZXRTaG93U2VsZWN0TWVtYmVycyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsImhhbmRsZVNlbGVjdE1lbWJlciIsIm1lbWJlciIsIm1lbWJlck5hbWUiLCJjb25jYXQiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImN1cnJlbnRNZW1iZXJzIiwic3BsaXQiLCJpbmNsdWRlcyIsInVwZGF0ZWRNZW1iZXJzIiwiZmlsdGVyIiwibSIsImpvaW4iLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJoYW5kbGVTZWFyY2giLCJlIiwidGFyZ2V0IiwiZmlsdGVyZWRNZW1iZXJzIiwic2VhcmNoTG93ZXIiLCJ0b0xvd2VyQ2FzZSIsInRpdGxlIiwicGxhY2Vob2xkZXIiLCJlbmRJY29uIiwiaXNPcGVuIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwib3BlbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwib25DbGljayIsIm1hcCIsImlzU2VsZWN0ZWQiLCJzdG9wUHJvcGFnYXRpb24iLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInR5cGUiLCJjaGVja2VkIiwicmVhZE9ubHkiLCJpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RlYW1EZXRhaWxzTW9kYWwvTWVtYmVyc1NlbGVjdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8sIENoYW5nZUV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ1VTZWxlY3QgfSBmcm9tICdAcHJvamVjdGNvci9zZWxlY3Rvci9saWIvY29tcG9uZW50cy9DVVNlbGVjdCdcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL0ZpbHRlcnMvU2VhcmNoQ29tcG9uZW50L1NlYXJjaENvbXBvbmVudCdcbmltcG9ydCB7XG4gIFNDQmFja2Ryb3BJbnB1dFNlbGVjdCxcbiAgU0NDVUl0ZW1zTGlzdCxcbiAgU0NDVVNlbGVjdEl0ZW0sXG4gIFNDV3JhcHBlclNlbGVjdEljb24sXG4gIFNDTWVtYmVySXRlbUNvbnRlbnQsXG4gIFNDTWVtYmVyQ2hlY2tib3gsXG4gIFNDTWVtYmVyU2VhcmNoV3JhcHBlcixcbn0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnN0eWxlcydcbmltcG9ydCB7IFRlYW1Vc2VyIH0gZnJvbSAnLi9UZWFtRGV0YWlsc01vZGFsLnR5cGVzJ1xuXG5pbnRlcmZhY2UgTWVtYmVyc1NlbGVjdFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZ1xuICBtZW1iZXJzTGlzdDogVGVhbVVzZXJbXVxuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IE1lbWJlcnNTZWxlY3QgPSAoeyB2YWx1ZSwgbWVtYmVyc0xpc3QsIG9uQ2hhbmdlIH06IE1lbWJlcnNTZWxlY3RQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd1NlbGVjdE1lbWJlcnMsIHNldFNob3dTZWxlY3RNZW1iZXJzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE1lbWJlciA9IChtZW1iZXI6IFRlYW1Vc2VyKSA9PiB7XG4gICAgY29uc3QgbWVtYmVyTmFtZSA9IGAke21lbWJlci5maXJzdE5hbWV9ICR7bWVtYmVyLmxhc3ROYW1lfWBcbiAgICBjb25zdCBjdXJyZW50TWVtYmVycyA9IHZhbHVlID8gdmFsdWUuc3BsaXQoJyAtICcpIDogW11cblxuICAgIGlmIChjdXJyZW50TWVtYmVycy5pbmNsdWRlcyhtZW1iZXJOYW1lKSkge1xuICAgICAgLy8gU2kgeWEgZXN0w6Egc2VsZWNjaW9uYWRvLCByZW1vdmVybG9cbiAgICAgIGNvbnN0IHVwZGF0ZWRNZW1iZXJzID0gY3VycmVudE1lbWJlcnMuZmlsdGVyKG0gPT4gbSAhPT0gbWVtYmVyTmFtZSlcbiAgICAgIG9uQ2hhbmdlKHVwZGF0ZWRNZW1iZXJzLmpvaW4oJyAtICcpKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaSBubyBlc3TDoSBzZWxlY2Npb25hZG8sIGFncmVnYXJsb1xuICAgICAgY29uc3QgdXBkYXRlZE1lbWJlcnMgPSBbLi4uY3VycmVudE1lbWJlcnMsIG1lbWJlck5hbWVdXG4gICAgICBvbkNoYW5nZSh1cGRhdGVkTWVtYmVycy5qb2luKCcgLSAnKSlcbiAgICB9XG4gICAgLy8gTm8gY2VycmFyIGVsIHNlbGVjdG9yIHBhcmEgcGVybWl0aXIgc2VsZWNjacOzbiBtw7psdGlwbGVcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKVxuICB9XG5cbiAgY29uc3QgZmlsdGVyZWRNZW1iZXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hWYWx1ZSkgcmV0dXJuIG1lbWJlcnNMaXN0XG4gICAgY29uc3Qgc2VhcmNoTG93ZXIgPSBzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpXG4gICAgcmV0dXJuIG1lbWJlcnNMaXN0LmZpbHRlcihcbiAgICAgIG1lbWJlciA9PlxuICAgICAgICBtZW1iZXIuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoTG93ZXIpIHx8XG4gICAgICAgIG1lbWJlci5sYXN0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaExvd2VyKSB8fFxuICAgICAgICBgJHttZW1iZXIuZmlyc3ROYW1lfSAke21lbWJlci5sYXN0TmFtZX1gLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoTG93ZXIpXG4gICAgKVxuICB9LCBbbWVtYmVyc0xpc3QsIHNlYXJjaFZhbHVlXSlcblxuICByZXR1cm4gKFxuICAgIDxDVVNlbGVjdFxuICAgICAgdGl0bGU9XCJBZ3JlZ2FyIG1pZW1icm9zICpcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY2Npb25hciBtaWVtYnJvc1wiXG4gICAgICBlbmRJY29uPXtcbiAgICAgICAgPFNDV3JhcHBlclNlbGVjdEljb24gaXNPcGVuPXtzaG93U2VsZWN0TWVtYmVyc30+XG4gICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICA8L1NDV3JhcHBlclNlbGVjdEljb24+XG4gICAgICB9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvcGVuPXtzaG93U2VsZWN0TWVtYmVyc31cbiAgICAgIGhhbmRsZUNsaWNrQWN0aW9uPXsoKSA9PiBzZXRTaG93U2VsZWN0TWVtYmVycyghc2hvd1NlbGVjdE1lbWJlcnMpfVxuICAgID5cbiAgICAgIDxTQ0JhY2tkcm9wSW5wdXRTZWxlY3Qgb25DbGljaz17KCkgPT4gc2V0U2hvd1NlbGVjdE1lbWJlcnMoZmFsc2UpfSAvPlxuICAgICAgPFNDQ1VJdGVtc0xpc3Q+XG4gICAgICAgIDxTQ01lbWJlclNlYXJjaFdyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaENvbXBvbmVudCBwbGFjZWhvbGRlcj1cIkJ1c2NhciBtaWVtYnJvXCIgb25DaGFuZ2U9e2hhbmRsZVNlYXJjaH0gdmFsdWU9e3NlYXJjaFZhbHVlfSAvPlxuICAgICAgICA8L1NDTWVtYmVyU2VhcmNoV3JhcHBlcj5cbiAgICAgICAge2ZpbHRlcmVkTWVtYmVycy5tYXAobWVtYmVyID0+IHtcbiAgICAgICAgICBjb25zdCBtZW1iZXJOYW1lID0gYCR7bWVtYmVyLmZpcnN0TmFtZX0gJHttZW1iZXIubGFzdE5hbWV9YFxuICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB2YWx1ZT8uaW5jbHVkZXMobWVtYmVyTmFtZSkgfHwgZmFsc2VcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNDQ1VTZWxlY3RJdGVtXG4gICAgICAgICAgICAgIGtleT17bWVtYmVyLmlkfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0TWVtYmVyKG1lbWJlcilcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBpc1NlbGVjdGVkID8gJyNlZGZhZmYnIDogJ3RyYW5zcGFyZW50JyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U0NNZW1iZXJJdGVtQ29udGVudD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57bWVtYmVyTmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPFNDTWVtYmVyQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE1lbWJlcihtZW1iZXIpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NNZW1iZXJJdGVtQ29udGVudD5cbiAgICAgICAgICAgIDwvU0NDVVNlbGVjdEl0ZW0+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvU0NDVUl0ZW1zTGlzdD5cbiAgICA8L0NVU2VsZWN0PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsUUFBUSxFQUFFQyxPQUFPLFFBQXFCLE9BQU87QUFDdEQsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxRQUFRLFFBQVEsOENBQThDO0FBQ3ZFLFNBQVNDLGVBQWUsUUFBUSw0Q0FBNEM7QUFDNUUsU0FDRUMscUJBQXFCLEVBQ3JCQyxhQUFhLEVBQ2JDLGNBQWMsRUFDZEMsbUJBQW1CLEVBQ25CQyxtQkFBbUIsRUFDbkJDLGdCQUFnQixFQUNoQkMscUJBQXFCLFFBQ2hCLDJCQUEyQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFTbEMsT0FBTyxJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUFDLElBQUEsRUFBNkQ7RUFBQSxJQUF2REMsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFBRUMsV0FBVyxHQUFBRixJQUFBLENBQVhFLFdBQVc7SUFBRUMsUUFBUSxHQUFBSCxJQUFBLENBQVJHLFFBQVE7RUFDMUQsSUFBQUMsU0FBQSxHQUFrRHJCLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXNCLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTFERyxpQkFBaUIsR0FBQUYsVUFBQTtJQUFFRyxvQkFBb0IsR0FBQUgsVUFBQTtFQUM5QyxJQUFBSSxVQUFBLEdB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b0JBQW9CLENBQUMsS0FBSyxDQUFDO01BQUE7SUFBQyxDQUFFLENBQUMsZUFDckVWLEtBQUEsQ0FBQ1QsYUFBYTtNQUFBZ0QsUUFBQSxnQkFDWnpDLElBQUEsQ0FBQ0YscUJBQXFCO1FBQUEyQyxRQUFBLGVBQ3BCekMsSUFBQSxDQUFDVCxlQUFlO1VBQUMrQyxXQUFXLEVBQUMsZ0JBQWdCO1VBQUMvQixRQUFRLEVBQUV3QixZQUFhO1VBQUMxQixLQUFLLEVBQUVVO1FBQVksQ0FBRTtNQUFDLENBQ3ZFLENBQUMsRUFDdkJtQixlQUFlLENBQUNjLEdBQUcsQ0FBQyxVQUFBOUIsTUFBTSxFQUFJO1FBQzdCLElBQU1DLFVBQVUsTUFBQUMsTUFBQSxDQUFNRixNQUFNLENBQUNHLFNBQVMsT0FBQUQsTUFBQSxDQUFJRixNQUFNLENBQUNJLFFBQVEsQ0FBRTtRQUMzRCxJQUFNMkIsVUFBVSxHQUFHLENBQUE1QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW9CLFFBQVEsQ0FBQ04sVUFBVSxDQUFDLEtBQUksS0FBSztRQUN2RCxvQkFDRW5CLElBQUEsQ0FBQ04sY0FBYztVQUVicUQsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVmLENBQUMsRUFBSTtZQUNaQSxDQUFDLENBQUNrQixlQUFlLENBQUMsQ0FBQztZQUNuQmpDLGtCQUFrQixDQUFDQyxNQUFNLENBQUM7VUFDNUIsQ0FBRTtVQUNGaUMsS0FBSyxFQUFFO1lBQUVDLGVBQWUsRUFBRUgsVUFBVSxHQUFHLFNBQVMsR0FBRztVQUFjLENBQUU7VUFBQVIsUUFBQSxlQUVuRXZDLEtBQUEsQ0FBQ04sbUJBQW1CO1lBQUE2QyxRQUFBLGdCQUNsQnpDLElBQUE7Y0FBQXlDLFFBQUEsRUFBT3RCO1lBQVUsQ0FBTyxDQUFDLGVBQ3pCbkIsSUFBQSxDQUFDSCxnQkFBZ0I7Y0FDZndELElBQUksRUFBQyxVQUFVO2NBQ2ZDLE9BQU8sRUFBRUwsVUFBVztjQUNwQk0sUUFBUTtjQUNSUixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRWYsQ0FBQyxFQUFJO2dCQUNaQSxDQUFDLENBQUNrQixlQUFlLENBQUMsQ0FBQztnQkFDbkJqQyxrQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDO2NBQzVCO1lBQUUsQ0FDSCxDQUFDO1VBQUEsQ0FDaUI7UUFBQyxHQWxCakJBLE1BQU0sQ0FBQ3NDLEVBbUJFLENBQUM7TUFFckIsQ0FBQyxDQUFDO0lBQUEsQ0FDVyxDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRWYsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
176
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiQ2hldnJvbkRvd24iLCJDVVNlbGVjdCIsIlNlYXJjaENvbXBvbmVudCIsInVzZUdldFVzZXJzIiwidXNlRGVib3VuY2UiLCJTQ0JhY2tkcm9wSW5wdXRTZWxlY3QiLCJTQ0NVSXRlbXNMaXN0IiwiU0NDVVNlbGVjdEl0ZW0iLCJTQ1dyYXBwZXJTZWxlY3RJY29uIiwiU0NNZW1iZXJJdGVtQ29udGVudCIsIlNDTWVtYmVyQ2hlY2tib3giLCJTQ01lbWJlclNlYXJjaFdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiTWVtYmVyc1NlbGVjdCIsIl9yZWYiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd1NlbGVjdE1lbWJlcnMiLCJzZXRTaG93U2VsZWN0TWVtYmVycyIsIl91c2VHZXRVc2VycyIsImhhbmRsZUdldFVzZXJzIiwidXNlcnMiLCJjdXJyZW50UGFnZSIsInRvdGFsUGFnZXMiLCJsb2FkaW5nIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwiZGVib3VuY2VkU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImFjY3VtdWxhdGVkVXNlcnMiLCJzZXRBY2N1bXVsYXRlZFVzZXJzIiwic2Nyb2xsQ29udGFpbmVyUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsImhhbmRsZVNlbGVjdE1lbWJlciIsIm1lbWJlciIsImFscmVkeVNlbGVjdGVkIiwic29tZSIsIm0iLCJpZCIsImZpbHRlciIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm5hbWUiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImhhbmRsZVNlYXJjaCIsImUiLCJ0YXJnZXQiLCJjdXJyZW50IiwicGFnZSIsInNlYXJjaElucHV0IiwibGVuZ3RoIiwicHJldiIsImV4aXN0aW5nSWRzIiwiU2V0IiwibWFwIiwidSIsIm5ld1VzZXJzIiwiaGFzIiwiaGFuZGxlU2Nyb2xsIiwiY29udGFpbmVyIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNOZWFyQm90dG9tIiwidW5kZWZpbmVkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGlja0FjdGlvblNlbGVjdCIsInRpdGxlIiwicGxhY2Vob2xkZXIiLCJlbmRJY29uIiwiaXNPcGVuIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwiam9pbiIsIm9wZW4iLCJoYW5kbGVDbGlja0FjdGlvbiIsIm9uQ2xpY2siLCJyZWYiLCJtZW1iZXJOYW1lIiwiaXNTZWxlY3RlZCIsInN0b3BQcm9wYWdhdGlvbiIsInR5cGUiLCJjaGVja2VkIiwicmVhZE9ubHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UZWFtRGV0YWlsc01vZGFsL01lbWJlcnNTZWxlY3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCBDaGFuZ2VFdmVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ1VTZWxlY3QgfSBmcm9tICdAcHJvamVjdGNvci9zZWxlY3Rvci9saWIvY29tcG9uZW50cy9DVVNlbGVjdCdcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL0ZpbHRlcnMvU2VhcmNoQ29tcG9uZW50L1NlYXJjaENvbXBvbmVudCdcbmltcG9ydCB7IHVzZUdldFVzZXJzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlR2V0VXNlcnMnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZURlYm91bmNlJ1xuaW1wb3J0IHtcbiAgU0NCYWNrZHJvcElucHV0U2VsZWN0LFxuICBTQ0NVSXRlbXNMaXN0LFxuICBTQ0NVU2VsZWN0SXRlbSxcbiAgU0NXcmFwcGVyU2VsZWN0SWNvbixcbiAgU0NNZW1iZXJJdGVtQ29udGVudCxcbiAgU0NNZW1iZXJDaGVja2JveCxcbiAgU0NNZW1iZXJTZWFyY2hXcmFwcGVyLFxufSBmcm9tICcuL1RlYW1EZXRhaWxzTW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHsgVGVhbVVzZXIgfSBmcm9tICcuL1RlYW1EZXRhaWxzTW9kYWwudHlwZXMnXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXNlclR5cGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVtYmVyU2VsZWN0aW9uIHtcbiAgaWQ6IG51bWJlclxuICBuYW1lOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIE1lbWJlcnNTZWxlY3RQcm9wcyB7XG4gIHZhbHVlOiBNZW1iZXJTZWxlY3Rpb25bXVxuICBvbkNoYW5nZTogKGlucHV0OiBzdHJpbmcsIHZhbHVlOiBNZW1iZXJTZWxlY3Rpb25bXSkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgTWVtYmVyc1NlbGVjdCA9ICh7IHZhbHVlLCBvbkNoYW5nZSB9OiBNZW1iZXJzU2VsZWN0UHJvcHMpID0+IHtcbiAgY29uc3QgW3Nob3dTZWxlY3RNZW1iZXJzLCBzZXRTaG93U2VsZWN0TWVtYmVyc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgeyBoYW5kbGVHZXRVc2VycywgdXNlcnMsIGN1cnJlbnRQYWdlLCB0b3RhbFBhZ2VzLCBsb2FkaW5nIH0gPSB1c2VHZXRVc2VycygpXG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFZhbHVlID0gdXNlRGVib3VuY2Uoc2VhcmNoVmFsdWUsIDMwMClcbiAgY29uc3QgW2FjY3VtdWxhdGVkVXNlcnMsIHNldEFjY3VtdWxhdGVkVXNlcnNdID0gdXNlU3RhdGU8VXNlcltdPihbXSlcbiAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBpc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE1lbWJlciA9IChtZW1iZXI6IFVzZXIgfCBUZWFtVXNlcikgPT4ge1xuICAgIGNvbnN0IGFscmVkeVNlbGVjdGVkID0gdmFsdWUuc29tZShtID0+IG0uaWQgPT09IG1lbWJlci5pZClcbiAgICBpZiAoYWxyZWR5U2VsZWN0ZWQpIHtcbiAgICAgIG9uQ2hhbmdlKFxuICAgICAgICAnbWVtYmVycycsXG4gICAgICAgIHZhbHVlLmZpbHRlcihtID0+IG0uaWQgIT09IG1lbWJlci5pZClcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2UoJ21lbWJlcnMnLCBbLi4udmFsdWUsIHsgaWQ6IG1lbWJlci5pZCwgbmFtZTogYCR7bWVtYmVyLmZpcnN0TmFtZX0gJHttZW1iZXIubGFzdE5hbWV9YCB9XSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWFyY2ggPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSlcbiAgfVxuXG4gIC8vIFJlc2V0ZWFyIHVzdWFyaW9zIGFjdW11bGFkb3MgY3VhbmRvIGNhbWJpYSBlbCBzZWFyY2ggbyBzZSBhYnJlIGVsIHNlbGVjdG9yXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNob3dTZWxlY3RNZW1iZXJzKSB7XG4gICAgICBzZXRBY2N1bXVsYXRlZFVzZXJzKFtdKVxuICAgICAgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGhhbmRsZUdldFVzZXJzKHsgcGFnZTogMSwgc2VhcmNoSW5wdXQ6IGRlYm91bmNlZFNlYXJjaFZhbHVlIH0pXG4gICAgfVxuICB9LCBbZGVib3VuY2VkU2VhcmNoVmFsdWUsIHNob3dTZWxlY3RNZW1iZXJzLCBoYW5kbGVHZXRVc2Vyc10pXG5cbiAgLy8gQWN1bXVsYXIgdXN1YXJpb3MgY3VhbmRvIHNlIHJlY2liZW4gbnVldm9zIGRhdG9zXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA+IDAgJiYgc2hvd1NlbGVjdE1lbWJlcnMpIHtcbiAgICAgIGlmIChjdXJyZW50UGFnZSA9PT0gMSkge1xuICAgICAgICAvLyBTaSBlcyBsYSBwcmltZXJhIHDDoWdpbmEsIHJlZW1wbGF6YXJcbiAgICAgICAgc2V0QWNjdW11bGF0ZWRVc2Vycyh1c2VycylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpIGVzIHVuYSBww6FnaW5hIHBvc3RlcmlvciwgYWdyZWdhciBhIGxvcyBleGlzdGVudGVzXG4gICAgICAgIHNldEFjY3VtdWxhdGVkVXNlcnMocHJldiA9PiB7XG4gICAgICAgICAgLy8gRXZpdGFyIGR1cGxpY2Fkb3NcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAodSA9PiB1LmlkKSlcbiAgICAgICAgICBjb25zdCBuZXdVc2VycyA9IHVzZXJzLmZpbHRlcih1ID0+ICFleGlzdGluZ0lkcy5oYXModS5pZCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5uZXdVc2Vyc11cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9LCBbdXNlcnMsIGN1cnJlbnRQYWdlLCBzaG93U2VsZWN0TWVtYmVyc10pXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHNjcm9sbENvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250YWluZXIgfHwgbG9hZGluZyB8fCBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcbiAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMTAgLy8gMTBweCBkZSBtYXJnZW5cblxuICAgIGlmIChpc05lYXJCb3R0b20gJiYgY3VycmVudFBhZ2UgPCB0b3RhbFBhZ2VzKSB7XG4gICAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBoYW5kbGVHZXRVc2Vycyh7IHBhZ2U6IGN1cnJlbnRQYWdlICsgMSwgc2VhcmNoSW5wdXQ6IGRlYm91bmNlZFNlYXJjaFZhbHVlIH0pXG4gICAgfVxuICB9LCBbY3VycmVudFBhZ2UsIHRvdGFsUGFnZXMsIGxvYWRpbmcsIGhhbmRsZUdldFVzZXJzLCBkZWJvdW5jZWRTZWFyY2hWYWx1ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBzY3JvbGxDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGFpbmVyIHx8ICFzaG93U2VsZWN0TWVtYmVycykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICB9XG4gIH0sIFtoYW5kbGVTY3JvbGwsIHNob3dTZWxlY3RNZW1iZXJzXSlcblxuICBjb25zdCBoYW5kbGVDbGlja0FjdGlvblNlbGVjdCA9ICgpID0+IHtcbiAgICBzZXRTaG93U2VsZWN0TWVtYmVycyghc2hvd1NlbGVjdE1lbWJlcnMpXG4gICAgaWYgKCFzaG93U2VsZWN0TWVtYmVycykge1xuICAgICAgc2V0U2VhcmNoVmFsdWUoJycpXG4gICAgICBzZXRBY2N1bXVsYXRlZFVzZXJzKFtdKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENVU2VsZWN0XG4gICAgICB0aXRsZT1cIkFncmVnYXIgbWllbWJyb3MgKlwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjY2lvbmFyIG1pZW1icm9zXCJcbiAgICAgIGVuZEljb249e1xuICAgICAgICA8U0NXcmFwcGVyU2VsZWN0SWNvbiBpc09wZW49e3Nob3dTZWxlY3RNZW1iZXJzfT5cbiAgICAgICAgICA8Q2hldnJvbkRvd24gd2lkdGg9XCIxNnB4XCIgaGVpZ2h0PVwiMTZweFwiIGNvbG9yPVwiIzIwMjAxRlwiIC8+XG4gICAgICAgIDwvU0NXcmFwcGVyU2VsZWN0SWNvbj5cbiAgICAgIH1cbiAgICAgIHZhbHVlPXt2YWx1ZS5tYXAobWVtYmVyID0+IG1lbWJlci5uYW1lKS5qb2luKCcgLSAnKX1cbiAgICAgIG9wZW49e3Nob3dTZWxlY3RNZW1iZXJzfVxuICAgICAgaGFuZGxlQ2xpY2tBY3Rpb249e2hhbmRsZUNsaWNrQWN0aW9uU2VsZWN0fVxuICAgID5cbiAgICAgIDxTQ0JhY2tkcm9wSW5wdXRTZWxlY3Qgb25DbGljaz17KCkgPT4gc2V0U2hvd1NlbGVjdE1lbWJlcnMoZmFsc2UpfSAvPlxuICAgICAgPFNDQ1VJdGVtc0xpc3QgcmVmPXtzY3JvbGxDb250YWluZXJSZWZ9PlxuICAgICAgICA8U0NNZW1iZXJTZWFyY2hXcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hDb21wb25lbnQgcGxhY2Vob2xkZXI9XCJCdXNjYXIgbWllbWJyb1wiIG9uQ2hhbmdlPXtoYW5kbGVTZWFyY2h9IHZhbHVlPXtzZWFyY2hWYWx1ZX0gLz5cbiAgICAgICAgPC9TQ01lbWJlclNlYXJjaFdyYXBwZXI+XG4gICAgICAgIHthY2N1bXVsYXRlZFVzZXJzLm1hcChtZW1iZXIgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lbWJlck5hbWUgPSBgJHttZW1iZXIuZmlyc3ROYW1lfSAke21lbWJlci5sYXN0TmFtZX1gXG4gICAgICAgICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlPy5zb21lKG0gPT4gbS5pZCA9PT0gbWVtYmVyLmlkKSB8fCBmYWxzZVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8U0NDVVNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAga2V5PXttZW1iZXIuaWR9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RNZW1iZXIobWVtYmVyKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U0NNZW1iZXJJdGVtQ29udGVudD5cbiAgICAgICAgICAgICAgICA8c3Bhbj57bWVtYmVyTmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPFNDTWVtYmVyQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE1lbWJlcihtZW1iZXIpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NNZW1iZXJJdGVtQ29udGVudD5cbiAgICAgICAgICAgIDwvU0NDVVNlbGVjdEl0ZW0+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvU0NDVUl0ZW1zTGlzdD5cbiAgICA8L0NVU2VsZWN0PlxuICApXG59XG4iXSwi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
|