@projectcor/maia-components 2.11.94-0 → 2.11.95

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 (131) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +2 -2
  3. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +28 -41
  4. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +128 -0
  5. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
  6. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +41 -2
  7. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
  8. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
  9. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +23 -4
  10. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +15 -7
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +10 -4
  12. package/lib/components/atoms/MAIAInput/MAIAInput.js +47 -26
  13. package/lib/components/atoms/icons/ActionCalendarIcon.js +112 -0
  14. package/lib/components/atoms/icons/ActionChatIcon.js +71 -0
  15. package/lib/components/atoms/icons/ActionTimeBackIcon.js +112 -0
  16. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  17. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  18. package/lib/components/atoms/icons/index.js +3 -2
  19. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -1
  20. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +14 -1
  21. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +3 -3
  22. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +117 -30
  23. package/lib/components/molecules/ChatAIHome/styles.js +142 -49
  24. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +12 -48
  25. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +6 -2
  26. package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
  27. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +122 -212
  28. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +18 -28
  29. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +3 -10
  30. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +7 -17
  31. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +1 -5
  32. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  33. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  34. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +3 -3
  35. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  36. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  37. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  38. package/lib/components/molecules/ChatFooter/ChatFooter.js +19 -8
  39. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  40. package/lib/components/molecules/Sidebar/Sidebar.js +93 -112
  41. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +1 -16
  42. package/lib/components/molecules/Sidebar/Sidebar.styles.js +29 -34
  43. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +175 -0
  44. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  45. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  46. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +451 -0
  47. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  48. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  49. package/lib/components/organisms/ChatAI/ChatAI.js +17 -10
  50. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  51. package/lib/constants/config.js +4 -1
  52. package/lib/constants/maiaHourAgentAccess.js +15 -0
  53. package/lib/constants/maiaTaskPanelAccess.js +4 -4
  54. package/lib/constants/permissions/index.js +2 -2
  55. package/lib/constants/permissions/utils.js +4 -1
  56. package/lib/constants/plannerSyncEvents.js +15 -0
  57. package/lib/context/cor-user.js +9 -1
  58. package/lib/context/global-context.js +1 -1
  59. package/lib/dev/DevChatAI.js +2 -2
  60. package/lib/hooks/useChatManager/useChatManager.js +456 -560
  61. package/lib/hooks/useChatMessages/useChatMessages.js +236 -414
  62. package/lib/hooks/useChats/useChats.js +4 -21
  63. package/lib/hooks/useContextMentions.js +51 -9
  64. package/lib/hooks/useContextPinPopover.js +1 -8
  65. package/lib/hooks/useEntitySearch.js +277 -91
  66. package/lib/hooks/useEvent.js +2 -1
  67. package/lib/hooks/useFrequentlyUsedActions.js +4 -2
  68. package/lib/hooks/useMentionAllowedTypes.js +26 -8
  69. package/lib/hooks/useMentionPopover.js +43 -13
  70. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  71. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +521 -139
  72. package/lib/hooks/useProjectSummaryConfig.js +23 -30
  73. package/lib/hooks/useSlashCommands.js +3 -2
  74. package/lib/hooks/useStreamingMessage/index.js +3 -2
  75. package/lib/hooks/useStreamingMessage/streamingStore.js +69 -0
  76. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +17 -13
  77. package/lib/lang/br/index.js +73 -15
  78. package/lib/lang/en/index.js +73 -15
  79. package/lib/lang/es/index.js +73 -15
  80. package/lib/lang/fr/index.js +70 -17
  81. package/lib/services/appcues.js +3 -2
  82. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  83. package/lib/services/maia/Agents/getAgents.js +3 -6
  84. package/lib/services/maia/Chats/getChatsByUserId.js +4 -6
  85. package/lib/services/maia/Chats/index.js +1 -3
  86. package/lib/services/maia/Orchestrator/orchestrator.js +1 -7
  87. package/lib/services/maia/Skills/createSkill.js +39 -0
  88. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  89. package/lib/services/maia/Skills/generateSkill.js +41 -0
  90. package/lib/services/maia/Skills/getSkills.js +90 -0
  91. package/lib/services/maia/Skills/updateSkill.js +39 -0
  92. package/lib/store/chatsStore.types.js +1 -1
  93. package/lib/store/useChatsStore.js +12 -149
  94. package/lib/types/Action.js +1 -1
  95. package/lib/types/Chat.js +1 -1
  96. package/lib/types/agent.js +1 -1
  97. package/lib/types/contextMention.js +1 -1
  98. package/lib/types/global.d.js +1 -1
  99. package/lib/types/skill.js +2 -0
  100. package/lib/utils/actionCategoryMap.js +6 -2
  101. package/lib/utils/actionIconMap.js +8 -2
  102. package/lib/utils/contextMentionIcons.js +29 -1
  103. package/lib/utils/contextMentionTriggers.js +6 -3
  104. package/lib/utils/hoursPlannerQuickActionType.js +64 -0
  105. package/lib/utils/orchestratorSubagents.js +11 -0
  106. package/lib/utils/renderContextMentions.js +9 -4
  107. package/lib/utils/streamActivityMessages.js +2 -1
  108. package/package.json +15 -10
  109. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +0 -17
  110. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +0 -15
  111. package/lib/components/atoms/SessionGeneratingDot/index.js +0 -2
  112. package/lib/components/atoms/icons/MaiaSparkleIcon.js +0 -75
  113. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +0 -55
  114. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +0 -46
  115. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +0 -2
  116. package/lib/services/maia/Chats/markSessionAsRead.js +0 -32
  117. package/lib/store/chatsSidebarOptimistic.js +0 -92
  118. package/lib/store/maiaMinimizedPersistence.js +0 -49
  119. package/lib/store/sessions/activeView.js +0 -22
  120. package/lib/store/sessions/index.js +0 -9
  121. package/lib/store/sessions/sessionHitlContext.js +0 -15
  122. package/lib/store/sessions/sessionNotificationSound.js +0 -57
  123. package/lib/store/sessions/sessionNotifications.js +0 -110
  124. package/lib/store/sessions/sessionNotifications.types.js +0 -2
  125. package/lib/store/sessions/sessionStreamManager.js +0 -576
  126. package/lib/store/sessions/sessionStreamingText.js +0 -80
  127. package/lib/store/sessions/sessions.types.js +0 -35
  128. package/lib/store/sessions/useSessionMeta.js +0 -39
  129. package/lib/store/sessions/useSessionStreamingText.js +0 -18
  130. package/lib/store/sessions/useSessionsStore.js +0 -197
  131. package/lib/utils/formatUnreadCount.js +0 -6
@@ -0,0 +1,128 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ /* eslint-disable import/no-extraneous-dependencies */
5
+ import React, { useEffect, useState } from 'react';
6
+ import mammoth from 'mammoth';
7
+ import { useTranslation } from 'react-i18next';
8
+ import { downloadFileFromUrl } from '../../../utils/fileDownloadHelper';
9
+ import { SCAPMFileName, SCAPMLoadingContainer, SCAPMMarkdownContainer } from './AttachmentPreviewModal.styles';
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ var isLegacyDocFile = function isLegacyDocFile(fileName) {
12
+ return fileName.toLowerCase().endsWith('.doc') && !fileName.toLowerCase().endsWith('.docx');
13
+ };
14
+ export var WordPreview = function WordPreview(_ref) {
15
+ var file = _ref.file,
16
+ fileUrl = _ref.fileUrl,
17
+ fileName = _ref.fileName;
18
+ var _useTranslation = useTranslation(['chat_ai_section']),
19
+ t = _useTranslation.t;
20
+ var _useState = useState(''),
21
+ _useState2 = _slicedToArray(_useState, 2),
22
+ htmlContent = _useState2[0],
23
+ setHtmlContent = _useState2[1];
24
+ var _useState3 = useState(true),
25
+ _useState4 = _slicedToArray(_useState3, 2),
26
+ isLoading = _useState4[0],
27
+ setIsLoading = _useState4[1];
28
+ var _useState5 = useState(null),
29
+ _useState6 = _slicedToArray(_useState5, 2),
30
+ error = _useState6[0],
31
+ setError = _useState6[1];
32
+ useEffect(function () {
33
+ if (isLegacyDocFile(fileName)) {
34
+ setError(t('chat.attachmentPreviewModal.word.legacyDocUnsupported'));
35
+ setIsLoading(false);
36
+ return undefined;
37
+ }
38
+ var isCancelled = false;
39
+ var loadDocx = /*#__PURE__*/function () {
40
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
41
+ var sourceFile, arrayBuffer, result, _t;
42
+ return _regeneratorRuntime.wrap(function (_context) {
43
+ while (1) switch (_context.prev = _context.next) {
44
+ case 0:
45
+ _context.prev = 0;
46
+ setIsLoading(true);
47
+ setError(null);
48
+ sourceFile = file;
49
+ if (!(!sourceFile && fileUrl)) {
50
+ _context.next = 2;
51
+ break;
52
+ }
53
+ _context.next = 1;
54
+ return downloadFileFromUrl(fileUrl, fileName);
55
+ case 1:
56
+ sourceFile = _context.sent;
57
+ case 2:
58
+ if (sourceFile) {
59
+ _context.next = 3;
60
+ break;
61
+ }
62
+ throw new Error('missing-file');
63
+ case 3:
64
+ _context.next = 4;
65
+ return sourceFile.arrayBuffer();
66
+ case 4:
67
+ arrayBuffer = _context.sent;
68
+ _context.next = 5;
69
+ return mammoth.convertToHtml({
70
+ arrayBuffer: arrayBuffer
71
+ });
72
+ case 5:
73
+ result = _context.sent;
74
+ if (!isCancelled) {
75
+ _context.next = 6;
76
+ break;
77
+ }
78
+ return _context.abrupt("return");
79
+ case 6:
80
+ setHtmlContent(result.value);
81
+ setIsLoading(false);
82
+ _context.next = 8;
83
+ break;
84
+ case 7:
85
+ _context.prev = 7;
86
+ _t = _context["catch"](0);
87
+ if (!isCancelled) {
88
+ setError(t('chat.attachmentPreviewModal.word.loadError'));
89
+ setIsLoading(false);
90
+ }
91
+ case 8:
92
+ case "end":
93
+ return _context.stop();
94
+ }
95
+ }, _callee, null, [[0, 7]]);
96
+ }));
97
+ return function loadDocx() {
98
+ return _ref2.apply(this, arguments);
99
+ };
100
+ }();
101
+ loadDocx();
102
+ return function () {
103
+ isCancelled = true;
104
+ };
105
+ }, [file, fileUrl, fileName, t]);
106
+ if (isLoading) {
107
+ return /*#__PURE__*/_jsx(SCAPMLoadingContainer, {
108
+ children: /*#__PURE__*/_jsx("span", {
109
+ children: t('chat.attachmentPreviewModal.loading')
110
+ })
111
+ });
112
+ }
113
+ if (error || !htmlContent) {
114
+ return /*#__PURE__*/_jsxs(SCAPMMarkdownContainer, {
115
+ children: [/*#__PURE__*/_jsx(SCAPMFileName, {
116
+ children: fileName
117
+ }), /*#__PURE__*/_jsx("p", {
118
+ children: error || t('chat.attachmentPreviewModal.word.loadError')
119
+ })]
120
+ });
121
+ }
122
+ return /*#__PURE__*/_jsx(SCAPMMarkdownContainer, {
123
+ dangerouslySetInnerHTML: {
124
+ __html: htmlContent
125
+ }
126
+ });
127
+ };
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwibWFtbW90aCIsInVzZVRyYW5zbGF0aW9uIiwiZG93bmxvYWRGaWxlRnJvbVVybCIsIlNDQVBNRmlsZU5hbWUiLCJTQ0FQTUxvYWRpbmdDb250YWluZXIiLCJTQ0FQTU1hcmtkb3duQ29udGFpbmVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsImlzTGVnYWN5RG9jRmlsZSIsImZpbGVOYW1lIiwidG9Mb3dlckNhc2UiLCJlbmRzV2l0aCIsIldvcmRQcmV2aWV3IiwiX3JlZiIsImZpbGUiLCJmaWxlVXJsIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImh0bWxDb250ZW50Iiwic2V0SHRtbENvbnRlbnQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZXJyb3IiLCJzZXRFcnJvciIsInVuZGVmaW5lZCIsImlzQ2FuY2VsbGVkIiwibG9hZERvY3giLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwic291cmNlRmlsZSIsImFycmF5QnVmZmVyIiwicmVzdWx0IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInNlbnQiLCJFcnJvciIsImNvbnZlcnRUb0h0bWwiLCJhYnJ1cHQiLCJ2YWx1ZSIsInN0b3AiLCJhcHBseSIsImFyZ3VtZW50cyIsImNoaWxkcmVuIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsL1dvcmRQcmV2aWV3LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbWFtbW90aCBmcm9tICdtYW1tb3RoJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgZG93bmxvYWRGaWxlRnJvbVVybCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZpbGVEb3dubG9hZEhlbHBlcidcbmltcG9ydCB7IFNDQVBNRmlsZU5hbWUsIFNDQVBNTG9hZGluZ0NvbnRhaW5lciwgU0NBUE1NYXJrZG93bkNvbnRhaW5lciB9IGZyb20gJy4vQXR0YWNobWVudFByZXZpZXdNb2RhbC5zdHlsZXMnXG5cbnR5cGUgV29yZFByZXZpZXdQcm9wcyA9IHtcbiAgZmlsZT86IEZpbGVcbiAgZmlsZVVybD86IHN0cmluZ1xuICBmaWxlTmFtZTogc3RyaW5nXG59XG5cbmNvbnN0IGlzTGVnYWN5RG9jRmlsZSA9IChmaWxlTmFtZTogc3RyaW5nKSA9PlxuICBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuZG9jJykgJiYgIWZpbGVOYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJy5kb2N4JylcblxuZXhwb3J0IGNvbnN0IFdvcmRQcmV2aWV3OiBSZWFjdC5GQzxXb3JkUHJldmlld1Byb3BzPiA9ICh7IGZpbGUsIGZpbGVVcmwsIGZpbGVOYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2NoYXRfYWlfc2VjdGlvbiddKVxuICBjb25zdCBbaHRtbENvbnRlbnQsIHNldEh0bWxDb250ZW50XSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNMZWdhY3lEb2NGaWxlKGZpbGVOYW1lKSkge1xuICAgICAgc2V0RXJyb3IodCgnY2hhdC5hdHRhY2htZW50UHJldmlld01vZGFsLndvcmQubGVnYWN5RG9jVW5zdXBwb3J0ZWQnKSlcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBsZXQgaXNDYW5jZWxsZWQgPSBmYWxzZVxuXG4gICAgY29uc3QgbG9hZERvY3ggPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICAgICAgc2V0RXJyb3IobnVsbClcblxuICAgICAgICBsZXQgc291cmNlRmlsZSA9IGZpbGVcblxuICAgICAgICBpZiAoIXNvdXJjZUZpbGUgJiYgZmlsZVVybCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVXJsKGZpbGVVcmwsIGZpbGVOYW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nLWZpbGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBzb3VyY2VGaWxlLmFycmF5QnVmZmVyKClcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbWFtbW90aC5jb252ZXJ0VG9IdG1sKHsgYXJyYXlCdWZmZXIgfSlcblxuICAgICAgICBpZiAoaXNDYW5jZWxsZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHNldEh0bWxDb250ZW50KHJlc3VsdC52YWx1ZSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGlmICghaXNDYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXRFcnJvcih0KCdjaGF0LmF0dGFjaG1lbnRQcmV2aWV3TW9kYWwud29yZC5sb2FkRXJyb3InKSlcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkRG9jeCgpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNDYW5jZWxsZWQgPSB0cnVlXG4gICAgfVxuICB9LCBbZmlsZSwgZmlsZVVybCwgZmlsZU5hbWUsIHRdKVxuXG4gIGlmIChpc0xvYWRpbmcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDQVBNTG9hZGluZ0NvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4+e3QoJ2NoYXQuYXR0YWNobWVudFByZXZpZXdNb2RhbC5sb2FkaW5nJyl9PC9zcGFuPlxuICAgICAgPC9TQ0FQTUxvYWRpbmdDb250YWluZXI+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yIHx8ICFodG1sQ29udGVudCkge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NBUE1NYXJrZG93bkNvbnRhaW5lcj5cbiAgICAgICAgPFNDQVBNRmlsZU5hbWU+e2ZpbGVOYW1lfTwvU0NBUE1GaWxlTmFtZT5cbiAgICAgICAgPHA+e2Vycm9yIHx8IHQoJ2NoYXQuYXR0YWNobWVudFByZXZpZXdNb2RhbC53b3JkLmxvYWRFcnJvcicpfTwvcD5cbiAgICAgIDwvU0NBUE1NYXJrZG93bkNvbnRhaW5lcj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gPFNDQVBNTWFya2Rvd25Db250YWluZXIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBodG1sQ29udGVudCB9fSAvPlxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNsRCxPQUFPQyxPQUFPLE1BQU0sU0FBUztBQUM3QixTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxtQkFBbUIsUUFBUSxtQ0FBbUM7QUFDdkUsU0FBU0MsYUFBYSxF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
@@ -46,6 +46,10 @@ export var MENTION_CHIP_COLORS = {
46
46
  mcp: {
47
47
  bg: NON_TASK_CHIP_BG,
48
48
  fg: NON_TASK_CHIP_FG
49
+ },
50
+ skill: {
51
+ bg: 'transparent',
52
+ fg: NON_TASK_CHIP_FG
49
53
  }
50
54
  };
51
55
 
@@ -102,7 +106,7 @@ var chipSurfaceCss = function chipSurfaceCss(type) {
102
106
  /**
103
107
  * Hover y superficie para chips montados por `buildChipElement` (estilos inline en el host).
104
108
  */
105
- export var ContextMentionChipGlobalStyles = createGlobalStyle([".", ":not([data-mention-type='task']):hover{background:", " !important;}.", "[data-mention-type='project']:hover{background:", " !important;}[contenteditable='true'] .", "[data-mention-surface='editor']{display:inline !important;max-width:100% !important;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']{display:inline !important;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;position:relative !important;padding:2px 0 !important;padding-left:22px !important;background:transparent !important;font-size:14px !important;line-height:20px !important;border-radius:0 !important;cursor:pointer !important;}[contenteditable='true'] .", "[data-mention-type='project'][data-mention-surface='editor']{cursor:pointer !important;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']::before{content:'';position:absolute;left:2px;top:1px;top:calc((1lh - 16px) / 2 - 1px);width:18px;height:18px;background-image:", ";background-size:contain;background-repeat:no-repeat;background-position:center;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']:hover{text-decoration-line:underline !important;text-decoration-color:#b3b3b3 !important;text-decoration-thickness:1px !important;text-underline-offset:2px !important;background:", " !important;border-radius:4px !important;}"], CONTEXT_MENTION_CHIP_CLASS, MENTION_CHIP_NON_TASK_HOVER_BG, CONTEXT_MENTION_CHIP_CLASS, VIOLET_IA_COLORS[100], CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, TASK_LINK_ICON_CSS_URL, CONTEXT_MENTION_CHIP_CLASS, MENTION_CHIP_TASK_EDITOR_HOVER_BG);
109
+ export var ContextMentionChipGlobalStyles = createGlobalStyle([".", ":not([data-mention-type='task']):not([data-mention-type='skill']):hover{background:", " !important;}.", "[data-mention-type='project']:hover{background:", " !important;}[contenteditable='true'] .", "[data-mention-surface='editor']{display:inline !important;max-width:100% !important;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']{display:inline !important;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;position:relative !important;padding:2px 0 !important;padding-left:22px !important;background:transparent !important;font-size:14px !important;line-height:20px !important;border-radius:0 !important;cursor:pointer !important;}[contenteditable='true'] .", "[data-mention-type='project'][data-mention-surface='editor']{cursor:pointer !important;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']::before{content:'';position:absolute;left:2px;top:1px;top:calc((1lh - 16px) / 2 - 1px);width:18px;height:18px;background-image:", ";background-size:contain;background-repeat:no-repeat;background-position:center;}[contenteditable='true'] .", "[data-mention-type='task'][data-mention-surface='editor']:hover{text-decoration-line:underline !important;text-decoration-color:#b3b3b3 !important;text-decoration-thickness:1px !important;text-underline-offset:2px !important;background:", " !important;border-radius:4px !important;}"], CONTEXT_MENTION_CHIP_CLASS, MENTION_CHIP_NON_TASK_HOVER_BG, CONTEXT_MENTION_CHIP_CLASS, VIOLET_IA_COLORS[100], CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, CONTEXT_MENTION_CHIP_CLASS, TASK_LINK_ICON_CSS_URL, CONTEXT_MENTION_CHIP_CLASS, MENTION_CHIP_TASK_EDITOR_HOVER_BG);
106
110
 
107
111
  /**
108
112
  * Aplica los estilos del chip a un nodo DOM existente.
@@ -116,7 +120,7 @@ export var applyMentionChipStyles = function applyMentionChipStyles(el, type) {
116
120
  }));
117
121
  };
118
122
  var chipHoverCss = function chipHoverCss(type) {
119
- if (type === 'task') return css([""]);
123
+ if (type === 'task' || type === 'skill') return css([""]);
120
124
  if (type === 'project') {
121
125
  return css(["background:", ";"], VIOLET_IA_COLORS[100]);
122
126
  }
@@ -181,4 +185,4 @@ export var SCMCChipPlainLabel = styled.span.withConfig({
181
185
  displayName: "ContextMentionChipstyles__SCMCChipPlainLabel",
182
186
  componentId: "sc-11ynxow-4"
183
187
  })(["display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--cor-typography-font-family,'Work Sans');font-size:14px;font-weight:500;line-height:20px;color:", ";"], colors.text.primary);
184
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJjcmVhdGVHbG9iYWxTdHlsZSIsImNvbG9ycyIsIkJMVUVfSUFfQ09MT1JTIiwiVklPTEVUX0lBX0NPTE9SUyIsIkNPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTIiwiVEFTS19MSU5LX0lDT05fQ1NTX1VSTCIsIlRBU0tfQ0hJUF9CRyIsIlRBU0tfQ0hJUF9GRyIsInRleHQiLCJwcmltYXJ5IiwiTk9OX1RBU0tfQ0hJUF9CRyIsIk5PTl9UQVNLX0NISVBfRkciLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJNRU5USU9OX0NISVBfVEFTS19IT1ZFUl9CRyIsIk1FTlRJT05fQ0hJUF9UQVNLX0VESVRPUl9IT1ZFUl9CRyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJjbGllbnQiLCJiZyIsImZnIiwicHJvamVjdCIsInRhc2siLCJ1c2VyIiwibWNwIiwiTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTSyIsImRpc3BsYXkiLCJwYWRkaW5nIiwicGFkZGluZ0xlZnQiLCJtYXJnaW4iLCJtYXhXaWR0aCIsImJvcmRlclJhZGl1cyIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Iiwid2hpdGVTcGFjZSIsIm92ZXJmbG93V3JhcCIsIndvcmRCcmVhayIsInVzZXJTZWxlY3QiLCJ2ZXJ0aWNhbEFsaWduIiwiY3Vyc29yIiwiTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfTk9OX1RBU0siLCJNRU5USU9OX0NISVBfQkFTRV9TVFlMRSIsImNoaXBDb2xvcnMiLCJ0eXBlIiwiX01FTlRJT05fQ0hJUF9DT0xPUlMkIiwiY2hpcFN1cmZhY2VDc3MiLCJjIiwiQ29udGV4dE1lbnRpb25DaGlwR2xvYmFsU3R5bGVzIiwiYXBwbHlNZW50aW9uQ2hpcFN0eWxlcyIsImVsIiwiYmFzZSIsIk9iamVjdCIsImFzc2lnbiIsInN0eWxlIiwiX29iamVjdFNwcmVhZCIsImJhY2tncm91bmQiLCJjb2xvciIsImNoaXBIb3ZlckNzcyIsIlNDTUNDaGlwIiwic3BhbiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsIiR0eXBlIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiX3JlZjUiLCJfcmVmNiIsIl9yZWY3IiwiX3JlZjgiLCJTQ01DQ2hpcEljb24iLCJfcmVmOSIsIiR0YXNrIiwiX3JlZjAiLCJfcmVmMSIsIlNDTUNUYXNrQ2hpcExhYmVsV3JhcCIsIlNDTUNUYXNrQ2hpcExhYmVsVGV4dCIsIlNDTUNDaGlwUGxhaW5MYWJlbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkLCB7IGNzcywgY3JlYXRlR2xvYmFsU3R5bGUgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCBjb2xvcnMgZnJvbSAnQHByb2plY3Rjb3IvdGhlbWUvbGliL2Jhc2UvY29sb3JzJ1xuaW1wb3J0IHsgQkxVRV9JQV9DT0xPUlMsIFZJT0xFVF9JQV9DT0xPUlMgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHsgQ09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1MsIENvbnRleHRFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBUQVNLX0xJTktfSUNPTl9DU1NfVVJMIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tMaW5rSWNvbidcblxuY29uc3QgVEFTS19DSElQX0JHID0gJ3RyYW5zcGFyZW50J1xuY29uc3QgVEFTS19DSElQX0ZHID0gY29sb3JzLnRleHQucHJpbWFyeVxuXG5jb25zdCBOT05fVEFTS19DSElQX0JHID0gJyNiM2UxZmYnXG5jb25zdCBOT05fVEFTS19DSElQX0ZHID0gY29sb3JzLnRleHQucHJpbWFyeVxuXG4vKiogSG92ZXIgZGVsIGNoaXAg4oCcbnVldm/igJ0gKGNsaWVudCwgcHJvamVjdCwgdXNlciwgbWNwKS4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkcgPSAnI2VkZmFmZidcblxuLyoqIEhvdmVyIGRlbCBjaGlwIGRlIHRhcmVhIGVuIGNoYXQgLyBzdXBlcmZpY2llIOKAnG5vIGVkaXRvcuKAnS4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX0NISVBfVEFTS19IT1ZFUl9CRyA9IEJMVUVfSUFfQ09MT1JTWzEwMF1cblxuLyoqIEhvdmVyIGRlbCBjaGlwIGRlIHRhcmVhIGRlbnRybyBkZWwgaW5wdXQgKGNvbnRlbnRlZGl0YWJsZSkuICovXG5leHBvcnQgY29uc3QgTUVOVElPTl9DSElQX1RBU0tfRURJVE9SX0hPVkVSX0JHID0gJyNGMkYyRjInXG5cbi8qKiBNaXNtbyDDrWNvbm8gcXVlIGAuaGFzLXRhc2stbGlua3MgYTo6YmVmb3JlYCBlbiBtZW5zYWplcyBkZWwgYWdlbnRlIChjaGVja2xpc3QgYXp1bCkuICovXG5cbi8qKlxuICogUGFsZXRhIGNvbXBhcnRpZGEgZW50cmUgZWwgc3R5bGVkLWNvbXBvbmVudCAoYFNDTUNDaGlwYCkgeSBlbCBidWlsZGVyXG4gKiBpbXBlcmF0aXZvIChgYnVpbGRDaGlwRWxlbWVudGApIHF1ZSBpbnNlcnRhIGVsIGNoaXAgZGVudHJvIGRlbCBjb250ZW50ZWRpdGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX0NISVBfQ09MT1JTOiBSZWNvcmQ8Q29udGV4dEVudGl0eVR5cGUsIHsgYmc6IHN0cmluZzsgZmc6IHN0cmluZyB9PiA9IHtcbiAgY2xpZW50OiB7IGJnOiBOT05fVEFTS19DSElQX0JHLCBmZzogTk9OX1RBU0tfQ0hJUF9GRyB9LFxuICBwcm9qZWN0OiB7IGJnOiBWSU9MRVRfSUFfQ09MT1JTWzUwXSwgZmc6IE5PTl9UQVNLX0NISVBfRkcgfSxcbiAgdGFzazogeyBiZzogVEFTS19DSElQX0JHLCBmZzogVEFTS19DSElQX0ZHIH0sXG4gIHVzZXI6IHsgYmc6IE5PTl9UQVNLX0NISVBfQkcsIGZnOiBOT05fVEFTS19DSElQX0ZHIH0sXG4gIG1jcDogeyBiZzogTk9OX1RBU0tfQ0hJUF9CRywgZmc6IE5PTl9UQVNLX0NISVBfRkcgfSxcbn1cblxuLyoqIEVzdGlsbyB0YXJlYSBlbiBlZGl0b3I6IGlubGluZSAobm8gaW5saW5lLWJsb2NrKSBwYXJhIHF1ZSBlbCBzaHJpbmstdG8tZml0IG5vIG9jdXBlIHRvZG8gZWwgcmVuZ2zDs24uICovXG5leHBvcnQgY29uc3QgTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTSyA9IHtcbiAgZGlzcGxheTogJ2lubGluZScsXG4gIHBhZGRpbmc6ICcwJyxcbiAgcGFkZGluZ0xlZnQ6ICcyNHB4JyxcbiAgbWFyZ2luOiAnMCAxcHgnLFxuICBtYXhXaWR0aDogJzEwMCUnLFxuICBib3JkZXJSYWRpdXM6ICcwJyxcbiAgZm9udEZhbWlseTogYHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJylgLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgbGluZUhlaWdodDogJzIwcHgnLFxuICB3aGl0ZVNwYWNlOiAnbm9ybWFsJyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gIGN1cnNvcjogJ2RlZmF1bHQnLFxufSBhcyBjb25zdFxuXG4vKiogRXN0aWxvIGFjdHVhbCAoY2xpZW50LCBwcm9qZWN0LCB1c2VyLCBtY3ApLiAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9CQVNFX1NUWUxFX05PTl9UQVNLID0ge1xuICBkaXNwbGF5OiAnaW5saW5lJyxcbiAgcGFkZGluZzogJzJweCA0cHgnLFxuICBtYXJnaW46ICcwIDFweCcsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIGJvcmRlclJhZGl1czogJzRweCcsXG4gIGZvbnRGYW1pbHk6IGB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpYCxcbiAgZm9udFNpemU6ICcxNHB4JyxcbiAgZm9udFdlaWdodDogJzUwMCcsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgdXNlclNlbGVjdDogJ25vbmUnLFxuICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICBjdXJzb3I6ICdkZWZhdWx0Jyxcbn0gYXMgY29uc3RcblxuLyoqIEBkZXByZWNhdGVkIHVzYXIgTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTSyAvIF9OT05fVEFTSyBzZWfDum4gdGlwbyAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9CQVNFX1NUWUxFID0gTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTS1xuXG5jb25zdCBjaGlwQ29sb3JzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdID8/IE1FTlRJT05fQ0hJUF9DT0xPUlMudXNlclxuXG5jb25zdCBjaGlwU3VyZmFjZUNzcyA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSkgPT4ge1xuICBjb25zdCBjID0gY2hpcENvbG9ycyh0eXBlKVxuICByZXR1cm4gY3NzYFxuICAgIGJhY2tncm91bmQ6ICR7Yy5iZ307XG4gICAgY29sb3I6ICR7Yy5mZ307XG4gIGBcbn1cblxuLyoqXG4gKiBIb3ZlciB5IHN1cGVyZmljaWUgcGFyYSBjaGlwcyBtb250YWRvcyBwb3IgYGJ1aWxkQ2hpcEVsZW1lbnRgIChlc3RpbG9zIGlubGluZSBlbiBlbCBob3N0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyA9IGNyZWF0ZUdsb2JhbFN0eWxlYFxuICAuJHtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU306bm90KFtkYXRhLW1lbnRpb24tdHlwZT0ndGFzayddKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHtNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkd9ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuJHtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31bZGF0YS1tZW50aW9uLXR5cGU9J3Byb2plY3QnXTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHtWSU9MRVRfSUFfQ09MT1JTWzEwMF19ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiBNZW5jaW9uZXMgZW4gZWwgY29udGVudGVkaXRhYmxlOiBlbCB0ZXh0byBkZWJlIHBvZGVyIHBhc2FyIGEgbGEgbMOtbmVhIHNpZ3VpZW50ZSAoc2luIHNjcm9sbCBob3Jpem9udGFsKS4gKi9cbiAgW2NvbnRlbnRlZGl0YWJsZT0ndHJ1ZSddIC4ke0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVtkYXRhLW1lbnRpb24tc3VyZmFjZT0nZWRpdG9yJ10ge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyogU29sbyB0YXNrIGVuIGVkaXRvciBzZSBjb21wb3J0YSBpbmxpbmUgcGFyYSBldml0YXIgcXVlIHRvbWUgZWwgYW5jaG8gY29tcGxldG8gZGVsIHJlbmdsw7NuLiAqL1xuICBbY29udGVudGVkaXRhYmxlPSd0cnVlJ10gLiR7Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9W2RhdGEtbWVudGlvbi10eXBlPSd0YXNrJ11bZGF0YS1tZW50aW9uLXN1cmZhY2U9J2VkaXRvciddIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8qIFRhcmVhIGVuIGVsIGlucHV0OiBtaXNtbyBhc3BlY3RvIHF1ZSAuaGFzLXRhc2stbGlua3MgYSAobWVuc2FqZXMgZGVsIGFnZW50ZSAvIHVzdWFyaW8pLiAqL1xuICBbY29udGVudGVkaXRhYmxlPSd0cnVlJ10gLiR7Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9W2RhdGEtbWVudGlvbi10eXBlPSd0YXNrJ11bZGF0YS1tZW50aW9uLXN1cmZhY2U9J2VkaXRvciddIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzIwMjAyMCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMjJweCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHggIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiBQcm95ZWN0byBlbiBlbCBpbnB1dDogY2xpY2tlYWJsZSwgYWJyZSBlbiBudWV2YSBwZXN0YcOxYS4gKi9cbiAgW2NvbnRlbnRlZGl0YWJsZT0ndHJ1ZSddIC4ke0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVtkYXRhLW1lbnRpb24tdHlwZT0ncHJvamVjdCddW2RhdGEtbWVudGlvbi1zdXJmYWNlPSdlZGl0b3InXSB7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiDDjWNvbm8gY2VudHJhZG8gZW4gbGEgY2FqYSBkZSBsYSBwcmltZXJhIGzDrW5lYSAobGggPSBsaW5lLWhlaWdodCBkZWwgY2hpcCwgU1ZHIDIwcHgpLiAqL1xuICBbY29udGVudGVkaXRhYmxlPSd0cnVlJ10gLiR7Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9W2RhdGEtbWVudGlvbi10eXBlPSd0YXNrJ11bZGF0YS1tZW50aW9uLXN1cmZhY2U9J2VkaXRvciddOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAycHg7XG4gICAgdG9wOiAxcHg7XG4gICAgdG9wOiBjYWxjKCgxbGggLSAxNnB4KSAvIDIgLSAxcHgpO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAke1RBU0tfTElOS19JQ09OX0NTU19VUkx9O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgfVxuXG4gIFtjb250ZW50ZWRpdGFibGU9J3RydWUnXSAuJHtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31bZGF0YS1tZW50aW9uLXR5cGU9J3Rhc2snXVtkYXRhLW1lbnRpb24tc3VyZmFjZT0nZWRpdG9yJ106aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAxcHggIWltcG9ydGFudDtcbiAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6ICR7TUVOVElPTl9DSElQX1RBU0tfRURJVE9SX0hPVkVSX0JHfSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICB9XG5gXG5cbi8qKlxuICogQXBsaWNhIGxvcyBlc3RpbG9zIGRlbCBjaGlwIGEgdW4gbm9kbyBET00gZXhpc3RlbnRlLlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcyA9IChlbDogSFRNTEVsZW1lbnQsIHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gIGNvbnN0IGMgPSBjaGlwQ29sb3JzKHR5cGUpXG4gIGNvbnN0IGJhc2UgPSB0eXBlID09PSAndGFzaycgPyBNRU5USU9OX0NISVBfQkFTRV9TVFlMRV9UQVNLIDogTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfTk9OX1RBU0tcbiAgT2JqZWN0LmFzc2lnbihlbC5zdHlsZSwgeyAuLi4oYmFzZSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSwgYmFja2dyb3VuZDogYy5iZywgY29sb3I6IGMuZmcgfSlcbn1cblxuY29uc3QgY2hpcEhvdmVyQ3NzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycpIHJldHVybiBjc3NgYFxuICBpZiAodHlwZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIGJhY2tncm91bmQ6ICR7VklPTEVUX0lBX0NPTE9SU1sxMDBdfTtcbiAgICBgXG4gIH1cbiAgcmV0dXJuIGNzc2BcbiAgICBiYWNrZ3JvdW5kOiAke01FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CR307XG4gIGBcbn1cblxuZXhwb3J0IGNvbnN0IFNDTUNDaGlwID0gc3R5bGVkLnNwYW48eyAkdHlwZT86IENvbnRleHRFbnRpdHlUeXBlIH0+YFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiAkeyh7ICR0eXBlIH0pID0+ICgkdHlwZSA9PT0gJ3Rhc2snID8gJ2ZsZXgtc3RhcnQnIDogJ2NlbnRlcicpfTtcbiAgZ2FwOiAkeyh7ICR0eXBlIH0pID0+ICgkdHlwZSA9PT0gJ3Rhc2snID8gJzRweCcgOiAnMnB4Jyl9O1xuICBwYWRkaW5nOiAkeyh7ICR0eXBlIH0pID0+ICgkdHlwZSA9PT0gJ3Rhc2snID8gJzAgNHB4JyA6ICcycHggNHB4Jyl9O1xuICBtYXJnaW46IDAgMXB4O1xuICBib3JkZXItcmFkaXVzOiAkeyh7ICR0eXBlIH0pID0+ICgkdHlwZSA9PT0gJ3Rhc2snID8gJzAnIDogJzRweCcpfTtcbiAgJHsoeyAkdHlwZSB9KSA9PiBjaGlwU3VyZmFjZUNzcygkdHlwZSA/PyAndXNlcicpfVxuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogJHsoeyAkdHlwZSB9KSA9PiAoJHR5cGUgPT09ICd0YXNrJyA/IDYwMCA6IDUwMCl9O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWluLWhlaWdodDogJHsoeyAkdHlwZSB9KSA9PiAoJHR5cGUgPT09ICd0YXNrJyA/ICdhdXRvJyA6ICdhdXRvJyl9O1xuICBtYXgtaGVpZ2h0OiBub25lO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgJjpob3ZlciB7XG4gICAgJHsoeyAkdHlwZSB9KSA9PiBjaGlwSG92ZXJDc3MoJHR5cGUpfVxuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBTQ01DQ2hpcEljb24gPSBzdHlsZWQuc3Bhbjx7ICR0YXNrPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbiAgaGVpZ2h0OiAkeyh7ICR0YXNrIH0pID0+ICgkdGFzayA/ICcxNnB4JyA6ICcxNHB4Jyl9O1xuICBmbGV4OiAwIDAgJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuLyoqIFRleHRvIGRlIHRhcmVhIGNvbiBib3JkZSBpbmZlcmlvciAoc3BlYyBGaWdtYSkuICovXG5leHBvcnQgY29uc3QgU0NNQ1Rhc2tDaGlwTGFiZWxXcmFwID0gc3R5bGVkLnNwYW5gXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4td2lkdGg6IDA7XG4gIGZsZXg6IDEgMSAwO1xuICBnYXA6IDRweDtcbiAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgdmFyKC0tY29yLWNvbG9yLWdyZXktNDAwLCAjYjNiM2IzKTtcbmBcblxuLyoqIFRleHRvIGludGVyaW9yIGNvbiBlbGxpcHNpcyAobWVuY2nDs24gdGlwbyB0YXJlYSkuICovXG5leHBvcnQgY29uc3QgU0NNQ1Rhc2tDaGlwTGFiZWxUZXh0ID0gc3R5bGVkLnNwYW5gXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtaW4td2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICR7Y29sb3JzLnRleHQucHJpbWFyeX07XG5gXG5cbi8qKiBUZXh0byBpbnRlcmlvciBjb24gZWxsaXBzaXMgKG1lbmNpw7NuIGNsaWVudGUvcHJveWVjdG8vdXN1YXJpby9tY3ApLiAqL1xuZXhwb3J0IGNvbnN0IFNDTUNDaGlwUGxhaW5MYWJlbCA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBibG9jaztcbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJyk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAke2NvbG9ycy50ZXh0LnByaW1hcnl9O1xuYFxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsRUFBRUMsaUJBQWlCLFFBQVEsbUJBQW1CO0FBQ2xFLE9BQU9DLE1BQU0sTUFBTSxtQ0FBbUM7QUFDdEQsU0FBU0MsY0FBYyxFQUFFQyxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFDekUsU0FBU0MsMEJBQTBCLFFBQTJCLCtCQUErQjtBQUM3RixTQUFTQyxzQkFBc0IsUUFBUSxpQ0FBaUM7QUFFeEUsSUFBTUMsWUFBWSxHQUFHLGFBQWE7QUFDbEMsSUFBTUMsWUFBWSxHQUFHTixNQUFNLENBQUNPLElBQUksQ0FBQ0MsT0FBTztBQUV4QyxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFTO0FBQ2xDLElBQU1DLGdCQUFnQixHQUFHVixNQUFNLENBQUNPLElBQUksQ0FBQ0MsT0FBTzs7QUFFNUM7QUFDQSxPQUFPLElBQU1HLDhCQUE4QixHQUFHLFNBQVM7O0FBRXZEO0FBQ0EsT0FBTyxJQUFNQywwQkFBMEIsR0FBR1gsY0FBYyxDQUFDLEdBQUcsQ0FBQzs7QUFFN0Q7QUFDQSxPQUFPLElBQU1ZLGlDQUFpQyxHQUFHLFNBQVM7O0FBRTFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxtQkFBMEUsR0FBRztFQUN4RkMsTUFBTSxFQUFFO0lBQUVD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
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJjcmVhdGVHbG9iYWxTdHlsZSIsImNvbG9ycyIsIkJMVUVfSUFfQ09MT1JTIiwiVklPTEVUX0lBX0NPTE9SUyIsIkNPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTIiwiVEFTS19MSU5LX0lDT05fQ1NTX1VSTCIsIlRBU0tfQ0hJUF9CRyIsIlRBU0tfQ0hJUF9GRyIsInRleHQiLCJwcmltYXJ5IiwiTk9OX1RBU0tfQ0hJUF9CRyIsIk5PTl9UQVNLX0NISVBfRkciLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJNRU5USU9OX0NISVBfVEFTS19IT1ZFUl9CRyIsIk1FTlRJT05fQ0hJUF9UQVNLX0VESVRPUl9IT1ZFUl9CRyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJjbGllbnQiLCJiZyIsImZnIiwicHJvamVjdCIsInRhc2siLCJ1c2VyIiwibWNwIiwic2tpbGwiLCJNRU5USU9OX0NISVBfQkFTRV9TVFlMRV9UQVNLIiwiZGlzcGxheSIsInBhZGRpbmciLCJwYWRkaW5nTGVmdCIsIm1hcmdpbiIsIm1heFdpZHRoIiwiYm9yZGVyUmFkaXVzIiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJ3aGl0ZVNwYWNlIiwib3ZlcmZsb3dXcmFwIiwid29yZEJyZWFrIiwidXNlclNlbGVjdCIsInZlcnRpY2FsQWxpZ24iLCJjdXJzb3IiLCJNRU5USU9OX0NISVBfQkFTRV9TVFlMRV9OT05fVEFTSyIsIk1FTlRJT05fQ0hJUF9CQVNFX1NUWUxFIiwiY2hpcENvbG9ycyIsInR5cGUiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQiLCJjaGlwU3VyZmFjZUNzcyIsImMiLCJDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMiLCJhcHBseU1lbnRpb25DaGlwU3R5bGVzIiwiZWwiLCJiYXNlIiwiT2JqZWN0IiwiYXNzaWduIiwic3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwiYmFja2dyb3VuZCIsImNvbG9yIiwiY2hpcEhvdmVyQ3NzIiwiU0NNQ0NoaXAiLCJzcGFuIiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJfcmVmIiwiJHR5cGUiLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJfcmVmNSIsIl9yZWY2IiwiX3JlZjciLCJfcmVmOCIsIlNDTUNDaGlwSWNvbiIsIl9yZWY5IiwiJHRhc2siLCJfcmVmMCIsIl9yZWYxIiwiU0NNQ1Rhc2tDaGlwTGFiZWxXcmFwIiwiU0NNQ1Rhc2tDaGlwTGFiZWxUZXh0IiwiU0NNQ0NoaXBQbGFpbkxhYmVsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25DaGlwL0NvbnRleHRNZW50aW9uQ2hpcC5zdHlsZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQsIHsgY3NzLCBjcmVhdGVHbG9iYWxTdHlsZSB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IGNvbG9ycyBmcm9tICdAcHJvamVjdGNvci90aGVtZS9saWIvYmFzZS9jb2xvcnMnXG5pbXBvcnQgeyBCTFVFX0lBX0NPTE9SUywgVklPTEVUX0lBX0NPTE9SUyB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQgeyBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUywgQ29udGV4dEVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IFRBU0tfTElOS19JQ09OX0NTU19VUkwgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza0xpbmtJY29uJ1xuXG5jb25zdCBUQVNLX0NISVBfQkcgPSAndHJhbnNwYXJlbnQnXG5jb25zdCBUQVNLX0NISVBfRkcgPSBjb2xvcnMudGV4dC5wcmltYXJ5XG5cbmNvbnN0IE5PTl9UQVNLX0NISVBfQkcgPSAnI2IzZTFmZidcbmNvbnN0IE5PTl9UQVNLX0NISVBfRkcgPSBjb2xvcnMudGV4dC5wcmltYXJ5XG5cbi8qKiBIb3ZlciBkZWwgY2hpcCDigJxudWV2b+KAnSAoY2xpZW50LCBwcm9qZWN0LCB1c2VyLCBtY3ApLiAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CRyA9ICcjZWRmYWZmJ1xuXG4vKiogSG92ZXIgZGVsIGNoaXAgZGUgdGFyZWEgZW4gY2hhdCAvIHN1cGVyZmljaWUg4oCcbm8gZWRpdG9y4oCdLiAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9UQVNLX0hPVkVSX0JHID0gQkxVRV9JQV9DT0xPUlNbMTAwXVxuXG4vKiogSG92ZXIgZGVsIGNoaXAgZGUgdGFyZWEgZGVudHJvIGRlbCBpbnB1dCAoY29udGVudGVkaXRhYmxlKS4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX0NISVBfVEFTS19FRElUT1JfSE9WRVJfQkcgPSAnI0YyRjJGMidcblxuLyoqIE1pc21vIMOtY29ubyBxdWUgYC5oYXMtdGFzay1saW5rcyBhOjpiZWZvcmVgIGVuIG1lbnNhamVzIGRlbCBhZ2VudGUgKGNoZWNrbGlzdCBhenVsKS4gKi9cblxuLyoqXG4gKiBQYWxldGEgY29tcGFydGlkYSBlbnRyZSBlbCBzdHlsZWQtY29tcG9uZW50IChgU0NNQ0NoaXBgKSB5IGVsIGJ1aWxkZXJcbiAqIGltcGVyYXRpdm8gKGBidWlsZENoaXBFbGVtZW50YCkgcXVlIGluc2VydGEgZWwgY2hpcCBkZW50cm8gZGVsIGNvbnRlbnRlZGl0YWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9DT0xPUlM6IFJlY29yZDxDb250ZXh0RW50aXR5VHlwZSwgeyBiZzogc3RyaW5nOyBmZzogc3RyaW5nIH0+ID0ge1xuICBjbGllbnQ6IHsgYmc6IE5PTl9UQVNLX0NISVBfQkcsIGZnOiBOT05fVEFTS19DSElQX0ZHIH0sXG4gIHByb2plY3Q6IHsgYmc6IFZJT0xFVF9JQV9DT0xPUlNbNTBdLCBmZzogTk9OX1RBU0tfQ0hJUF9GRyB9LFxuICB0YXNrOiB7IGJnOiBUQVNLX0NISVBfQkcsIGZnOiBUQVNLX0NISVBfRkcgfSxcbiAgdXNlcjogeyBiZzogTk9OX1RBU0tfQ0hJUF9CRywgZmc6IE5PTl9UQVNLX0NISVBfRkcgfSxcbiAgbWNwOiB7IGJnOiBOT05fVEFTS19DSElQX0JHLCBmZzogTk9OX1RBU0tfQ0hJUF9GRyB9LFxuICBza2lsbDogeyBiZzogJ3RyYW5zcGFyZW50JywgZmc6IE5PTl9UQVNLX0NISVBfRkcgfSxcbn1cblxuLyoqIEVzdGlsbyB0YXJlYSBlbiBlZGl0b3I6IGlubGluZSAobm8gaW5saW5lLWJsb2NrKSBwYXJhIHF1ZSBlbCBzaHJpbmstdG8tZml0IG5vIG9jdXBlIHRvZG8gZWwgcmVuZ2zDs24uICovXG5leHBvcnQgY29uc3QgTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTSyA9IHtcbiAgZGlzcGxheTogJ2lubGluZScsXG4gIHBhZGRpbmc6ICcwJyxcbiAgcGFkZGluZ0xlZnQ6ICcyNHB4JyxcbiAgbWFyZ2luOiAnMCAxcHgnLFxuICBtYXhXaWR0aDogJzEwMCUnLFxuICBib3JkZXJSYWRpdXM6ICcwJyxcbiAgZm9udEZhbWlseTogYHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJylgLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgbGluZUhlaWdodDogJzIwcHgnLFxuICB3aGl0ZVNwYWNlOiAnbm9ybWFsJyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gIGN1cnNvcjogJ2RlZmF1bHQnLFxufSBhcyBjb25zdFxuXG4vKiogRXN0aWxvIGFjdHVhbCAoY2xpZW50LCBwcm9qZWN0LCB1c2VyLCBtY3ApLiAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9CQVNFX1NUWUxFX05PTl9UQVNLID0ge1xuICBkaXNwbGF5OiAnaW5saW5lJyxcbiAgcGFkZGluZzogJzJweCA0cHgnLFxuICBtYXJnaW46ICcwIDFweCcsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIGJvcmRlclJhZGl1czogJzRweCcsXG4gIGZvbnRGYW1pbHk6IGB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpYCxcbiAgZm9udFNpemU6ICcxNHB4JyxcbiAgZm9udFdlaWdodDogJzUwMCcsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgdXNlclNlbGVjdDogJ25vbmUnLFxuICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICBjdXJzb3I6ICdkZWZhdWx0Jyxcbn0gYXMgY29uc3RcblxuLyoqIEBkZXByZWNhdGVkIHVzYXIgTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTSyAvIF9OT05fVEFTSyBzZWfDum4gdGlwbyAqL1xuZXhwb3J0IGNvbnN0IE1FTlRJT05fQ0hJUF9CQVNFX1NUWUxFID0gTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfVEFTS1xuXG5jb25zdCBjaGlwQ29sb3JzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdID8/IE1FTlRJT05fQ0hJUF9DT0xPUlMudXNlclxuXG5jb25zdCBjaGlwU3VyZmFjZUNzcyA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSkgPT4ge1xuICBjb25zdCBjID0gY2hpcENvbG9ycyh0eXBlKVxuICByZXR1cm4gY3NzYFxuICAgIGJhY2tncm91bmQ6ICR7Yy5iZ307XG4gICAgY29sb3I6ICR7Yy5mZ307XG4gIGBcbn1cblxuLyoqXG4gKiBIb3ZlciB5IHN1cGVyZmljaWUgcGFyYSBjaGlwcyBtb250YWRvcyBwb3IgYGJ1aWxkQ2hpcEVsZW1lbnRgIChlc3RpbG9zIGlubGluZSBlbiBlbCBob3N0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyA9IGNyZWF0ZUdsb2JhbFN0eWxlYFxuICAuJHtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU306bm90KFtkYXRhLW1lbnRpb24tdHlwZT0ndGFzayddKTpub3QoW2RhdGEtbWVudGlvbi10eXBlPSdza2lsbCddKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHtNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkd9ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuJHtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31bZGF0YS1tZW50aW9uLXR5cGU9J3Byb2plY3QnXTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogJHtWSU9MRVRfSUFfQ09MT1JTWzEwMF19ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiBNZW5jaW9uZXMgZW4gZWwgY29udGVudGVkaXRhYmxlOiBlbCB0ZXh0byBkZWJlIHBvZGVyIHBhc2FyIGEgbGEgbMOtbmVhIHNpZ3VpZW50ZSAoc2luIHNjcm9sbCBob3Jpem9udGFsKS4gKi9cbiAgW2NvbnRlbnRlZGl0YWJsZT0ndHJ1ZSddIC4ke0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVtkYXRhLW1lbnRpb24tc3VyZmFjZT0nZWRpdG9yJ10ge1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLyogU29sbyB0YXNrIGVuIGVkaXRvciBzZSBjb21wb3J0YSBpbmxpbmUgcGFyYSBldml0YXIgcXVlIHRvbWUgZWwgYW5jaG8gY29tcGxldG8gZGVsIHJlbmdsw7NuLiAqL1xuICBbY29udGVudGVkaXRhYmxlPSd0cnVlJ10gLiR7Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9W2RhdGEtbWVudGlvbi10eXBlPSd0YXNrJ11bZGF0YS1tZW50aW9uLXN1cmZhY2U9J2VkaXRvciddIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8qIFRhcmVhIGVuIGVsIGlucHV0OiBtaXNtbyBhc3BlY3RvIHF1ZSAuaGFzLXRhc2stbGlua3MgYSAobWVuc2FqZXMgZGVsIGFnZW50ZSAvIHVzdWFyaW8pLiAqL1xuICBbY29udGVudGVkaXRhYmxlPSd0cnVlJ10gLiR7Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9W2RhdGEtbWVudGlvbi10eXBlPSd0YXNrJ11bZGF0YS1tZW50aW9uLXN1cmZhY2U9J2VkaXRvciddIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzIwMjAyMCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMjJweCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHggIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiBQcm95ZWN0byBlbiBlbCBpbnB1dDogY2xpY2tlYWJsZSwgYWJyZSBlbiBudWV2YSBwZXN0YcOxYS4gKi9cbiAgW2NvbnRlbnRlZGl0YWJsZT0ndHJ1ZSddIC4ke0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVtkYXRhLW1lbnRpb24tdHlwZT0ncHJvamVjdCddW2RhdGEtbWVudGlvbi1zdXJmYWNlPSdlZGl0b3InXSB7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvKiDDjWNvbm8gY2VudHJhZG8gZW4gbGEgY2FqYSBkZSBsYSBwcmltZXJhIGzDrW5lYSAobGggPSBsaW5lLWhlaWdodCBkZWwgY2hpcCwgU1ZHIDIwcHgpLiAqL1xuICBbY29udGVudGVkaXRhYmxlPSd0cnVlJ10gLiR7Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9W2RhdGEtbWVudGlvbi10eXBlPSd0YXNrJ11bZGF0YS1tZW50aW9uLXN1cmZhY2U9J2VkaXRvciddOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAycHg7XG4gICAgdG9wOiAxcHg7XG4gICAgdG9wOiBjYWxjKCgxbGggLSAxNnB4KSAvIDIgLSAxcHgpO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAke1RBU0tfTElOS19JQ09OX0NTU19VUkx9O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgfVxuXG4gIFtjb250ZW50ZWRpdGFibGU9J3RydWUnXSAuJHtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31bZGF0YS1tZW50aW9uLXR5cGU9J3Rhc2snXVtkYXRhLW1lbnRpb24tc3VyZmFjZT0nZWRpdG9yJ106aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb24tY29sb3I6ICNiM2IzYjMgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAxcHggIWltcG9ydGFudDtcbiAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6ICR7TUVOVElPTl9DSElQX1RBU0tfRURJVE9SX0hPVkVSX0JHfSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50O1xuICB9XG5gXG5cbi8qKlxuICogQXBsaWNhIGxvcyBlc3RpbG9zIGRlbCBjaGlwIGEgdW4gbm9kbyBET00gZXhpc3RlbnRlLlxuICovXG5leHBvcnQgY29uc3QgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcyA9IChlbDogSFRNTEVsZW1lbnQsIHR5cGU6IENvbnRleHRFbnRpdHlUeXBlKSA9PiB7XG4gIGNvbnN0IGMgPSBjaGlwQ29sb3JzKHR5cGUpXG4gIGNvbnN0IGJhc2UgPSB0eXBlID09PSAndGFzaycgPyBNRU5USU9OX0NISVBfQkFTRV9TVFlMRV9UQVNLIDogTUVOVElPTl9DSElQX0JBU0VfU1RZTEVfTk9OX1RBU0tcbiAgT2JqZWN0LmFzc2lnbihlbC5zdHlsZSwgeyAuLi4oYmFzZSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSwgYmFja2dyb3VuZDogYy5iZywgY29sb3I6IGMuZmcgfSlcbn1cblxuY29uc3QgY2hpcEhvdmVyQ3NzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycgfHwgdHlwZSA9PT0gJ3NraWxsJykgcmV0dXJuIGNzc2BgXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gY3NzYFxuICAgICAgYmFja2dyb3VuZDogJHtWSU9MRVRfSUFfQ09MT1JTWzEwMF19O1xuICAgIGBcbiAgfVxuICByZXR1cm4gY3NzYFxuICAgIGJhY2tncm91bmQ6ICR7TUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHfTtcbiAgYFxufVxuXG5leHBvcnQgY29uc3QgU0NNQ0NoaXAgPSBzdHlsZWQuc3Bhbjx7ICR0eXBlPzogQ29udGV4dEVudGl0eVR5cGUgfT5gXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHsgJHR5cGUgfSkgPT4gKCR0eXBlID09PSAndGFzaycgPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJyl9O1xuICBnYXA6ICR7KHsgJHR5cGUgfSkgPT4gKCR0eXBlID09PSAndGFzaycgPyAnNHB4JyA6ICcycHgnKX07XG4gIHBhZGRpbmc6ICR7KHsgJHR5cGUgfSkgPT4gKCR0eXBlID09PSAndGFzaycgPyAnMCA0cHgnIDogJzJweCA0cHgnKX07XG4gIG1hcmdpbjogMCAxcHg7XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgJHR5cGUgfSkgPT4gKCR0eXBlID09PSAndGFzaycgPyAnMCcgOiAnNHB4Jyl9O1xuICAkeyh7ICR0eXBlIH0pID0+IGNoaXBTdXJmYWNlQ3NzKCR0eXBlID8/ICd1c2VyJyl9XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiAkeyh7ICR0eXBlIH0pID0+ICgkdHlwZSA9PT0gJ3Rhc2snID8gNjAwIDogNTAwKX07XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtaW4taGVpZ2h0OiAkeyh7ICR0eXBlIH0pID0+ICgkdHlwZSA9PT0gJ3Rhc2snID8gJ2F1dG8nIDogJ2F1dG8nKX07XG4gIG1heC1oZWlnaHQ6IG5vbmU7XG4gIGN1cnNvcjogZGVmYXVsdDtcblxuICAmOmhvdmVyIHtcbiAgICAkeyh7ICR0eXBlIH0pID0+IGNoaXBIb3ZlckNzcygkdHlwZSl9XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDTUNDaGlwSWNvbiA9IHN0eWxlZC5zcGFuPHsgJHRhc2s/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAkeyh7ICR0YXNrIH0pID0+ICgkdGFzayA/ICcxNnB4JyA6ICcxNHB4Jyl9O1xuICBoZWlnaHQ6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGZsZXg6IDAgMCAkeyh7ICR0YXNrIH0pID0+ICgkdGFzayA/ICcxNnB4JyA6ICcxNHB4Jyl9O1xuYFxuXG4vKiogVGV4dG8gZGUgdGFyZWEgY29uIGJvcmRlIGluZmVyaW9yIChzcGVjIEZpZ21hKS4gKi9cbmV4cG9ydCBjb25zdCBTQ01DVGFza0NoaXBMYWJlbFdyYXAgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi13aWR0aDogMDtcbiAgZmxleDogMSAxIDA7XG4gIGdhcDogNHB4O1xuICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xpZCB2YXIoLS1jb3ItY29sb3ItZ3JleS00MDAsICNiM2IzYjMpO1xuYFxuXG4vKiogVGV4dG8gaW50ZXJpb3IgY29uIGVsbGlwc2lzIChtZW5jacOzbiB0aXBvIHRhcmVhKS4gKi9cbmV4cG9ydCBjb25zdCBTQ01DVGFza0NoaXBMYWJlbFRleHQgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1jb3ItdHlwb2dyYXBoeS1mb250LWZhbWlseSwgJ1dvcmsgU2FucycpO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogJHtjb2xvcnMudGV4dC5wcmltYXJ5fTtcbmBcblxuLyoqIFRleHRvIGludGVyaW9yIGNvbiBlbGxpcHNpcyAobWVuY2nDs24gY2xpZW50ZS9wcm95ZWN0by91c3VhcmlvL21jcCkuICovXG5leHBvcnQgY29uc3QgU0NNQ0NoaXBQbGFpbkxhYmVsID0gc3R5bGVkLnNwYW5gXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtaW4td2lkdGg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICR7Y29sb3JzLnRleHQucHJpbWFyeX07XG5gXG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE9BQU9BLE1BQU0sSUFBSUMsR0FBRyxFQUFFQyxpQkFBaUIsUUFBUSxtQkFBbUI7QUFDbEUsT0FBT0MsTUFBTSxNQUFNLG1DQUFtQztBQUN0RCxTQUFTQyxjQUFjLEVBQUVDLGdCQUFnQixRQUFRLHdCQUF3QjtBQUN6RSxTQUFTQywwQkFBMEIsUUFBMkIsK0JBQStCO0FBQzdGLFNBQVNDLHNCQUFzQixRQUFRLGlDQUFpQztBQUV4RSxJQUFNQyxZQUFZLEdBQUcsYUFBYTtBQUNsQyxJQUFNQyxZQUFZLEdBQUdOLE1BQU0sQ0FBQ08sSUFBSSxDQUFDQyxPQUFPO0FBRXhDLElBQU1DLGdCQUFnQixHQUFHLFNBQVM7QUFDbEMsSUFBTUMsZ0JBQWdCLEdBQUdWLE1BQU0sQ0FBQ08sSUFBSSxDQUFDQyxPQUFPOztBQUU1QztBQUNBLE9BQU8sSUFBTUcsOEJBQThCLEdBQUcsU0FBUzs7QUFFdkQ7QUFDQSxPQUFPLElBQU1DLDBCQUEwQixHQUFHWCxjQUFjLENBQUMsR0FBRyxDQUFDOztB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
@@ -47,6 +47,7 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
47
47
  updateTrigger = _useContextMentions.updateTrigger,
48
48
  replaceTriggerWithChip = _useContextMentions.replaceTriggerWithChip,
49
49
  syncTriggerAtRunLength = _useContextMentions.syncTriggerAtRunLength,
50
+ syncSkillTrigger = _useContextMentions.syncSkillTrigger,
50
51
  updateSlashTrigger = _useContextMentions.updateSlashTrigger,
51
52
  replaceTriggerWithSlashChip = _useContextMentions.replaceTriggerWithSlashChip,
52
53
  serialize = _useContextMentions.serialize,
@@ -119,8 +120,46 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
119
120
  setLogicalEmpty(true);
120
121
  queueMicrotask(recomputePlaceholderTruncation);
121
122
  },
123
+ setPlainText: function setPlainText(text) {
124
+ var editor = editorRef.current;
125
+ if (!editor) return;
126
+ var plain = text !== null && text !== void 0 ? text : '';
127
+ editor.textContent = plain;
128
+ skipNextInput.current = true;
129
+ var state = serialize();
130
+ var isEmpty = state.text.trim() === '';
131
+ if (isEmpty) {
132
+ editor.innerHTML = '';
133
+ }
134
+ syncEditorEmptyAttribute(isEmpty);
135
+ setLogicalEmpty(isEmpty);
136
+ onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
137
+ trigger: {
138
+ active: false,
139
+ query: '',
140
+ atRunLength: 0
141
+ },
142
+ slashTrigger: {
143
+ active: false,
144
+ query: ''
145
+ }
146
+ }));
147
+ var selection = window.getSelection();
148
+ if (selection && editor.childNodes.length > 0) {
149
+ var range = document.createRange();
150
+ range.selectNodeContents(editor);
151
+ range.collapse(false);
152
+ selection.removeAllRanges();
153
+ selection.addRange(range);
154
+ }
155
+ queueMicrotask(function () {
156
+ skipNextInput.current = false;
157
+ recomputePlaceholderTruncation();
158
+ });
159
+ },
122
160
  serialize: serialize,
123
161
  syncTriggerAtRunLength: syncTriggerAtRunLength,
162
+ syncSkillTrigger: syncSkillTrigger,
124
163
  hasVisualMultiline: function hasVisualMultiline() {
125
164
  var _editor$textContent$t, _editor$textContent2;
126
165
  var editor = editorRef.current;
@@ -191,7 +230,7 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
191
230
  });
192
231
  }
193
232
  };
194
- }, [focus, clearEditorDom, serialize, syncTriggerAtRunLength, replaceTriggerWithChip, replaceTriggerWithSlashChip, onInput, recomputePlaceholderTruncation, syncEditorEmptyAttribute]);
233
+ }, [focus, clearEditorDom, serialize, syncTriggerAtRunLength, syncSkillTrigger, replaceTriggerWithChip, replaceTriggerWithSlashChip, onInput, recomputePlaceholderTruncation, syncEditorEmptyAttribute]);
195
234
  var handleInput = function handleInput() {
196
235
  if (skipNextInput.current) {
197
236
  skipNextInput.current = false;
@@ -266,4 +305,4 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
266
305
  });
267
306
  });
268
307
  ContextMentionEditor.displayName = 'ContextMentionEditor';
269
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJUb29sdGlwIiwidXNlQ29udGV4dE1lbnRpb25zIiwiYnVpbGRDaGlwRWxlbWVudCIsIkNvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyIsImJ1aWxkU2xhc2hDaGlwRWxlbWVudCIsIlNDTUVFZGl0YWJsZSIsImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciIsImVkaXRvciIsInBsYWNlaG9sZGVyIiwidHJpbW1lZCIsInRyaW0iLCJjbGllbnRXaWR0aCIsInN0eWxlcyIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJjdHgiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJtZWFzdXJlZCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYXZhaWxhYmxlIiwiTWF0aCIsIm1heCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiX3JlZiIsInJlZiIsIl9wbGFjZWhvbGRlciR0cmltMiIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJfdXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwidXBkYXRlVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aENoaXAiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwicmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwIiwic2VyaWFsaXplIiwiY2xlYXJFZGl0b3JEb20iLCJjbGVhciIsImZvY3VzIiwic2tpcE5leHRJbnB1dCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInBsYWNlaG9sZGVyVHJ1bmNhdGVkIiwic2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvZ2ljYWxFbXB0eSIsInNldExvZ2ljYWxFbXB0eSIsInN5bmNFZGl0b3JFbXB0eUF0dHJpYnV0ZSIsImlzRW1wdHkiLCJjdXJyZW50Iiwic2V0QXR0cmlidXRlIiwiU3RyaW5nIiwibm9ybWFsaXplRW1wdHlFZGl0b3JEb20iLCJfZWRpdG9yJHRleHRDb250ZW50IiwidGV4dENvbnRlbnQiLCJpbm5lckhUTUwiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwic2VsZWN0Tm9kZUNvbnRlbnRzIiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbiIsIl9wbGFjZWhvbGRlciR0cmltIiwiZWwiLCJwaCIsImlzRWRpdG9yTG9naWNhbGx5RW1wdHkiLCJ0ZXh0IiwidW5kZWZpbmVkIiwicm8iLCJSZXNpemVPYnNlcnZlciIsInF1ZXVlTWljcm90YXNrIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJoYXNWaXN1YWxNdWx0aWxpbmUiLCJfZWRpdG9yJHRleHRDb250ZW50JHQiLCJfZWRpdG9yJHRleHRDb250ZW50MiIsImxpbmVIZWlnaHQiLCJlZGl0b3JIZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJpc011bHRpbGluZSIsImdldEVkaXRvckNsaWVudFJlY3QiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJpbnNlcnRNZW50aW9uIiwibWVudGlvbiIsImNoaXAiLCJzdGF0ZSIsIl9vYmplY3RTcHJlYWQiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwicXVlcnkiLCJhdFJ1bkxlbmd0aCIsInNsYXNoVHJpZ2dlciIsImluc2VydFNsYXNoQ29tbWFuZCIsImNvbW1hbmQiLCJoYW5kbGVJbnB1dCIsInRyaWciLCJzbGFzaFRyaWciLCJtZW50aW9ucyIsInNsYXNoQ29tbWFuZHMiLCJoYW5kbGVQYXN0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNsaXBib2FyZERhdGEiLCJnZXREYXRhIiwicmFuZ2VDb3VudCIsImRlbGV0ZUZyb21Eb2N1bWVudCIsImdldFJhbmdlQXQiLCJpbnNlcnROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJjb2xsYXBzZVRvRW5kIiwidHJpbW1lZFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXJUb29sdGlwVGl0bGUiLCJjaGlsZHJlbiIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwibWluV2lkdGgiLCJjb250ZW50RWRpdGFibGUiLCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciLCJyb2xlIiwib25QYXN0ZSIsImRpc3BsYXlOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3IvQ29udGV4dE1lbnRpb25FZGl0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsaXBib2FyZEV2ZW50LFxuICBmb3J3YXJkUmVmLFxuICBLZXlib2FyZEV2ZW50LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZUNvbnRleHRNZW50aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBidWlsZENoaXBFbGVtZW50IH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25DaGlwJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25DaGlwR2xvYmFsU3R5bGVzIH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25DaGlwL0NvbnRleHRNZW50aW9uQ2hpcC5zdHlsZXMnXG5pbXBvcnQgeyBidWlsZFNsYXNoQ2hpcEVsZW1lbnQsIFNsYXNoQ29tbWFuZENoaXBEYXRhIH0gZnJvbSAnLi4vU2xhc2hDb21tYW5kQ2hpcCdcbmltcG9ydCB7IFNDTUVFZGl0YWJsZSB9IGZyb20gJy4vQ29udGV4dE1lbnRpb25FZGl0b3Iuc3R5bGVzJ1xuXG5jb25zdCBpc1BsYWNlaG9sZGVyVHJ1bmNhdGVkSW5FZGl0b3IgPSAoZWRpdG9yOiBIVE1MRWxlbWVudCwgcGxhY2Vob2xkZXI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0cmltbWVkID0gcGxhY2Vob2xkZXIudHJpbSgpXG4gIGlmICghdHJpbW1lZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IHsgY2xpZW50V2lkdGggfSA9IGVkaXRvclxuICBpZiAoY2xpZW50V2lkdGggPD0gNCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdG9yKVxuICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpXG4gIGlmICghY3R4KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY3R4LmZvbnQgPSBgJHtzdHlsZXMuZm9udFdlaWdodH0gJHtzdHlsZXMuZm9udFNpemV9ICR7c3R5bGVzLmZvbnRGYW1pbHl9YFxuICBjb25zdCBtZWFzdXJlZCA9IGN0eC5tZWFzdXJlVGV4dCh0cmltbWVkKS53aWR0aFxuXG4gIGNvbnN0IHBhZGRpbmdMZWZ0ID0gcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ0xlZnQpIHx8IDBcbiAgY29uc3QgcGFkZGluZ1JpZ2h0ID0gcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1JpZ2h0KSB8fCAwXG4gIGNvbnN0IGJvcmRlckxlZnQgPSBwYXJzZUZsb2F0KHN0eWxlcy5ib3JkZXJMZWZ0V2lkdGgpIHx8IDBcbiAgY29uc3QgYm9yZGVyUmlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5ib3JkZXJSaWdodFdpZHRoKSB8fCAwXG4gIGNvbnN0IGF2YWlsYWJsZSA9IE1hdGgubWF4KDAsIGNsaWVudFdpZHRoIC0gcGFkZGluZ0xlZnQgLSBwYWRkaW5nUmlnaHQgLSBib3JkZXJMZWZ0IC0gYm9yZGVyUmlnaHQpXG5cbiAgcmV0dXJuIG1lYXN1cmVkID4gYXZhaWxhYmxlICsgMVxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSA9IHtcbiAgZm9jdXM6ICgpID0+IHZvaWRcbiAgY2xlYXI6ICgpID0+IHZvaWRcbiAgaW5zZXJ0TWVudGlvbjogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB2b2lkXG4gIGluc2VydFNsYXNoQ29tbWFuZDogKGNvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB2b2lkXG4gIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGg6IChhdFJ1bkxlbmd0aDogbnVtYmVyKSA9PiB2b2lkXG4gIHNlcmlhbGl6ZTogKCkgPT4ge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICB9XG4gIGhhc1Zpc3VhbE11bHRpbGluZTogKCkgPT4gYm9vbGVhblxuICAvKiogUmVjdCBkZWwgw6FyZWEgZWRpdGFibGUgKHZpZXdwb3J0KTsgbG8gdXNhIGVsIHBvcG92ZXIgZGUgQCBwYXJhIGFsaW5lYXIgYW5jaG8vb3JpZ2VuLiAqL1xuICBnZXRFZGl0b3JDbGllbnRSZWN0OiAoKSA9PiBET01SZWN0IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudGlvbkVkaXRvclByb3BzID0ge1xuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIG9uSW5wdXQ/OiAoc3RhdGU6IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgIHNsYXNoQ29tbWFuZHM6IFNsYXNoQ29tbWFuZENoaXBEYXRhW11cbiAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgc2xhc2hUcmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gIH0pID0+IHZvaWRcbiAgb25LZXlEb3duPzogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIG9uQmx1cj86ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uRWRpdG9yID0gZm9yd2FyZFJlZjxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSwgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcz4oXG4gICh7IHBsYWNlaG9sZGVyLCBkaXNhYmxlZCwgY2xhc3NOYW1lLCBvbklucHV0LCBvbktleURvd24sIG9uRm9jdXMsIG9uQmx1ciB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlZGl0b3JSZWYsXG4gICAgICB1cGRhdGVUcmlnZ2VyLFxuICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICB1cGRhdGVTbGFzaFRyaWdnZXIsXG4gICAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgICBzZXJpYWxpemUsXG4gICAgICBjbGVhcjogY2xlYXJFZGl0b3JEb20sXG4gICAgICBmb2N1cyxcbiAgICB9ID0gdXNlQ29udGV4dE1lbnRpb25zKClcbiAgICBjb25zdCBza2lwTmV4dElucHV0ID0gdXNlUmVmKGZhbHNlKVxuICAgIGNvbnN0IFtwbGFjZWhvbGRlclRydW5jYXRlZCwgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW2xvZ2ljYWxFbXB0eSwgc2V0TG9naWNhbEVtcHR5XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgICBjb25zdCBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUgPSB1c2VDYWxsYmFjaygoaXNFbXB0eTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1lbXB0eScsIFN0cmluZyhpc0VtcHR5KSlcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIGNvbnN0IG5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgZWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWRpdG9yKSByZXR1cm5cblxuICAgICAgLy8gTGltcGlhciBjdWFscXVpZXIgcmVzaWR1byAoYnIsIGVzcGFjaW9zKSBxdWUgZGVqZSBlbCBicm93c2VyIGFsIHZhY2lhciBlbCBjb250ZW50ZWRpdGFibGUuXG4gICAgICAvLyBTaW4gZXN0bywgdW4gZXNwYWNpbyBzdWVsdG8gYWN0aXZhIGRhdGEtZW1wdHk9XCJ0cnVlXCIgKyA6OmJlZm9yZSBwbGFjZWhvbGRlciBlbiBsw61uZWEgMVxuICAgICAgLy8geSBkZXNwbGF6YSBlbCBjdXJzb3IgYSBsYSBsw61uZWEgMi5cbiAgICAgIGlmIChlZGl0b3IudGV4dENvbnRlbnQ/LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgZWRpdG9yLmlubmVySFRNTCA9ICcnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKCFzZWxlY3Rpb24pIHJldHVyblxuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKVxuICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuICAgIH0sIFtlZGl0b3JSZWZdKVxuXG4gICAgY29uc3QgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgY29uc3QgcGggPSBwbGFjZWhvbGRlcj8udHJpbSgpID8/ICcnXG4gICAgICBjb25zdCBpc0VkaXRvckxvZ2ljYWxseUVtcHR5ID0gc2VyaWFsaXplKCkudGV4dC50cmltKCkgPT09ICcnXG5cbiAgICAgIGlmICghZWwgfHwgIXBoIHx8ICFpc0VkaXRvckxvZ2ljYWxseUVtcHR5KSB7XG4gICAgICAgIHNldFBsYWNlaG9sZGVyVHJ1bmNhdGVkKGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQoaXNQbGFjZWhvbGRlclRydW5jYXRlZEluRWRpdG9yKGVsLCBwaCkpXG4gICAgfSwgW3BsYWNlaG9sZGVyLCBzZXJpYWxpemVdKVxuXG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgICAgfSlcbiAgICAgIHJvLm9ic2VydmUoZWwpXG4gICAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gICAgfSwgW3BsYWNlaG9sZGVyLCBkaXNhYmxlZCwgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uXSlcblxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoXG4gICAgICByZWYsXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBmb2N1cyxcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICBjbGVhckVkaXRvckRvbSgpXG4gICAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKHRydWUpXG4gICAgICAgICAgc2V0TG9naWNhbEVtcHR5KHRydWUpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgICAgICB9LFxuICAgICAgICBzZXJpYWxpemUsXG4gICAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICAgIGhhc1Zpc3VhbE11bHRpbGluZTogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRleHQgPSBlZGl0b3IudGV4dENvbnRlbnQ/LnRyaW0oKSA/PyAnJ1xuICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdG9yKVxuICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5saW5lSGVpZ2h0KSB8fCAyMlxuICAgICAgICAgIGNvbnN0IGVkaXRvckhlaWdodCA9IGVkaXRvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgICBjb25zdCBpc011bHRpbGluZSA9IGVkaXRvckhlaWdodCA+IGxpbmVIZWlnaHQgKiAxLjVcblxuICAgICAgICAgIHJldHVybiBpc011bHRpbGluZVxuICAgICAgICB9LFxuICAgICAgICBnZXRFZGl0b3JDbGllbnRSZWN0OiAoKSA9PiBlZGl0b3JSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgPz8gbnVsbCxcbiAgICAgICAgaW5zZXJ0TWVudGlvbjogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hpcCA9IGJ1aWxkQ2hpcEVsZW1lbnQobWVudGlvbilcbiAgICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhDaGlwKGNoaXAsIG1lbnRpb24pXG4gICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlzRW1wdHkgPSBzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJydcbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBTaSBlbCBuYXZlZ2Fkb3Igbm8gZGlzcGFyYSBgaW5wdXRgIHRyYXMgZWwgY2hpcCwgZWwgZmxhZyBxdWVkYWJhIGVuIHRydWUgeSBlbCBwcsOzeGltbyBAIGRlbCB1c3VhcmlvIHNlIGlnbm9yYWJhLlxuICAgICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5zZXJ0U2xhc2hDb21tYW5kOiAoY29tbWFuZDogU2xhc2hDb21tYW5kQ2hpcERhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlwID0gYnVpbGRTbGFzaENoaXBFbGVtZW50KGNvbW1hbmQpXG4gICAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwKGNoaXAsIGNvbW1hbmQpXG4gICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlzRW1wdHkgPSBzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJydcbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICBza2lwTmV4dElucHV0LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgICAgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKClcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBbXG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhckVkaXRvckRvbSxcbiAgICAgICAgc2VyaWFsaXplLFxuICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhDaGlwLFxuICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgICAgIG9uSW5wdXQsXG4gICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbixcbiAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlLFxuICAgICAgXVxuICAgIClcblxuICAgIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgICAgaWYgKHNraXBOZXh0SW5wdXQuY3VycmVudCkge1xuICAgICAgICBza2lwTmV4dElucHV0LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHRyaWcgPSB1cGRhdGVUcmlnZ2VyKClcbiAgICAgIGNvbnN0IHNsYXNoVHJpZyA9IHVwZGF0ZVNsYXNoVHJpZ2dlcigpXG4gICAgICBsZXQgc3RhdGUgPSBzZXJpYWxpemUoKVxuICAgICAgY29uc3QgaXNFbXB0eSA9IHN0YXRlLnRleHQudHJpbSgpID09PSAnJ1xuICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgbm9ybWFsaXplRW1wdHlFZGl0b3JEb20oKVxuICAgICAgICBzdGF0ZSA9IHsgdGV4dDogJycsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfVxuICAgICAgfVxuICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKGlzRW1wdHkpXG4gICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgIG9uSW5wdXQ/Lih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogdHJpZy5hY3RpdmUsIHF1ZXJ5OiB0cmlnLnF1ZXJ5LCBhdFJ1bkxlbmd0aDogdHJpZy5hdFJ1bkxlbmd0aCB9LFxuICAgICAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBzbGFzaFRyaWcuYWN0aXZlLCBxdWVyeTogc2xhc2hUcmlnLnF1ZXJ5IH0sXG4gICAgICB9KVxuICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVBhc3RlID0gKGU6IENsaXBib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCB0ZXh0ID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuXG4gICAgICBzZWxlY3Rpb24uZGVsZXRlRnJvbURvY3VtZW50KClcbiAgICAgIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmluc2VydE5vZGUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpXG4gICAgICBzZWxlY3Rpb24uY29sbGFwc2VUb0VuZCgpXG4gICAgICBoYW5kbGVJbnB1dCgpXG4gICAgfVxuXG4gICAgY29uc3QgdHJpbW1lZFBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI/LnRyaW0oKSA/PyAnJ1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyVG9vbHRpcFRpdGxlID0gbG9naWNhbEVtcHR5ICYmIHBsYWNlaG9sZGVyVHJ1bmNhdGVkICYmIHRyaW1tZWRQbGFjZWhvbGRlciA/IHRyaW1tZWRQbGFjZWhvbGRlciA6ICcnXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyAvPlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17cGxhY2Vob2xkZXJUb29sdGlwVGl0bGV9PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdibG9jaycsIHdpZHRoOiAnMTAwJScsIG1pbldpZHRoOiAwIH19PlxuICAgICAgICAgICAgPFNDTUVFZGl0YWJsZVxuICAgICAgICAgICAgICByZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgIGRhdGEtcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkYXRhLWVtcHR5PXtTdHJpbmcobG9naWNhbEVtcHR5KX1cbiAgICAgICAgICAgICAgY29udGVudEVkaXRhYmxlPXshZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGRhdGEtZGlzYWJsZWQ9e1N0cmluZyghIWRpc2FibGVkKX1cbiAgICAgICAgICAgICAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXG4gICAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICAgICAgICAgYXJpYS1tdWx0aWxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlSW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgICAgICBvblBhc3RlPXtoYW5kbGVQYXN0ZX1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbkNvbnRleHRNZW50aW9uRWRpdG9yLmRpc3BsYXlOYW1lID0g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
308
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJUb29sdGlwIiwidXNlQ29udGV4dE1lbnRpb25zIiwiYnVpbGRDaGlwRWxlbWVudCIsIkNvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyIsImJ1aWxkU2xhc2hDaGlwRWxlbWVudCIsIlNDTUVFZGl0YWJsZSIsImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciIsImVkaXRvciIsInBsYWNlaG9sZGVyIiwidHJpbW1lZCIsInRyaW0iLCJjbGllbnRXaWR0aCIsInN0eWxlcyIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJjdHgiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJtZWFzdXJlZCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYXZhaWxhYmxlIiwiTWF0aCIsIm1heCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiX3JlZiIsInJlZiIsIl9wbGFjZWhvbGRlciR0cmltMiIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJfdXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwidXBkYXRlVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aENoaXAiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwic3luY1NraWxsVHJpZ2dlciIsInVwZGF0ZVNsYXNoVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcCIsInNlcmlhbGl6ZSIsImNsZWFyRWRpdG9yRG9tIiwiY2xlYXIiLCJmb2N1cyIsInNraXBOZXh0SW5wdXQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJwbGFjZWhvbGRlclRydW5jYXRlZCIsInNldFBsYWNlaG9sZGVyVHJ1bmNhdGVkIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2dpY2FsRW1wdHkiLCJzZXRMb2dpY2FsRW1wdHkiLCJzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUiLCJpc0VtcHR5IiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tIiwiX2VkaXRvciR0ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwiaW5uZXJIVE1MIiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNlbGVjdE5vZGVDb250ZW50cyIsImNvbGxhcHNlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24iLCJfcGxhY2Vob2xkZXIkdHJpbSIsImVsIiwicGgiLCJpc0VkaXRvckxvZ2ljYWxseUVtcHR5IiwidGV4dCIsInVuZGVmaW5lZCIsInJvIiwiUmVzaXplT2JzZXJ2ZXIiLCJxdWV1ZU1pY3JvdGFzayIsIm9ic2VydmUiLCJkaXNjb25uZWN0Iiwic2V0UGxhaW5UZXh0IiwicGxhaW4iLCJzdGF0ZSIsIl9vYmplY3RTcHJlYWQiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwicXVlcnkiLCJhdFJ1bkxlbmd0aCIsInNsYXNoVHJpZ2dlciIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJoYXNWaXN1YWxNdWx0aWxpbmUiLCJfZWRpdG9yJHRleHRDb250ZW50JHQiLCJfZWRpdG9yJHRleHRDb250ZW50MiIsImxpbmVIZWlnaHQiLCJlZGl0b3JIZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJpc011bHRpbGluZSIsImdldEVkaXRvckNsaWVudFJlY3QiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJpbnNlcnRNZW50aW9uIiwibWVudGlvbiIsImNoaXAiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJjb21tYW5kIiwiaGFuZGxlSW5wdXQiLCJ0cmlnIiwic2xhc2hUcmlnIiwibWVudGlvbnMiLCJzbGFzaENvbW1hbmRzIiwiaGFuZGxlUGFzdGUiLCJlIiwicHJldmVudERlZmF1bHQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsInJhbmdlQ291bnQiLCJkZWxldGVGcm9tRG9jdW1lbnQiLCJnZXRSYW5nZUF0IiwiaW5zZXJ0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiY29sbGFwc2VUb0VuZCIsInRyaW1tZWRQbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyVG9vbHRpcFRpdGxlIiwiY2hpbGRyZW4iLCJ0aXRsZSIsInN0eWxlIiwiZGlzcGxheSIsIm1pbldpZHRoIiwiY29udGVudEVkaXRhYmxlIiwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiwicm9sZSIsIm9uUGFzdGUiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uRWRpdG9yL0NvbnRleHRNZW50aW9uRWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDbGlwYm9hcmRFdmVudCxcbiAgZm9yd2FyZFJlZixcbiAgS2V5Ym9hcmRFdmVudCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyB1c2VDb250ZXh0TWVudGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDb250ZXh0TWVudGlvbnMnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgYnVpbGRDaGlwRWxlbWVudCB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uQ2hpcCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgYnVpbGRTbGFzaENoaXBFbGVtZW50LCBTbGFzaENvbW1hbmRDaGlwRGF0YSB9IGZyb20gJy4uL1NsYXNoQ29tbWFuZENoaXAnXG5pbXBvcnQgeyBTQ01FRWRpdGFibGUgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uRWRpdG9yLnN0eWxlcydcblxuY29uc3QgaXNQbGFjZWhvbGRlclRydW5jYXRlZEluRWRpdG9yID0gKGVkaXRvcjogSFRNTEVsZW1lbnQsIHBsYWNlaG9sZGVyOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3QgdHJpbW1lZCA9IHBsYWNlaG9sZGVyLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCB7IGNsaWVudFdpZHRoIH0gPSBlZGl0b3JcbiAgaWYgKGNsaWVudFdpZHRoIDw9IDQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVkaXRvcilcbiAgY29uc3QgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKVxuICBpZiAoIWN0eCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGN0eC5mb250ID0gYCR7c3R5bGVzLmZvbnRXZWlnaHR9ICR7c3R5bGVzLmZvbnRTaXplfSAke3N0eWxlcy5mb250RmFtaWx5fWBcbiAgY29uc3QgbWVhc3VyZWQgPSBjdHgubWVhc3VyZVRleHQodHJpbW1lZCkud2lkdGhcblxuICBjb25zdCBwYWRkaW5nTGVmdCA9IHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdMZWZ0KSB8fCAwXG4gIGNvbnN0IHBhZGRpbmdSaWdodCA9IHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdSaWdodCkgfHwgMFxuICBjb25zdCBib3JkZXJMZWZ0ID0gcGFyc2VGbG9hdChzdHlsZXMuYm9yZGVyTGVmdFdpZHRoKSB8fCAwXG4gIGNvbnN0IGJvcmRlclJpZ2h0ID0gcGFyc2VGbG9hdChzdHlsZXMuYm9yZGVyUmlnaHRXaWR0aCkgfHwgMFxuICBjb25zdCBhdmFpbGFibGUgPSBNYXRoLm1heCgwLCBjbGllbnRXaWR0aCAtIHBhZGRpbmdMZWZ0IC0gcGFkZGluZ1JpZ2h0IC0gYm9yZGVyTGVmdCAtIGJvcmRlclJpZ2h0KVxuXG4gIHJldHVybiBtZWFzdXJlZCA+IGF2YWlsYWJsZSArIDFcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgPSB7XG4gIGZvY3VzOiAoKSA9PiB2b2lkXG4gIGNsZWFyOiAoKSA9PiB2b2lkXG4gIHNldFBsYWluVGV4dDogKHRleHQ6IHN0cmluZykgPT4gdm9pZFxuICBpbnNlcnRNZW50aW9uOiAobWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHZvaWRcbiAgaW5zZXJ0U2xhc2hDb21tYW5kOiAoY29tbWFuZDogU2xhc2hDb21tYW5kQ2hpcERhdGEpID0+IHZvaWRcbiAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aDogKGF0UnVuTGVuZ3RoOiBudW1iZXIpID0+IHZvaWRcbiAgLyoqIENvbnZpZXJ0ZSBlbCB0cmlnZ2VyIGFjdGl2byBhIGBAL3F1ZXJ5YCBwYXJhIGFjdGl2YXIgbGEgdGFiIGRlIHNraWxscy4gKi9cbiAgc3luY1NraWxsVHJpZ2dlcjogKCkgPT4gdm9pZFxuICBzZXJpYWxpemU6ICgpID0+IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgIHNsYXNoQ29tbWFuZHM6IFNsYXNoQ29tbWFuZENoaXBEYXRhW11cbiAgfVxuICBoYXNWaXN1YWxNdWx0aWxpbmU6ICgpID0+IGJvb2xlYW5cbiAgLyoqIFJlY3QgZGVsIMOhcmVhIGVkaXRhYmxlICh2aWV3cG9ydCk7IGxvIHVzYSBlbCBwb3BvdmVyIGRlIEAgcGFyYSBhbGluZWFyIGFuY2hvL29yaWdlbi4gKi9cbiAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gRE9NUmVjdCB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcyA9IHtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBvbklucHV0PzogKHN0YXRlOiB7XG4gICAgdGV4dDogc3RyaW5nXG4gICAgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW11cbiAgICBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdXG4gICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICB9KSA9PiB2b2lkXG4gIG9uS2V5RG93bj86IChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBvbkZvY3VzPzogKCkgPT4gdm9pZFxuICBvbkJsdXI/OiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBjb25zdCBDb250ZXh0TWVudGlvbkVkaXRvciA9IGZvcndhcmRSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUsIENvbnRleHRNZW50aW9uRWRpdG9yUHJvcHM+KFxuICAoeyBwbGFjZWhvbGRlciwgZGlzYWJsZWQsIGNsYXNzTmFtZSwgb25JbnB1dCwgb25LZXlEb3duLCBvbkZvY3VzLCBvbkJsdXIgfSwgcmVmKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZWRpdG9yUmVmLFxuICAgICAgdXBkYXRlVHJpZ2dlcixcbiAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAsXG4gICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgICAgc3luY1NraWxsVHJpZ2dlcixcbiAgICAgIHVwZGF0ZVNsYXNoVHJpZ2dlcixcbiAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcCxcbiAgICAgIHNlcmlhbGl6ZSxcbiAgICAgIGNsZWFyOiBjbGVhckVkaXRvckRvbSxcbiAgICAgIGZvY3VzLFxuICAgIH0gPSB1c2VDb250ZXh0TWVudGlvbnMoKVxuICAgIGNvbnN0IHNraXBOZXh0SW5wdXQgPSB1c2VSZWYoZmFsc2UpXG4gICAgY29uc3QgW3BsYWNlaG9sZGVyVHJ1bmNhdGVkLCBzZXRQbGFjZWhvbGRlclRydW5jYXRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBbbG9naWNhbEVtcHR5LCBzZXRMb2dpY2FsRW1wdHldID0gdXNlU3RhdGUodHJ1ZSlcblxuICAgIGNvbnN0IHN5bmNFZGl0b3JFbXB0eUF0dHJpYnV0ZSA9IHVzZUNhbGxiYWNrKChpc0VtcHR5OiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAoZWRpdG9yUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQuc2V0QXR0cmlidXRlKCdkYXRhLWVtcHR5JywgU3RyaW5nKGlzRW1wdHkpKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgY29uc3Qgbm9ybWFsaXplRW1wdHlFZGl0b3JEb20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBlZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgaWYgKCFlZGl0b3IpIHJldHVyblxuXG4gICAgICAvLyBMaW1waWFyIGN1YWxxdWllciByZXNpZHVvIChiciwgZXNwYWNpb3MpIHF1ZSBkZWplIGVsIGJyb3dzZXIgYWwgdmFjaWFyIGVsIGNvbnRlbnRlZGl0YWJsZS5cbiAgICAgIC8vIFNpbiBlc3RvLCB1biBlc3BhY2lvIHN1ZWx0byBhY3RpdmEgZGF0YS1lbXB0eT1cInRydWVcIiArIDo6YmVmb3JlIHBsYWNlaG9sZGVyIGVuIGzDrW5lYSAxXG4gICAgICAvLyB5IGRlc3BsYXphIGVsIGN1cnNvciBhIGxhIGzDrW5lYSAyLlxuICAgICAgaWYgKGVkaXRvci50ZXh0Q29udGVudD8udHJpbSgpID09PSAnJykge1xuICAgICAgICBlZGl0b3IuaW5uZXJIVE1MID0gJydcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuXG4gICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKClcbiAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlZGl0b3IpXG4gICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgfSwgW2VkaXRvclJlZl0pXG5cbiAgICBjb25zdCByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwaCA9IHBsYWNlaG9sZGVyPy50cmltKCkgPz8gJydcbiAgICAgIGNvbnN0IGlzRWRpdG9yTG9naWNhbGx5RW1wdHkgPSBzZXJpYWxpemUoKS50ZXh0LnRyaW0oKSA9PT0gJydcblxuICAgICAgaWYgKCFlbCB8fCAhcGggfHwgIWlzRWRpdG9yTG9naWNhbGx5RW1wdHkpIHtcbiAgICAgICAgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXRQbGFjZWhvbGRlclRydW5jYXRlZChpc1BsYWNlaG9sZGVyVHJ1bmNhdGVkSW5FZGl0b3IoZWwsIHBoKSlcbiAgICB9LCBbcGxhY2Vob2xkZXIsIHNlcmlhbGl6ZV0pXG5cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKClcbiAgICAgIGNvbnN0IGVsID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICB9KVxuICAgICAgcm8ub2JzZXJ2ZShlbClcbiAgICAgIHJldHVybiAoKSA9PiByby5kaXNjb25uZWN0KClcbiAgICB9LCBbcGxhY2Vob2xkZXIsIGRpc2FibGVkLCByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb25dKVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICAgIHJlZixcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgIGNsZWFyRWRpdG9yRG9tKClcbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUodHJ1ZSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkodHJ1ZSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICAgIH0sXG4gICAgICAgIHNldFBsYWluVGV4dDogKHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlZGl0b3IpIHJldHVyblxuICAgICAgICAgIGNvbnN0IHBsYWluID0gdGV4dCA/PyAnJ1xuICAgICAgICAgIGVkaXRvci50ZXh0Q29udGVudCA9IHBsYWluXG4gICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICAgIGVkaXRvci5pbm5lckhUTUwgPSAnJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgICAgIGlmIChzZWxlY3Rpb24gJiYgZWRpdG9yLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKVxuICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpXG4gICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKClcbiAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgc2VyaWFsaXplLFxuICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgICAgICBzeW5jU2tpbGxUcmlnZ2VyLFxuICAgICAgICBoYXNWaXN1YWxNdWx0aWxpbmU6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgICAgIGlmICghZWRpdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdG9yLnRleHRDb250ZW50Py50cmltKCkgPz8gJydcbiAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVkaXRvcilcbiAgICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gcGFyc2VGbG9hdChzdHlsZXMubGluZUhlaWdodCkgfHwgMjJcbiAgICAgICAgICBjb25zdCBlZGl0b3JIZWlnaHQgPSBlZGl0b3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgICAgY29uc3QgaXNNdWx0aWxpbmUgPSBlZGl0b3JIZWlnaHQgPiBsaW5lSGVpZ2h0ICogMS41XG5cbiAgICAgICAgICByZXR1cm4gaXNNdWx0aWxpbmVcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IG51bGwsXG4gICAgICAgIGluc2VydE1lbnRpb246IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaXAgPSBidWlsZENoaXBFbGVtZW50KG1lbnRpb24pXG4gICAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcChjaGlwLCBtZW50aW9uKVxuICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IHRydWVcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHNlcmlhbGl6ZSgpXG4gICAgICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwIH0sXG4gICAgICAgICAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKGlzRW1wdHkpXG4gICAgICAgICAgc2V0TG9naWNhbEVtcHR5KGlzRW1wdHkpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2kgZWwgbmF2ZWdhZG9yIG5vIGRpc3BhcmEgYGlucHV0YCB0cmFzIGVsIGNoaXAsIGVsIGZsYWcgcXVlZGFiYSBlbiB0cnVlIHkgZWwgcHLDs3hpbW8gQCBkZWwgdXN1YXJpbyBzZSBpZ25vcmFiYS5cbiAgICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgICByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24oKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIGluc2VydFNsYXNoQ29tbWFuZDogKGNvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hpcCA9IGJ1aWxkU2xhc2hDaGlwRWxlbWVudChjb21tYW5kKVxuICAgICAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcChjaGlwLCBjb21tYW5kKVxuICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IHRydWVcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHNlcmlhbGl6ZSgpXG4gICAgICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwIH0sXG4gICAgICAgICAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKGlzRW1wdHkpXG4gICAgICAgICAgc2V0TG9naWNhbEVtcHR5KGlzRW1wdHkpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgW1xuICAgICAgICBmb2N1cyxcbiAgICAgICAgY2xlYXJFZGl0b3JEb20sXG4gICAgICAgIHNlcmlhbGl6ZSxcbiAgICAgICAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCxcbiAgICAgICAgc3luY1NraWxsVHJpZ2dlcixcbiAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwLFxuICAgICAgICBvbklucHV0LFxuICAgICAgICByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24sXG4gICAgICAgIHN5bmNFZGl0b3JFbXB0eUF0dHJpYnV0ZSxcbiAgICAgIF1cbiAgICApXG5cbiAgICBjb25zdCBoYW5kbGVJbnB1dCA9ICgpID0+IHtcbiAgICAgIGlmIChza2lwTmV4dElucHV0LmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCB0cmlnID0gdXBkYXRlVHJpZ2dlcigpXG4gICAgICBjb25zdCBzbGFzaFRyaWcgPSB1cGRhdGVTbGFzaFRyaWdnZXIoKVxuICAgICAgbGV0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgIGNvbnN0IGlzRW1wdHkgPSBzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJydcbiAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgIG5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tKClcbiAgICAgICAgc3RhdGUgPSB7IHRleHQ6ICcnLCBtZW50aW9uczogW10sIHNsYXNoQ29tbWFuZHM6IFtdIH1cbiAgICAgIH1cbiAgICAgIHN5bmNFZGl0b3JFbXB0eUF0dHJpYnV0ZShpc0VtcHR5KVxuICAgICAgc2V0TG9naWNhbEVtcHR5KGlzRW1wdHkpXG4gICAgICBvbklucHV0Py4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IHRyaWcuYWN0aXZlLCBxdWVyeTogdHJpZy5xdWVyeSwgYXRSdW5MZW5ndGg6IHRyaWcuYXRSdW5MZW5ndGggfSxcbiAgICAgICAgc2xhc2hUcmlnZ2VyOiB7IGFjdGl2ZTogc2xhc2hUcmlnLmFjdGl2ZSwgcXVlcnk6IHNsYXNoVHJpZy5xdWVyeSB9LFxuICAgICAgfSlcbiAgICAgIHF1ZXVlTWljcm90YXNrKHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbilcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgY29uc3QgdGV4dCA9IGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJylcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHJldHVyblxuICAgICAgc2VsZWN0aW9uLmRlbGV0ZUZyb21Eb2N1bWVudCgpXG4gICAgICBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5pbnNlcnROb2RlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKVxuICAgICAgc2VsZWN0aW9uLmNvbGxhcHNlVG9FbmQoKVxuICAgICAgaGFuZGxlSW5wdXQoKVxuICAgIH1cblxuICAgIGNvbnN0IHRyaW1tZWRQbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyPy50cmltKCkgPz8gJydcbiAgICBjb25zdCBwbGFjZWhvbGRlclRvb2x0aXBUaXRsZSA9IGxvZ2ljYWxFbXB0eSAmJiBwbGFjZWhvbGRlclRydW5jYXRlZCAmJiB0cmltbWVkUGxhY2Vob2xkZXIgPyB0cmltbWVkUGxhY2Vob2xkZXIgOiAnJ1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMgLz5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3BsYWNlaG9sZGVyVG9vbHRpcFRpdGxlfT5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snLCB3aWR0aDogJzEwMCUnLCBtaW5XaWR0aDogMCB9fT5cbiAgICAgICAgICAgIDxTQ01FRWRpdGFibGVcbiAgICAgICAgICAgICAgcmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICBkYXRhLXBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGF0YS1lbXB0eT17U3RyaW5nKGxvZ2ljYWxFbXB0eSl9XG4gICAgICAgICAgICAgIGNvbnRlbnRFZGl0YWJsZT17IWRpc2FibGVkfVxuICAgICAgICAgICAgICBkYXRhLWRpc2FibGVkPXtTdHJpbmcoISFkaXNhYmxlZCl9XG4gICAgICAgICAgICAgIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1xuICAgICAgICAgICAgICByb2xlPVwidGV4dGJveFwiXG4gICAgICAgICAgICAgIGFyaWEtbXVsdGlsaW5lPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUlucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgICAgICAgb25QYXN0ZT17aGFuZGxlUGFzdGV9XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5Db250ZXh0TWVudGlvbkVkaXRvci5kaXNwbGF5TmFtZSA9ICdDb250ZXh0TWVudGlvbkVkaXRvcidcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBRUVBLFVBQVUsRUFFVkMsV0FBVyxFQUNYQyxtQkFBbUIsRUFDbkJDLGVBQWUsRUFDZkMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0Msa0JBQWtCLFFBQVEsbUNBQW1DO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLHVCQUF1QjtBQUN4RCxTQUFTQyw4QkFBOEIsUUFBUSxpREFBaUQ7QUFDaEcsU0FBU0MscUJBQXFCLFFBQThCLHFCQUFxQjtBQUNqRixTQUFTQyxZQUFZLFFBQVEsK0JBQStCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQSxF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