@projectcor/maia-components 2.41.0 → 2.42.0-feat-maia-path-route.1

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.
Files changed (40) hide show
  1. package/lib/App.js +44 -19
  2. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +3 -1
  3. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +19 -7
  4. package/lib/components/index.js +2 -1
  5. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -3
  6. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +21 -6
  7. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +6 -2
  8. package/lib/components/molecules/ChatAIMessages/newStyles.js +29 -26
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +8 -1
  10. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +25 -8
  11. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +65 -61
  12. package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -3
  13. package/lib/components/molecules/Sidebar/Sidebar.js +28 -23
  14. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
  15. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +486 -0
  16. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +16 -0
  17. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +253 -0
  18. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +13 -0
  19. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +250 -0
  20. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +144 -0
  21. package/lib/components/organisms/ChatAIPage/getDaypart.js +9 -0
  22. package/lib/components/organisms/ChatAIPage/index.js +3 -0
  23. package/lib/constants/permissions/index.js +2 -2
  24. package/lib/constants/permissions/utils.js +4 -1
  25. package/lib/dev/DevMaiaPage.js +30 -0
  26. package/lib/hooks/useChatManager/useChatManager.js +7 -7
  27. package/lib/hooks/useFrequentlyUsedActions.js +31 -12
  28. package/lib/hooks/useIsMaiaPageRoute.js +26 -0
  29. package/lib/index.js +5 -2
  30. package/lib/lang/br/index.js +24 -1
  31. package/lib/lang/en/index.js +24 -1
  32. package/lib/lang/es/index.js +24 -1
  33. package/lib/lang/fr/index.js +24 -1
  34. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  35. package/lib/styles/cascade.js +29 -3
  36. package/lib/styles/transitions.js +3 -1
  37. package/lib/types/global.d.js +1 -1
  38. package/lib/utils/hoursPlannerQuickActionType.js +74 -1
  39. package/lib/utils/maiaPageRoute.js +24 -0
  40. package/package.json +1 -1
@@ -0,0 +1,253 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
5
+ import { ChevronLeft } from '@projectcor/icons/lib/components/ChevronLeft';
6
+ import { Plus } from '@projectcor/icons/lib/components/Plus';
7
+ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
8
+ import { Loader } from '../../atoms/Loader';
9
+ import { MAIAIcon } from '../../atoms/icons';
10
+ import { ChatAIAgentOption } from '../../molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions';
11
+ import { SCCAIMHAddAgent, SCCAIMHAgentsList, SCCAIMHBackButton, SCCAIMHDivider, SCCAIMHLoaderWrapper, SCCAIMHPlusIconWrapper, SCCAIMHSelectedAgent, SCCAIMHSelectedAgentText, SCCAIMHWrapper, SCCAIMHWrapperIcon, SCCAIMHWrapperModal, SCCAIMHWrapperModalContent, SCCAIMHWrapperModalContentTitle } from '../../molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles';
12
+ import { useGlobalContext } from '../../../context/global-context';
13
+ import { useUser } from '../../../context/cor-user';
14
+ import { useResizeListener } from '../../../hooks/useResize';
15
+ import { EVENTS, useEvent } from '../../../hooks/useEvent';
16
+ import { SECTIONS } from '../../../constants/config';
17
+ import { isMaiaCloneAgentsRoleBlocked } from '../../../constants/maiaTaskPanelAccess';
18
+ import { SCPageHeader, SCPageHeaderStart } from './ChatAIPageHeader.styles';
19
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
20
+ export var ChatAIPageHeader = function ChatAIPageHeader(_ref) {
21
+ var _localAgents$name, _user$permissions;
22
+ var _ref$overlay = _ref.overlay,
23
+ overlay = _ref$overlay === void 0 ? false : _ref$overlay,
24
+ _ref$showBack = _ref.showBack,
25
+ showBack = _ref$showBack === void 0 ? false : _ref$showBack,
26
+ _ref$agents = _ref.agents,
27
+ agents = _ref$agents === void 0 ? [] : _ref$agents,
28
+ _ref$loading = _ref.loading,
29
+ loading = _ref$loading === void 0 ? false : _ref$loading,
30
+ _ref$loadingMore = _ref.loadingMore,
31
+ loadingMore = _ref$loadingMore === void 0 ? false : _ref$loadingMore,
32
+ _ref$hasMore = _ref.hasMore,
33
+ hasMore = _ref$hasMore === void 0 ? false : _ref$hasMore,
34
+ loadMoreAgents = _ref.loadMoreAgents,
35
+ sortAgentsList = _ref.sortAgentsList,
36
+ handleResetChat = _ref.handleResetChat,
37
+ onAgentUpdate = _ref.onAgentUpdate;
38
+ var _useTranslation = useTranslation([SECTIONS.abmAgent, SECTIONS.chatAI]),
39
+ t = _useTranslation.t;
40
+ var user = useUser();
41
+ var amplitudEvent = useEvent();
42
+ var _useGlobalContext = useGlobalContext(),
43
+ selectedAgent = _useGlobalContext.agent,
44
+ selectAgent = _useGlobalContext.selectAgent,
45
+ setProject = _useGlobalContext.setProject,
46
+ setClient = _useGlobalContext.setClient,
47
+ setTask = _useGlobalContext.setTask,
48
+ section = _useGlobalContext.section;
49
+ var _useState = useState(false),
50
+ _useState2 = _slicedToArray(_useState, 2),
51
+ isExpanded = _useState2[0],
52
+ setIsExpanded = _useState2[1];
53
+ var textRefAgent = useRef(null);
54
+ var dropdownRef = useRef(null);
55
+ var agentsRef = useRef(null);
56
+ var _useResizeListener = useResizeListener(textRefAgent, [selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.name]),
57
+ showTooltipAgent = _useResizeListener.showTooltip;
58
+ var isMaiaAgent = useCallback(function (agentItem) {
59
+ return agentItem.type === 'orchestrator';
60
+ }, []);
61
+ var agentsForSelector = useMemo(function () {
62
+ return agents.filter(function (agentItem) {
63
+ return isMaiaAgent(agentItem) || agentItem.entity !== 'global';
64
+ });
65
+ }, [agents, isMaiaAgent]);
66
+ var localAgents = useMemo(function () {
67
+ var _ref2;
68
+ if (selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_from_conversation || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_legacy_context) {
69
+ return selectedAgent;
70
+ }
71
+ var fromList = agents.find(function (item) {
72
+ return !item.is_deleted && !item.has_not_permissions && !item.has_not_access && item.id === (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id);
73
+ });
74
+ return (_ref2 = fromList !== null && fromList !== void 0 ? fromList : selectedAgent) !== null && _ref2 !== void 0 ? _ref2 : null;
75
+ }, [agents, selectedAgent]);
76
+ var selectorIcon = (localAgents === null || localAgents === void 0 ? void 0 : localAgents.type) === 'custom' && !(localAgents !== null && localAgents !== void 0 && localAgents.is_legacy_context) ? localAgents === null || localAgents === void 0 ? void 0 : localAgents.emoji : /*#__PURE__*/_jsx(MAIAIcon, {});
77
+ var selectorLabel = (_localAgents$name = localAgents === null || localAgents === void 0 ? void 0 : localAgents.name) !== null && _localAgents$name !== void 0 ? _localAgents$name : '';
78
+ var cloneAgentsRoleBlocked = isMaiaCloneAgentsRoleBlocked(user, section);
79
+ var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
80
+ useEffect(function () {
81
+ if (!isExpanded) return undefined;
82
+ var handleClickOutside = function handleClickOutside(event) {
83
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
84
+ setIsExpanded(false);
85
+ }
86
+ };
87
+ document.addEventListener('mousedown', handleClickOutside);
88
+ return function () {
89
+ document.removeEventListener('mousedown', handleClickOutside);
90
+ };
91
+ }, [isExpanded]);
92
+ useEffect(function () {
93
+ if (!isExpanded) return undefined;
94
+ var handleScroll = function handleScroll() {
95
+ if (!agentsRef.current || !loadMoreAgents || !hasMore || loadingMore) return;
96
+ var _agentsRef$current = agentsRef.current,
97
+ scrollTop = _agentsRef$current.scrollTop,
98
+ scrollHeight = _agentsRef$current.scrollHeight,
99
+ clientHeight = _agentsRef$current.clientHeight;
100
+ if (scrollHeight - scrollTop - clientHeight < 50) {
101
+ loadMoreAgents();
102
+ }
103
+ };
104
+ var timeoutId = setTimeout(function () {
105
+ var _agentsRef$current2;
106
+ (_agentsRef$current2 = agentsRef.current) === null || _agentsRef$current2 === void 0 || _agentsRef$current2.addEventListener('scroll', handleScroll);
107
+ }, 100);
108
+ return function () {
109
+ var _agentsRef$current3;
110
+ clearTimeout(timeoutId);
111
+ (_agentsRef$current3 = agentsRef.current) === null || _agentsRef$current3 === void 0 || _agentsRef$current3.removeEventListener('scroll', handleScroll);
112
+ };
113
+ }, [isExpanded, loadMoreAgents, hasMore, loadingMore]);
114
+ var handleSelectAgent = useCallback(function (nextAgent) {
115
+ selectAgent(nextAgent);
116
+ amplitudEvent(EVENTS.aiChatAgentSelect, {
117
+ agent_type: nextAgent === null || nextAgent === void 0 ? void 0 : nextAgent.type
118
+ });
119
+ setIsExpanded(false);
120
+ setProject(null);
121
+ setClient === null || setClient === void 0 || setClient(null);
122
+ setTask(null);
123
+ setTimeout(function () {
124
+ handleResetChat();
125
+ }, 100);
126
+ }, [selectAgent, amplitudEvent, handleResetChat, setProject, setClient, setTask]);
127
+ var handleExpand = function handleExpand() {
128
+ if (!isExpanded) {
129
+ amplitudEvent(EVENTS.aiChatOpenAgentSelect);
130
+ sortAgentsList === null || sortAgentsList === void 0 || sortAgentsList();
131
+ }
132
+ setIsExpanded(function (prev) {
133
+ return !prev;
134
+ });
135
+ };
136
+ var showCustomAgentsTitle = agentsForSelector.some(function (item) {
137
+ return item.type === 'custom';
138
+ }) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
139
+ var shouldRenderSelector = !loading && !!selectedAgent && (!!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || !!window.MAIA_CHAT_AI_FEATURE_ACCESS);
140
+ return /*#__PURE__*/_jsxs(SCPageHeader, {
141
+ $overlay: overlay,
142
+ children: [/*#__PURE__*/_jsx(SCPageHeaderStart, {
143
+ children: shouldRenderSelector ? /*#__PURE__*/_jsxs(SCCAIMHWrapper, {
144
+ ref: dropdownRef,
145
+ onClick: agents.length ? handleExpand : undefined,
146
+ children: [/*#__PURE__*/_jsx(SCCAIMHSelectedAgent, {
147
+ children: /*#__PURE__*/_jsx(Tooltip, {
148
+ title: showTooltipAgent ? /*#__PURE__*/_jsxs("span", {
149
+ style: {
150
+ display: 'flex',
151
+ alignItems: 'center',
152
+ gap: '4px'
153
+ },
154
+ children: [selectorIcon, " ", selectorLabel]
155
+ }) : '',
156
+ placement: isExpanded ? 'left' : 'top',
157
+ children: /*#__PURE__*/_jsx(SCCAIMHSelectedAgentText, {
158
+ ref: textRefAgent,
159
+ isAgentDeleted: !!(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) || !!(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) || !!(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access) || !!(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_legacy_context),
160
+ children: /*#__PURE__*/_jsxs("span", {
161
+ style: {
162
+ display: 'flex',
163
+ alignItems: 'center',
164
+ gap: '4px'
165
+ },
166
+ children: [selectorIcon, " ", selectorLabel]
167
+ })
168
+ })
169
+ })
170
+ }), /*#__PURE__*/_jsx(SCCAIMHWrapperIcon, {
171
+ children: /*#__PURE__*/_jsx(ChevronDown, {
172
+ width: 14,
173
+ height: 14,
174
+ color: "#20201F"
175
+ })
176
+ }), isExpanded ? /*#__PURE__*/_jsx(SCCAIMHWrapperModal, {
177
+ children: /*#__PURE__*/_jsxs(SCCAIMHWrapperModalContent, {
178
+ children: [window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked ? /*#__PURE__*/_jsx(_Fragment, {
179
+ children: agentsForSelector.filter(isMaiaAgent).map(function (maiaAgent, index) {
180
+ return /*#__PURE__*/_jsx(ChatAIAgentOption, {
181
+ agent: maiaAgent,
182
+ index: index,
183
+ handleSelectAgent: handleSelectAgent,
184
+ isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === maiaAgent.id,
185
+ isMaia: true,
186
+ onFavoriteToggle: onAgentUpdate
187
+ }, "agent-".concat(maiaAgent.id));
188
+ })
189
+ }) : null, showCustomAgentsTitle ? /*#__PURE__*/_jsxs(_Fragment, {
190
+ children: [/*#__PURE__*/_jsxs(SCCAIMHWrapperModalContentTitle, {
191
+ children: [t('agents'), " by ", user.company]
192
+ }), /*#__PURE__*/_jsx(SCCAIMHDivider, {})]
193
+ }) : null, /*#__PURE__*/_jsxs(SCCAIMHAgentsList, {
194
+ hasMore: hasMore,
195
+ agentsCount: agentsForSelector.length,
196
+ ref: agentsRef,
197
+ children: [agentsForSelector.map(function (item, index) {
198
+ if (item !== null && item !== void 0 && item.is_deleted || item !== null && item !== void 0 && item.has_not_permissions || item !== null && item !== void 0 && item.has_not_access || (item === null || item === void 0 ? void 0 : item.type) === 'clone' || isMaiaAgent(item) || (item === null || item === void 0 ? void 0 : item.type) === 'custom' && !window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
199
+ return null;
200
+ }
201
+ return /*#__PURE__*/_jsx(ChatAIAgentOption, {
202
+ agent: item,
203
+ index: index,
204
+ handleSelectAgent: handleSelectAgent,
205
+ isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === item.id,
206
+ onFavoriteToggle: onAgentUpdate,
207
+ setIsExpanded: setIsExpanded
208
+ }, "agent-".concat(item.id));
209
+ }), loadingMore ? /*#__PURE__*/_jsx(SCCAIMHLoaderWrapper, {
210
+ children: /*#__PURE__*/_jsx(Loader, {
211
+ size: "small"
212
+ })
213
+ }) : null]
214
+ }), userPermissions !== null && userPermissions !== void 0 && userPermissions.create && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS ? /*#__PURE__*/_jsxs(SCCAIMHAddAgent, {
215
+ onClick: function onClick() {
216
+ setIsExpanded(false);
217
+ amplitudEvent(EVENTS.openModal, {
218
+ option: 'create_agent'
219
+ });
220
+ document.dispatchEvent(new CustomEvent('abm-agent-modal-set-values', {
221
+ detail: {
222
+ agentValues: {
223
+ values: {
224
+ isEditing: false
225
+ },
226
+ isOpen: true
227
+ }
228
+ }
229
+ }));
230
+ },
231
+ children: [/*#__PURE__*/_jsx(SCCAIMHPlusIconWrapper, {
232
+ children: /*#__PURE__*/_jsx(Plus, {
233
+ color: "white",
234
+ width: 18,
235
+ height: 18
236
+ })
237
+ }), t('createAgent')]
238
+ }) : null]
239
+ })
240
+ }) : null]
241
+ }) : null
242
+ }), showBack ? /*#__PURE__*/_jsxs(SCCAIMHBackButton, {
243
+ type: "button",
244
+ onClick: handleResetChat,
245
+ children: [/*#__PURE__*/_jsx(ChevronLeft, {
246
+ width: 14,
247
+ height: 14,
248
+ color: "#343433"
249
+ }), t('back')]
250
+ }) : null]
251
+ });
252
+ };
253
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQ2hldnJvbkRvd24iLCJDaGV2cm9uTGVmdCIsIlBsdXMiLCJUb29sdGlwIiwiTG9hZGVyIiwiTUFJQUljb24iLCJDaGF0QUlBZ2VudE9wdGlvbiIsIlNDQ0FJTUhBZGRBZ2VudCIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSEJhY2tCdXR0b24iLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhMb2FkZXJXcmFwcGVyIiwiU0NDQUlNSFBsdXNJY29uV3JhcHBlciIsIlNDQ0FJTUhTZWxlY3RlZEFnZW50IiwiU0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0IiwiU0NDQUlNSFdyYXBwZXIiLCJTQ0NBSU1IV3JhcHBlckljb24iLCJTQ0NBSU1IV3JhcHBlck1vZGFsIiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQiLCJTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0VDVElPTlMiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwiU0NQYWdlSGVhZGVyIiwiU0NQYWdlSGVhZGVyU3RhcnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDaGF0QUlQYWdlSGVhZGVyIiwiX3JlZiIsIl9sb2NhbEFnZW50cyRuYW1lIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfcmVmJG92ZXJsYXkiLCJvdmVybGF5IiwiX3JlZiRzaG93QmFjayIsInNob3dCYWNrIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfcmVmJGxvYWRpbmciLCJsb2FkaW5nIiwiX3JlZiRsb2FkaW5nTW9yZSIsImxvYWRpbmdNb3JlIiwiX3JlZiRoYXNNb3JlIiwiaGFzTW9yZSIsImxvYWRNb3JlQWdlbnRzIiwic29ydEFnZW50c0xpc3QiLCJoYW5kbGVSZXNldENoYXQiLCJvbkFnZW50VXBkYXRlIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJjaGF0QUkiLCJ0IiwidXNlciIsImFtcGxpdHVkRXZlbnQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJzZWN0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJ0ZXh0UmVmQWdlbnQiLCJkcm9wZG93blJlZiIsImFnZW50c1JlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsIm5hbWUiLCJzaG93VG9vbHRpcEFnZW50Iiwic2hvd1Rvb2x0aXAiLCJpc01haWFBZ2VudCIsImFnZW50SXRlbSIsInR5cGUiLCJhZ2VudHNGb3JTZWxlY3RvciIsImZpbHRlciIsImVudGl0eSIsImxvY2FsQWdlbnRzIiwiX3JlZjIiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJpc19sZWdhY3lfY29udGV4dCIsImZyb21MaXN0IiwiZmluZCIsIml0ZW0iLCJpZCIsInNlbGVjdG9ySWNvbiIsImVtb2ppIiwic2VsZWN0b3JMYWJlbCIsImNsb25lQWdlbnRzUm9sZUJsb2NrZWQiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsInVuZGVmaW5lZCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVNjcm9sbCIsIl9hZ2VudHNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJfYWdlbnRzUmVmJGN1cnJlbnQyIiwiX2FnZW50c1JlZiRjdXJyZW50MyIsImNsZWFyVGltZW91dCIsImhhbmRsZVNlbGVjdEFnZW50IiwibmV4dEFnZW50IiwiYWlDaGF0QWdlbnRTZWxlY3QiLCJhZ2VudF90eXBlIiwiaGFuZGxlRXhwYW5kIiwiYWlDaGF0T3BlbkFnZW50U2VsZWN0IiwicHJldiIsInNob3dDdXN0b21BZ2VudHNUaXRsZSIsInNvbWUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwic2hvdWxkUmVuZGVyU2VsZWN0b3IiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCIkb3ZlcmxheSIsImNoaWxkcmVuIiwicmVmIiwib25DbGljayIsImxlbmd0aCIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsInBsYWNlbWVudCIsImlzQWdlbnREZWxldGVkIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsIm1hcCIsIm1haWFBZ2VudCIsImluZGV4IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJjb25jYXQiLCJjb21wYW55IiwiYWdlbnRzQ291bnQiLCJzaXplIiwiY3JlYXRlIiwib3Blbk1vZGFsIiwib3B0aW9uIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcmdhbmlzbXMvQ2hhdEFJUGFnZS9DaGF0QUlQYWdlSGVhZGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ2hldnJvbkxlZnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uTGVmdCdcbmltcG9ydCB7IFBsdXMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QbHVzJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IENoYXRBSUFnZW50T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2NvbXBvbmVudHMvQ2hhdEFpQWdlbnRPcHRpb25zL0NoYXRBaUFnZW50T3B0aW9ucydcbmltcG9ydCB7XG4gIFNDQ0FJTUhBZGRBZ2VudCxcbiAgU0NDQUlNSEFnZW50c0xpc3QsXG4gIFNDQ0FJTUhCYWNrQnV0dG9uLFxuICBTQ0NBSU1IRGl2aWRlcixcbiAgU0NDQUlNSExvYWRlcldyYXBwZXIsXG4gIFNDQ0FJTUhQbHVzSWNvbldyYXBwZXIsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50LFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQsXG4gIFNDQ0FJTUhXcmFwcGVyLFxuICBTQ0NBSU1IV3JhcHBlckljb24sXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWwsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50LFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlLFxufSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlci5zdHlsZXMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBTQ1BhZ2VIZWFkZXIsIFNDUGFnZUhlYWRlclN0YXJ0IH0gZnJvbSAnLi9DaGF0QUlQYWdlSGVhZGVyLnN0eWxlcydcblxuaW50ZXJmYWNlIENoYXRBSVBhZ2VIZWFkZXJQcm9wcyB7XG4gIG92ZXJsYXk/OiBib29sZWFuXG4gIHNob3dCYWNrPzogYm9vbGVhblxuICBhZ2VudHM/OiBBZ2VudFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIGxvYWRpbmdNb3JlPzogYm9vbGVhblxuICBoYXNNb3JlPzogYm9vbGVhblxuICBsb2FkTW9yZUFnZW50cz86ICgpID0+IHZvaWRcbiAgc29ydEFnZW50c0xpc3Q/OiAoKSA9PiB2b2lkXG4gIGhhbmRsZVJlc2V0Q2hhdDogKCkgPT4gdm9pZFxuICBvbkFnZW50VXBkYXRlPzogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSVBhZ2VIZWFkZXIgPSAoe1xuICBvdmVybGF5ID0gZmFsc2UsXG4gIHNob3dCYWNrID0gZmFsc2UsXG4gIGFnZW50cyA9IFtdLFxuICBsb2FkaW5nID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlID0gZmFsc2UsXG4gIGhhc01vcmUgPSBmYWxzZSxcbiAgbG9hZE1vcmVBZ2VudHMsXG4gIHNvcnRBZ2VudHNMaXN0LFxuICBoYW5kbGVSZXNldENoYXQsXG4gIG9uQWdlbnRVcGRhdGUsXG59OiBDaGF0QUlQYWdlSGVhZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnQsIFNFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0ZXh0UmVmQWdlbnQgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBkcm9wZG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgYWdlbnRzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmQWdlbnQsIFtzZWxlY3RlZEFnZW50Py5uYW1lXSlcblxuICBjb25zdCBpc01haWFBZ2VudCA9IHVzZUNhbGxiYWNrKChhZ2VudEl0ZW06IEFnZW50KSA9PiBhZ2VudEl0ZW0udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicsIFtdKVxuICBjb25zdCBhZ2VudHNGb3JTZWxlY3RvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYWdlbnRzLmZpbHRlcihhZ2VudEl0ZW0gPT4gaXNNYWlhQWdlbnQoYWdlbnRJdGVtKSB8fCBhZ2VudEl0ZW0uZW50aXR5ICE9PSAnZ2xvYmFsJyksXG4gICAgW2FnZW50cywgaXNNYWlhQWdlbnRdXG4gIClcblxuICBjb25zdCBsb2NhbEFnZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19mcm9tX2NvbnZlcnNhdGlvbiB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfbGVnYWN5X2NvbnRleHRcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEFnZW50XG4gICAgfVxuICAgIGNvbnN0IGZyb21MaXN0ID0gYWdlbnRzLmZpbmQoXG4gICAgICBpdGVtID0+ICFpdGVtLmlzX2RlbGV0ZWQgJiYgIWl0ZW0uaGFzX25vdF9wZXJtaXNzaW9ucyAmJiAhaXRlbS5oYXNfbm90X2FjY2VzcyAmJiBpdGVtLmlkID09PSBzZWxlY3RlZEFnZW50Py5pZFxuICAgIClcbiAgICByZXR1cm4gZnJvbUxpc3QgPz8gc2VsZWN0ZWRBZ2VudCA/PyBudWxsXG4gIH0sIFthZ2VudHMsIHNlbGVjdGVkQWdlbnRdKVxuXG4gIGNvbnN0IHNlbGVjdG9ySWNvbiA9XG4gICAgbG9jYWxBZ2VudHM/LnR5cGUgPT09ICdjdXN0b20nICYmICFsb2NhbEFnZW50cz8uaXNfbGVnYWN5X2NvbnRleHQgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz5cbiAgY29uc3Qgc2VsZWN0b3JMYWJlbCA9IGxvY2FsQWdlbnRzPy5uYW1lID8/ICcnXG4gIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoZHJvcGRvd25SZWYuY3VycmVudCAmJiAhZHJvcGRvd25SZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFhZ2VudHNSZWYuY3VycmVudCB8fCAhbG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmUgfHwgbG9hZGluZ01vcmUpIHJldHVyblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgaWYgKHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA8IDUwKSB7XG4gICAgICAgIGxvYWRNb3JlQWdlbnRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGFnZW50c1JlZi5jdXJyZW50Py5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfSwgMTAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBhZ2VudHNSZWYuY3VycmVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxvYWRNb3JlQWdlbnRzLCBoYXNNb3JlLCBsb2FkaW5nTW9yZV0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dEFnZW50OiBBZ2VudCkgPT4ge1xuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHsgYWdlbnRfdHlwZTogbmV4dEFnZW50Py50eXBlIH0pXG4gICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVSZXNldENoYXQoKVxuICAgICAgfSwgMTAwKVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBhbXBsaXR1ZEV2ZW50LCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUV4cGFuZCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIHNvcnRBZ2VudHNMaXN0Py4oKVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBzaG93Q3VzdG9tQWdlbnRzVGl0bGUgPVxuICAgIGFnZW50c0ZvclNlbGVjdG9yLnNvbWUoaXRlbSA9PiBpdGVtLnR5cGUgPT09ICdjdXN0b20nKSAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0b3IgPVxuICAgICFsb2FkaW5nICYmXG4gICAgISFzZWxlY3RlZEFnZW50ICYmXG4gICAgKCEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxuXG4gIHJldHVybiAoXG4gICAgPFNDUGFnZUhlYWRlciAkb3ZlcmxheT17b3ZlcmxheX0+XG4gICAgICA8U0NQYWdlSGVhZGVyU3RhcnQ+XG4gICAgICAgIHtzaG91bGRSZW5kZXJTZWxlY3RvciA/IChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXIgcmVmPXtkcm9wZG93blJlZn0gb25DbGljaz17YWdlbnRzLmxlbmd0aCA/IGhhbmRsZUV4cGFuZCA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXBBZ2VudCA/IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0XG4gICAgICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgICAgIGlzQWdlbnREZWxldGVkPXtcbiAgICAgICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICAgICAhIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfbGVnYWN5X2NvbnRleHRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzIwMjAxRlwiIC8+XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVySWNvbj5cbiAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gKFxuICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICB7d2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3IuZmlsdGVyKGlzTWFpYUFnZW50KS5tYXAoKG1haWFBZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke21haWFBZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudD17bWFpYUFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IG1haWFBZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYWlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge3Nob3dDdXN0b21BZ2VudHNUaXRsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdhZ2VudHMnKX0gYnkge3VzZXIuY29tcGFueX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8U0NDQUlNSEFnZW50c0xpc3QgaGFzTW9yZT17aGFzTW9yZX0gYWdlbnRzQ291bnQ9e2FnZW50c0ZvclNlbGVjdG9yLmxlbmd0aH0gcmVmPXthZ2VudHNSZWZ9PlxuICAgICAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3IubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmlzX2RlbGV0ZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlID09PSAnY2xvbmUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01haWFBZ2VudChpdGVtKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW0/LnR5cGUgPT09ICdjdXN0b20nICYmICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgYWdlbnQtJHtpdGVtLmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50PXtpdGVtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGl0ZW0uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRXhwYW5kZWQ9e3NldElzRXhwYW5kZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIHtsb2FkaW5nTW9yZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSExvYWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1ITG9hZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhBZ2VudHNMaXN0PlxuICAgICAgICAgICAgICAgICAge3VzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSEFkZEFnZW50XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLm9wZW5Nb2RhbCwgeyBvcHRpb246ICdjcmVhdGVfYWdlbnQnIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFBsdXNJY29uV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzIGNvbG9yPVwid2hpdGVcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IUGx1c0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdjcmVhdGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhBZGRBZ2VudD5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1BhZ2VIZWFkZXJTdGFydD5cbiAgICAgIHtzaG93QmFjayA/IChcbiAgICAgICAgPFNDQ0FJTUhCYWNrQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVSZXNldENoYXR9PlxuICAgICAgICAgIDxDaGV2cm9uTGVmdCB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzM0MzQzM1wiIC8+XG4gICAgICAgICAge3QoJ2JhY2snKX1cbiAgICAgICAgPC9TQ0NBSU1IQmFja0J1dHRvbj5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NQYWdlSGVhZGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FB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
@@ -0,0 +1,13 @@
1
+ import styled from 'styled-components';
2
+ export var SCPageHeader = styled.header.withConfig({
3
+ displayName: "ChatAIPageHeaderstyles__SCPageHeader",
4
+ componentId: "sc-11cr9wi-0"
5
+ })(["display:flex;padding:8px 16px;justify-content:space-between;align-items:center;align-self:stretch;flex-shrink:0;background:transparent;", ""], function (_ref) {
6
+ var $overlay = _ref.$overlay;
7
+ return $overlay ? "\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n z-index: 2;\n " : '';
8
+ });
9
+ export var SCPageHeaderStart = styled.div.withConfig({
10
+ displayName: "ChatAIPageHeaderstyles__SCPageHeaderStart",
11
+ componentId: "sc-11cr9wi-1"
12
+ })(["display:flex;align-items:center;gap:8px;min-width:0;"]);
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJTQ1BhZ2VIZWFkZXIiLCJoZWFkZXIiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIl9yZWYiLCIkb3ZlcmxheSIsIlNDUGFnZUhlYWRlclN0YXJ0IiwiZGl2Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0NoYXRBSVBhZ2UvQ2hhdEFJUGFnZUhlYWRlci5zdHlsZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5cbmV4cG9ydCBjb25zdCBTQ1BhZ2VIZWFkZXIgPSBzdHlsZWQuaGVhZGVyPHsgJG92ZXJsYXk/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiA4cHggMTZweDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LXNocmluazogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICR7KHsgJG92ZXJsYXkgfSkgPT5cbiAgICAkb3ZlcmxheVxuICAgICAgPyBgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHotaW5kZXg6IDI7XG4gIGBcbiAgICAgIDogJyd9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ1BhZ2VIZWFkZXJTdGFydCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBtaW4td2lkdGg6IDA7XG5gXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxtQkFBbUI7QUFFdEMsT0FBTyxJQUFNQyxZQUFZLEdBQUdELE1BQU0sQ0FBQ0UsTUFBTSxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLG9KQVFyQyxVQUFBQyxJQUFBO0VBQUEsSUFBR0MsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7RUFBQSxPQUNYQSxRQUFRLGdHQVFKLEVBQUU7QUFBQSxFQUNUO0FBRUQsT0FBTyxJQUFNQyxpQkFBaUIsR0FBR1IsTUFBTSxDQUFDUyxHQUFHLENBQUFOLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsNERBSzFDIiwiaWdub3JlTGlzdCI6W119