@projectcor/maia-components 2.42.1-3 → 2.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  4. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  5. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  6. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +14 -10
  7. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +1 -1
  8. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +37 -57
  9. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +12 -18
  10. package/lib/components/index.js +1 -2
  11. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +93 -6
  12. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  13. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -21
  14. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -9
  15. package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -29
  16. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +1 -8
  17. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -25
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  19. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +61 -65
  21. package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -5
  22. package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
  23. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +38 -6
  24. package/lib/constants/maiaExternalConnectorsAccess.js +10 -0
  25. package/lib/constants/permissions/index.js +2 -2
  26. package/lib/constants/permissions/utils.js +1 -4
  27. package/lib/dev/DevReasoningTimeline.js +17 -11
  28. package/lib/dev/Providers.js +3 -5
  29. package/lib/hooks/useAgentModel/useCreateAgent.js +70 -15
  30. package/lib/hooks/useAgentModel/useUpdateAgent.js +67 -12
  31. package/lib/hooks/useChatManager/useChatManager.js +7 -7
  32. package/lib/hooks/useEvent.js +2 -1
  33. package/lib/hooks/useFrequentlyUsedActions.js +20 -63
  34. package/lib/index.js +2 -5
  35. package/lib/lang/br/index.js +9 -26
  36. package/lib/lang/en/index.js +9 -26
  37. package/lib/lang/es/index.js +9 -26
  38. package/lib/lang/fr/index.js +9 -26
  39. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  40. package/lib/services/maia/Agents/connectors.js +258 -0
  41. package/lib/store/sessions/sessionStreamManager.js +52 -40
  42. package/lib/styles/cascade.js +3 -29
  43. package/lib/styles/transitions.js +1 -3
  44. package/lib/types/agentModal.js +1 -1
  45. package/lib/types/global.d.js +1 -1
  46. package/lib/utils/hoursPlannerQuickActionType.js +1 -74
  47. package/lib/utils/normalizeAgentConnectors.js +28 -3
  48. package/lib/utils/streamActivityMessages.js +19 -32
  49. package/package.json +14 -18
  50. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
  51. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  52. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  53. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  54. package/lib/components/atoms/Fade/Fade.spec.js +0 -31
  55. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  56. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -303
  57. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  58. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  59. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -58
  60. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -68
  61. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  62. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  63. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  64. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
  65. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  66. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -77
  67. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  68. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  69. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  70. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  71. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  72. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  73. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  74. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  75. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
  76. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  77. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -291
  78. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  79. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -148
  80. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  81. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
  82. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -112
  83. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  84. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  85. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -234
  86. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -335
  87. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
  88. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  89. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  90. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -231
  91. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  92. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  93. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
  94. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  95. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -267
  96. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -261
  97. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -194
  98. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -105
  99. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -73
  100. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  101. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  102. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  103. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  104. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  105. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  106. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  107. package/lib/constants/permissions/utils.spec.js +0 -34
  108. package/lib/dev/DevMaiaPage.js +0 -30
  109. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  110. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  111. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -95
  112. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -96
  113. package/lib/hooks/useCaretPosition.spec.js +0 -58
  114. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -279
  115. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  116. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  117. package/lib/hooks/useDebounce.spec.js +0 -42
  118. package/lib/hooks/useEvent.spec.js +0 -40
  119. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  120. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  121. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  122. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  123. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  124. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  125. package/lib/hooks/useModal/useModal.spec.js +0 -73
  126. package/lib/hooks/useResize.spec.js +0 -37
  127. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  128. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  129. package/lib/hooks/useT.spec.js +0 -20
  130. package/lib/hooks/useToggle.spec.js +0 -33
  131. package/lib/services/maia/Access/updateAccess.spec.js +0 -108
  132. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
  133. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -74
  134. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  135. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -42
  136. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  137. package/lib/services/maia/Agents/getAgentById.spec.js +0 -55
  138. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -82
  139. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  140. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -47
  141. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  142. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  143. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  144. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  145. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  146. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  147. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  148. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  149. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  150. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  151. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  152. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -72
  153. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  154. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -83
  155. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  156. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  157. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  158. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  159. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  160. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  161. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  162. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  163. package/lib/services/maia/client.spec.js +0 -56
  164. package/lib/services/utils/fetchCOR.spec.js +0 -211
  165. package/lib/services/utils/getCookie.spec.js +0 -20
  166. package/lib/store/chatsSidebarOptimistic.spec.js +0 -120
  167. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  168. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  169. package/lib/store/sessions/sessions.types.spec.js +0 -16
  170. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  171. package/lib/store/useChatsStore.spec.js +0 -619
  172. package/lib/store/useFaqsStore.spec.js +0 -57
  173. package/lib/utils/agentDisplayName.spec.js +0 -44
  174. package/lib/utils/autoApproveStorage.spec.js +0 -25
  175. package/lib/utils/chatInputFiles.spec.js +0 -39
  176. package/lib/utils/contextMentionLabel.spec.js +0 -13
  177. package/lib/utils/contextMentionTriggers.spec.js +0 -38
  178. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  179. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  180. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  181. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  182. package/lib/utils/formatUnreadCount.spec.js +0 -12
  183. package/lib/utils/getUnitFileSize.spec.js +0 -18
  184. package/lib/utils/hitlAnalytics.spec.js +0 -100
  185. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
  186. package/lib/utils/maiaPageRoute.js +0 -24
  187. package/lib/utils/maiaPageRoute.spec.js +0 -23
  188. package/lib/utils/mapBackendLang.spec.js +0 -19
  189. package/lib/utils/navigateContextEntity.spec.js +0 -50
  190. package/lib/utils/normalizeAgentConnectors.spec.js +0 -89
  191. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  192. package/lib/utils/reasoningMappers.spec.js +0 -103
  193. package/lib/utils/retryCompletion.spec.js +0 -99
  194. package/lib/utils/skillContentSize.spec.js +0 -13
  195. package/lib/utils/slashCommandMarker.spec.js +0 -43
  196. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  197. package/lib/utils/sseStreamContent.spec.js +0 -31
  198. package/lib/utils/streamActivityMessages.spec.js +0 -131
  199. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -237,20 +237,15 @@ export var Sidebar = function Sidebar(_ref3) {
237
237
  isLegacyContextSession = _ref3$isLegacyContext === void 0 ? false : _ref3$isLegacyContext,
238
238
  _ref3$initialOpen = _ref3.initialOpen,
239
239
  initialOpen = _ref3$initialOpen === void 0 ? false : _ref3$initialOpen,
240
- onOpenChange = _ref3.onOpenChange,
241
- open = _ref3.open,
242
- _ref3$conversationsOn = _ref3.conversationsOnly,
243
- conversationsOnly = _ref3$conversationsOn === void 0 ? false : _ref3$conversationsOn,
244
- resetSelectedChatRef = _ref3.resetSelectedChatRef;
240
+ onOpenChange = _ref3.onOpenChange;
245
241
  var _useT2 = useT(),
246
242
  t = _useT2.t,
247
243
  i18n = _useT2.i18n;
248
244
  var tooltipZIndex = useMaiaTaskPanelZIndex(1500, 'overlay');
249
245
  var _useState3 = useState(initialOpen),
250
246
  _useState4 = _slicedToArray(_useState3, 2),
251
- uncontrolledOpen = _useState4[0],
252
- setUncontrolledOpen = _useState4[1];
253
- var isOpen = open !== null && open !== void 0 ? open : uncontrolledOpen;
247
+ isOpen = _useState4[0],
248
+ setIsOpen = _useState4[1];
254
249
  var _useState5 = useState(null),
255
250
  _useState6 = _slicedToArray(_useState5, 2),
256
251
  isOpenModal = _useState6[0],
@@ -258,9 +253,6 @@ export var Sidebar = function Sidebar(_ref3) {
258
253
  var activeChatId = useChatsStore(function (state) {
259
254
  return state.activeChatId;
260
255
  });
261
- var setActiveChatId = useChatsStore(function (state) {
262
- return state.setActiveChatId;
263
- });
264
256
  var chatsFetchedRef = useRef(false);
265
257
  var chatsContainerRef = useRef(null);
266
258
  var user = useUser();
@@ -287,15 +279,6 @@ export var Sidebar = function Sidebar(_ref3) {
287
279
  setUnreadCount = _useChats.setUnreadCount,
288
280
  setChatReadState = _useChats.setChatReadState;
289
281
  var unreadSubscribedRef = useRef(false);
290
- useEffect(function () {
291
- if (!resetSelectedChatRef) return undefined;
292
- resetSelectedChatRef.current = function () {
293
- return setActiveChatId(null);
294
- };
295
- return function () {
296
- resetSelectedChatRef.current = null;
297
- };
298
- }, [resetSelectedChatRef, setActiveChatId]);
299
282
  useEffect(function () {
300
283
  if (!(user !== null && user !== void 0 && user.id) || typeof $_sc === 'undefined' || !$_sc) return undefined;
301
284
  var channel = "sessions.unread:".concat(user.id);
@@ -326,7 +309,7 @@ export var Sidebar = function Sidebar(_ref3) {
326
309
  var canViewSkills = canAccessToSkills(user) && isSkillsPilotCompany(user === null || user === void 0 ? void 0 : user.company_id);
327
310
  var showMarketplaceSidebarButton = !!canCreateAgents && hasMultiAgentsFeatureAccess;
328
311
  var agentNavButtonCount = (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0) + (canViewSkills ? 1 : 0);
329
- var showAgentsNavBlock = !conversationsOnly && (showMarketplaceSidebarButton || canViewAgents || canViewSkills);
312
+ var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents || canViewSkills;
330
313
  var myAgentsSidebarTrackedRef = useRef(false);
331
314
  useEffect(function () {
332
315
  if (!canViewAgents || myAgentsSidebarTrackedRef.current) return;
@@ -385,11 +368,11 @@ export var Sidebar = function Sidebar(_ref3) {
385
368
  eventAmplitude(EVENTS.aiChatSidebar, {
386
369
  action: isOpen ? 'close' : 'open'
387
370
  });
388
- var next = !isOpen;
389
- if (open === undefined) {
390
- setUncontrolledOpen(next);
391
- }
392
- onOpenChange === null || onOpenChange === void 0 || onOpenChange(next);
371
+ setIsOpen(function (prev) {
372
+ var next = !prev;
373
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange(next);
374
+ return next;
375
+ });
393
376
  };
394
377
  var handleOpenCreateAgent = /*#__PURE__*/function () {
395
378
  var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
@@ -528,18 +511,6 @@ export var Sidebar = function Sidebar(_ref3) {
528
511
  }, [fetchChats]);
529
512
  var isAgentsHubSection = showNewChat && (agentsNavActive === 'myAgents' || agentsNavActive === 'maiaker' || agentsNavActive === 'mySkills');
530
513
  var showNewChatButton = isAgentsHubSection || !showNewChat && !hasError && !loadingChats && !isLegacyContextSession && ((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view) && !(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) || !(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && !(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));
531
- var newChatButton = /*#__PURE__*/_jsx(Tooltip, {
532
- title: t('conversations.newChat'),
533
- zIndex: tooltipZIndex,
534
- children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
535
- onClick: handleNewChat,
536
- "aria-label": t('conversations.newChat'),
537
- children: /*#__PURE__*/_jsx(NewChat, {
538
- width: 16,
539
- height: 16
540
- })
541
- })
542
- });
543
514
  return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
544
515
  $isOpen: isOpen,
545
516
  children: [/*#__PURE__*/_jsxs(SCSSidebarToolbar, {
@@ -560,7 +531,18 @@ export var Sidebar = function Sidebar(_ref3) {
560
531
  height: 20
561
532
  })
562
533
  })
563
- }), showNewChatButton ? newChatButton : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
534
+ }), showNewChatButton ? /*#__PURE__*/_jsx(Tooltip, {
535
+ title: t('conversations.newChat'),
536
+ zIndex: tooltipZIndex,
537
+ children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
538
+ onClick: handleNewChat,
539
+ "aria-label": t('conversations.newChat'),
540
+ children: /*#__PURE__*/_jsx(NewChat, {
541
+ width: 16,
542
+ height: 16
543
+ })
544
+ })
545
+ }) : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
564
546
  children: [/*#__PURE__*/_jsx(SCSSidebarCollapsedDivider, {}), showMarketplaceSidebarButton ? /*#__PURE__*/_jsx(Tooltip, {
565
547
  title: t('conversations.maiakerNav'),
566
548
  zIndex: tooltipZIndex,
@@ -657,7 +639,7 @@ export var Sidebar = function Sidebar(_ref3) {
657
639
  ref: chatsContainerRef,
658
640
  $hasChats: chats.length > 0,
659
641
  $offsetVariant: hasError ? 'error' : 'default',
660
- $agentNavButtonCount: showAgentsNavBlock ? agentNavButtonCount : 0,
642
+ $agentNavButtonCount: agentNavButtonCount,
661
643
  children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
662
644
  children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
663
645
  children: /*#__PURE__*/_jsx(ErrorState, {})
@@ -721,4 +703,4 @@ export var Sidebar = function Sidebar(_ref3) {
721
703
  })]
722
704
  });
723
705
  };
724
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJpc1NraWxsc1BpbG90Q29tcGFueSIsIm1hcENPUkxhbmciLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJnZXRBZ2VudERpc3BsYXlOYW1lIiwiaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQiLCJBUFBDVUVTX0VWRU5UUyIsIkFQUENVRVNfU0VMRUNUT1JTIiwidHJhY2tBcHBjdWVzRXZlbnQiLCJTZXNzaW9uR2VuZXJhdGluZ0RvdCIsInVzZUlzU2Vzc2lvbkdlbmVyYXRpbmciLCJ1c2VTZXNzaW9uTWV0YSIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VDaGF0c1N0b3JlIiwiU0NMSENXcmFwcGVyIiwiU0NMSENXcmFwcGVyQWdlbnQiLCJTQ0xIQ1dyYXBwZXJBZ2VudFRleHQiLCJTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zIiwiU0NMSENXcmFwcGVyQ29udGVudCIsIlNDTEhDV3JhcHBlclRpdGxlIiwiU0NMSENXcmFwcGVyVGl0bGVSb3ciLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTV3JhcHBlckFnZW50c05hdkljb24iLCJTQ1NTaWRlYmFyUm9vdCIsIlNDU1NpZGViYXJUb29sYmFyIiwiU0NTU2lkZWJhckJvZHkiLCJTQ1NTaWRlYmFyT3BlblBhbmVsIiwiU0NTU2lkZWJhckFnZW50c0Jsb2NrIiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3IiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nIiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93IiwiU0NTU2lkZWJhckNoYXRzU2Nyb2xsIiwiU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4iLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lciIsIlNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwIiwiU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSIsIlNDU1NpZGViYXJMb2FkaW5nQXJlYSIsIlNDU1NpZGViYXJMb2FkTW9yZVJvdyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzIiwiU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0IiwiU0NTU2lkZWJhckNoYXRzRm9vdGVyIiwiU0NTU2lkZWJhckZvb3RlckFjdGlvbnMiLCJTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSIsImFnZW50TmFtZSIsInJlcGxhY2UiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwiaW5kZXgiLCJ0b29sdGlwWkluZGV4IiwidGV4dFJlZiIsImFnZW50UmVmIiwiZGlzcGxheVRpdGxlIiwidGl0bGUiLCJkaXNwbGF5QWdlbnQiLCJhZ2VudFR5cGUiLCJhZ2VudCIsImNvbnRleHROYW1lIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJfdXNlUmVzaXplTGlzdGVuZXIyIiwic2hvd1Rvb2x0aXBBZ2VudCIsIl91c2VUIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGlvbiIsInNldEFjdGlvbiIsImlzR2VuZXJhdGluZyIsInNlc3Npb25FeHRlcm5hbElkIiwic2Vzc2lvbk1ldGEiLCJpc1VucmVhZCIsImlzUmVhZCIsIm1lbnVJdGVtcyIsImxhYmVsIiwib25DbGlja0l0ZW0iLCJjaGF0SWQiLCJJY29uIiwiZXZlbnRLZXkiLCJwbUFpTWVudUVkaXQiLCJwbUFpTWVudURlbGV0ZSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJjaGF0RGF0YSIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVEZWxldGVDaGF0IiwiY2hpbGRyZW4iLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiJGluZGV4IiwiYXJpYUxhYmVsIiwiaXNXcml0aW5nIiwiYW5pbWF0ZWQiLCJ6SW5kZXgiLCJyZWYiLCIkdW5yZWFkIiwiY29uY2F0Iiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJvbkNsb3NlIiwiaGFuZGxlU2V0SXNPcGVuTW9kYWwiLCJTaWRlYmFyIiwiX3JlZjMiLCJfdXNlciRwZXJtaXNzaW9ucyIsIm9uR29Ub0NoYXQiLCJfcmVmMyRvbkVycm9yIiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU3RhcnROZXdDaGF0IiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlT3BlblNraWxscyIsIm9uT3Blbk1haWFrZXJDcmVhdG9yIiwic2hvd05ld0NoYXQiLCJyZWZldGNoQ2hhdHMiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJoYXNFcnJvciIsIl9yZWYzJGFnZW50c05hdkFjdGl2ZSIsImFnZW50c05hdkFjdGl2ZSIsIl9yZWYzJGlzTGVnYWN5Q29udGV4dCIsImlzTGVnYWN5Q29udGV4dFNlc3Npb24iLCJfcmVmMyRpbml0aWFsT3BlbiIsImluaXRpYWxPcGVuIiwib25PcGVuQ2hhbmdlIiwib3BlbiIsIl9yZWYzJGNvbnZlcnNhdGlvbnNPbiIsImNvbnZlcnNhdGlvbnNPbmx5IiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJ1bmNvbnRyb2xsZWRPcGVuIiwic2V0VW5jb250cm9sbGVkT3BlbiIsImlzT3BlbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNPcGVuTW9kYWwiLCJzZXRJc09wZW5Nb2RhbCIsImFjdGl2ZUNoYXRJZCIsInN0YXRlIiwic2V0QWN0aXZlQ2hhdElkIiwiY2hhdHNGZXRjaGVkUmVmIiwiY2hhdHNDb250YWluZXJSZWYiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwiX3VzZUNoYXRzIiwibG9hZGluZ0NoYXRzIiwiY2hhdHMiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHMiLCJsaW1pdCIsIm9mZnNldCIsImhhc01vcmVDaGF0cyIsImxvYWRNb3JlQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJzZXRVbnJlYWRDb3VudCIsInNldENoYXRSZWFkU3RhdGUiLCJ1bnJlYWRTdWJzY3JpYmVkUmVmIiwidW5kZWZpbmVkIiwiY3VycmVudCIsIiRfc2MiLCJjaGFubmVsIiwiaGFuZGxlVW5yZWFkRXZlbnQiLCJfcmVmNCIsIm1vZGVsRGF0YSIsIm1vZGVsX2RhdGEiLCJ1bnJlYWRfY291bnQiLCJzZXNzaW9uX2lkIiwiaXNfcmVhZCIsInN1YnNjcmliZUhhbmRsZXIiLCJfJF9zYyRhY3Rpb25UeXBlIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJ1cGRhdGVDb25uZWN0aW9uTW9kZWwiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuQ3JlYXRlQWdlbnRzIiwiY3JlYXRlIiwiaGFzTXVsdGlBZ2VudHNGZWF0dXJlQWNjZXNzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImNhblZpZXdBZ2VudHMiLCJ2aWV3IiwiY2FuVmlld1NraWxscyIsImNvbXBhbnlfaWQiLCJzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIiwiYWdlbnROYXZCdXR0b25Db3VudCIsInNob3dBZ2VudHNOYXZCbG9jayIsIm15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYiLCJtYWlhU2lkZWJhck15QWdlbnRzIiwiX3JlZjUiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiYWlDaGF0U2lkZWJhciIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIl9yZWY2IiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImRhdGEiLCJtYWlha2VyQWdlbnQiLCJfdCIsIl90MiIsIl9jb250ZXh0MiIsImFicnVwdCIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsImFnZW50SXRlbSIsImhhbmRsZVNjcm9sbCIsIl9jaGF0c0NvbnRhaW5lclJlZiRjdSIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzQXRCb3R0b20iLCJjb250YWluZXIiLCJoYW5kbGVOZXdDaGF0IiwiYWlTaWRlYmFyTmV3Q2hhdCIsImhhbmRsZVJlZmV0Y2hTZXNzaW9uIiwiYmFja2dyb3VuZCIsImlzQWdlbnRzSHViU2VjdGlvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIm5ld0NoYXRCdXR0b24iLCIkaXNPcGVuIiwiY29sb3IiLCIkYWN0aXZlIiwiYWlDaGF0TXBPcGVuIiwiYWlTaWRlYmFyTXlBZ2VudHMiLCJhaVNpZGViYXJNeVNraWxscyIsInR5cGUiLCIkaGFzQ2hhdHMiLCJsZW5ndGgiLCIkb2Zmc2V0VmFyaWFudCIsIiRhZ2VudE5hdkJ1dHRvbkNvdW50IiwiY291bnQiLCIkanVzdGlmeUJldHdlZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvU2lkZWJhci9TaWRlYmFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlLCB0eXBlIE11dGFibGVSZWZPYmplY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvSGlzdG9yeSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NrZWxldG9uIH0gZnJvbSAnLi9TaWRlYmFyLnNrZWxldG9uJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTUFJQUljb24sIE1haWFTdG9yZUljb24sIE15QWdlbnRzTmF2SWNvbiwgU2tpbGxzTmF2SWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2FyZE1lbnUvQ2FyZE1lbnUnXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9FZGl0UXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscywgaXNTa2lsbHNQaWxvdENvbXBhbnkgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IGdldEFnZW50RGlzcGxheU5hbWUsIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFQUENVRVNfRVZFTlRTLCBBUFBDVUVTX1NFTEVDVE9SUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgU2Vzc2lvbkdlbmVyYXRpbmdEb3QgfSBmcm9tICcuLi8uLi9hdG9tcy9TZXNzaW9uR2VuZXJhdGluZ0RvdCdcbmltcG9ydCB7IHVzZUlzU2Vzc2lvbkdlbmVyYXRpbmcsIHVzZVNlc3Npb25NZXRhIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbk1ldGEnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHtcbiAgU0NMSENXcmFwcGVyLFxuICBTQ0xIQ1dyYXBwZXJBZ2VudCxcbiAgU0NMSENXcmFwcGVyQWdlbnRUZXh0LFxuICBTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zLFxuICBTQ0xIQ1dyYXBwZXJDb250ZW50LFxuICBTQ0xIQ1dyYXBwZXJUaXRsZSxcbiAgU0NMSENXcmFwcGVyVGl0bGVSb3csXG4gIFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24sXG4gIFNDU1dyYXBwZXJOZXdDaGF0SWNvbixcbiAgU0NTV3JhcHBlckFnZW50c05hdkljb24sXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ1NTaWRlYmFyUm9vdCxcbiAgU0NTU2lkZWJhclRvb2xiYXIsXG4gIFNDU1NpZGViYXJCb2R5LFxuICBTQ1NTaWRlYmFyT3BlblBhbmVsLFxuICBTQ1NTaWRlYmFyQWdlbnRzQmxvY2ssXG4gIFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbixcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbCxcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZCYWRnZU5ldyxcbiAgU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nLFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3csXG4gIFNDU1NpZGViYXJDaGF0c1Njcm9sbCxcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4sXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlVG9wLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXIsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlLFxuICBTQ1NTaWRlYmFyTG9hZGluZ0FyZWEsXG4gIFNDU1NpZGViYXJMb2FkTW9yZVJvdyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHMsXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCxcbiAgU0NTU2lkZWJhckNoYXRzRm9vdGVyLFxuICBTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyxcbiAgU0NTU2lkZWJhckNvbGxhcHNlZERpdmlkZXIsXG59IGZyb20gJy4vU2lkZWJhci5sYXlvdXQuc3R5bGVzJ1xuXG5jb25zdCBhY3Rpb25zID0ge1xuICBlZGl0OiAocHJvcHM6IGFueSkgPT4gPEVkaXRRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG4gIGRlbGV0ZTogKHByb3BzOiBhbnkpID0+IDxEZWxldGVRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG59XG5cbi8qKiBBYnJldmlhIFwiZXNwZWNpYWxpc3RhXCIvXCJlc3BlY2lhbGlzdFwiIOKGkiBcIkVzcC5cIiAoRVMvUFQpIHkgXCJzcGVjaWFsaXN0XCIg4oaSIFwiU3BlYy5cIiAoRU4pIGVuIGVsIG5vbWJyZSBkZWwgYWdlbnRlLiAqL1xuZnVuY3Rpb24gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShhZ2VudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghYWdlbnROYW1lIHx8IHR5cGVvZiBhZ2VudE5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gYWdlbnROYW1lXG4gIHJldHVybiBhZ2VudE5hbWUucmVwbGFjZSgvXFxiKGVzcGVjaWFsaXN0YXxlc3BlY2lhbGlzdClcXGIvZ2ksICdFc3AuJykucmVwbGFjZSgvXFxic3BlY2lhbGlzdFxcYi9naSwgJ1NwZWMuJylcbn1cblxuY29uc3QgTGlzdEhpc3RvcnlDaGF0ID0gKHtcbiAgY2hhdCxcbiAgb25DbGljayxcbiAgaXNNb2RhbE9wZW4sXG4gIG9uT3Blbk1vZGFsLFxuICBvbkNsb3NlTW9kYWwsXG4gIGhhbmRsZXJzLFxuICBpc1NlbGVjdGVkLFxuICBpbmRleCxcbiAgdG9vbHRpcFpJbmRleCxcbn06IHtcbiAgY2hhdDogYW55XG4gIG9uQ2xpY2s6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgaXNNb2RhbE9wZW46IGJvb2xlYW5cbiAgb25PcGVuTW9kYWw6IChjaGF0SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkNsb3NlTW9kYWw6ICgpID0+IHZvaWRcbiAgaGFuZGxlcnM6IHtcbiAgICBoYW5kbGVEZWxldGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gICAgaGFuZGxlVXBkYXRlQ2hhdDogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICB9XG4gIGlzU2VsZWN0ZWQ6IGJvb2xlYW5cbiAgaW5kZXg6IG51bWJlclxuICB0b29sdGlwWkluZGV4OiBudW1iZXJcbn0pID0+IHtcbiAgY29uc3QgdGV4dFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgYWdlbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGRpc3BsYXlUaXRsZSA9IHVzZU1lbW8oKCkgPT4gZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zKGNoYXQudGl0bGUpLCBbY2hhdC50aXRsZV0pXG4gIGNvbnN0IGRpc3BsYXlBZ2VudCA9IGdldEFnZW50RGlzcGxheU5hbWUoY2hhdC5hZ2VudFR5cGUsIGNoYXQuYWdlbnQpXG4gIGNvbnN0IGNvbnRleHROYW1lID0gY2hhdC5wcm9qZWN0TmFtZSB8fCBjaGF0LmNsaWVudE5hbWVcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2Rpc3BsYXlUaXRsZV0pXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKGFnZW50UmVmLCBbY2hhdC5hZ2VudF0pXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IFthY3Rpb24sIHNldEFjdGlvbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBpc0dlbmVyYXRpbmcgPSB1c2VJc1Nlc3Npb25HZW5lcmF0aW5nKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gIGNvbnN0IHNlc3Npb25NZXRhID0gdXNlU2Vzc2lvbk1ldGEoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgY29uc3QgaXNVbnJlYWQgPSBjaGF0LmlzUmVhZCA9PT0gZmFsc2UgJiYgIWlzR2VuZXJhdGluZ1xuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ1dyYXBwZXJDb250ZW50XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICBvbkNsaWNrKGNoYXQpXG4gICAgICAgIH19XG4gICAgICAgIGtleT17YGNvbnZlcnNhdGlvbi0ke2NoYXQuc2Vzc2lvbkV4dGVybmFsSWR9YH1cbiAgICAgICAgaXNNb2RhbE9wZW49e2lzTW9kYWxPcGVufVxuICAgICAgICBpc1NlbGVjdGVkPXtpc1NlbGVjdGVkfVxuICAgICAgICAkaW5kZXg9e2luZGV4fVxuICAgICAgPlxuICAgICAgICA8U0NMSENXcmFwcGVyPlxuICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJUaXRsZVJvdz5cbiAgICAgICAgICAgIHtpc0dlbmVyYXRpbmcgfHwgaXNVbnJlYWQgPyAoXG4gICAgICAgICAgICAgIDxTZXNzaW9uR2VuZXJhdGluZ0RvdFxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17aXNHZW5lcmF0aW5nID8gdCgnY29udmVyc2F0aW9ucy5nZW5lcmF0aW5nJykgOiB0KCdjb252ZXJzYXRpb25zLnVucmVhZExhYmVsJyl9XG4gICAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc0dlbmVyYXRpbmcgJiYgc2Vzc2lvbk1ldGE/LmlzV3JpdGluZ31cbiAgICAgICAgICAgICAgICBhbmltYXRlZD17aXNHZW5lcmF0aW5nfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBkaXNwbGF5VGl0bGUgOiAnJ30gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlIHJlZj17dGV4dFJlZn0gJHVucmVhZD17aXNVbnJlYWR9PlxuICAgICAgICAgICAgICAgIHtkaXNwbGF5VGl0bGUgfHwgdCgnY29udmVyc2F0aW9ucy5lbXB0eUxhYmVsJyl9XG4gICAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyVGl0bGU+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJUaXRsZVJvdz5cbiAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgdGl0bGU9e3Nob3dUb29sdGlwQWdlbnQgPyBkaXNwbGF5QWdlbnQgKyAoY29udGV4dE5hbWUgPyBgIC0gJHtjb250ZXh0TmFtZX1gIDogJycpIDogJyd9XG4gICAgICAgICAgICB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50PlxuICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgfHwgY2hhdC5hZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InID8gKFxuICAgICAgICAgICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JyB9fT57Y2hhdC5lbW9qaX08L3NwYW4+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50VGV4dCByZWY9e2FnZW50UmVmfT5cbiAgICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgfHwgY2hhdC5hZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gICAgICAgICAgICAgICAgICA/IGFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUoY2hhdC5hZ2VudClcbiAgICAgICAgICAgICAgICAgIDogY2hhdC5hZ2VudH1cbiAgICAgICAgICAgICAgICB7Y2hhdC5wcm9qZWN0TmFtZSAmJiBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWB9XG4gICAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnRUZXh0PlxuICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NMSENXcmFwcGVyPlxuICAgICAgICA8U0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIGljb25Pbmx5XG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICBvbk9wZW5Nb2RhbChjaGF0LmlkKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWVudURvdHMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAge2lzTW9kYWxPcGVuICYmICFhY3Rpb24gJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLW1vZGFsLWNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHRvcDogJzMycHgnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMTZweCcsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMTAwMCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgcmdiYSgyMjQsIDIyNCwgMjI0LCAxKScsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcxMjRweCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttZW51SXRlbXMubWFwKCh7IGxhYmVsLCBvbkNsaWNrSXRlbSwgSWNvbiwgZXZlbnRLZXkgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25JdGVtXG4gICAgICAgICAgICAgICAgICBrZXk9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25DbGlja0l0ZW0oY2hhdC5pZCl9XG4gICAgICAgICAgICAgICAgICBJY29uPXtJY29ufVxuICAgICAgICAgICAgICAgICAgZXZlbnRLZXk9e2V2ZW50S2V5fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgPC9TQ0xIQ1dyYXBwZXJDb250ZW50PlxuICAgICAgeyEhYWN0aW9uICYmXG4gICAgICAgIGFjdGlvbnNbYWN0aW9uXSh7XG4gICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZU1vZGFsKClcbiAgICAgICAgICAgIHNldEFjdGlvbihudWxsKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hhdCxcbiAgICAgICAgICBoYW5kbGVyczoge1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbixcbiAgICAgICAgICAgIGhhbmRsZVNldElzT3Blbk1vZGFsOiBvbkNsb3NlTW9kYWwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSl9XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFNpZGViYXIgPSAoe1xuICBvbkdvVG9DaGF0LFxuICBvbkVycm9yID0gKCkgPT4gbnVsbCxcbiAgaGFuZGxlR29Ub0hvbWUsXG4gIGhhbmRsZVN0YXJ0TmV3Q2hhdCxcbiAgaGFuZGxlT3Blbk1hcmtldHBsYWNlLFxuICBoYW5kbGVPcGVuU2tpbGxzLFxuICBvbk9wZW5NYWlha2VyQ3JlYXRvcixcbiAgc2hvd05ld0NoYXQsXG4gIHJlZmV0Y2hDaGF0cyxcbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzLFxuICBoYXNFcnJvcixcbiAgYWdlbnRzTmF2QWN0aXZlID0gbnVsbCxcbiAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiA9IGZhbHNlLFxuICBpbml0aWFsT3BlbiA9IGZhbHNlLFxuICBvbk9wZW5DaGFuZ2UsXG4gIG9wZW4sXG4gIGNvbnZlcnNhdGlvbnNPbmx5ID0gZmFsc2UsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICAvKiogSW5pY2lhIHVuIGNoYXQgbnVldm87IGVuIE1pcyBhZ2VudGVzIC8gTWFpYWtlciAvIE1pcyBza2lsbHMgdXNhIGVsIHByaW1lciBhZ2VudGUgZGUgbGEgbGlzdGEuICovXG4gIGhhbmRsZVN0YXJ0TmV3Q2hhdD86ICgpID0+IHZvaWRcbiAgaGFuZGxlT3Blbk1hcmtldHBsYWNlOiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5Ta2lsbHM6ICgpID0+IHZvaWRcbiAgLyoqIEFicmUgZWwgY3JlYWRvciBNYWlha2VyIChtaXNtYSBsw7NnaWNhIHF1ZSBlbCBodWIgZGVsIG1vZGFsKS4gKi9cbiAgb25PcGVuTWFpYWtlckNyZWF0b3I/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICAvKiogUmVzYWx0YSBNYWlha2VyLCBNaXMgYWdlbnRlcyBvIE1pcyBza2lsbHMgKi9cbiAgYWdlbnRzTmF2QWN0aXZlPzogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8ICdteVNraWxscycgfCBudWxsXG4gIC8qKiBDb252ZXJzYWNpw7NuIGRlIHVuIGNsb25lIGxlZ2FjeSAoYWdlbnRfdHlwZSBjbG9uZSArIGVudGl0eSBwcm9qZWN0L2NsaWVudC90YXNrKTogb2N1bHRhIFwibnVldm8gY2hhdFwiLiAqL1xuICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uPzogYm9vbGVhblxuICAvKiogRXN0YWRvIGluaWNpYWwgZGVsIHNpZGViYXIgKHJlc3RhdXJhY2nDs24gZGUgc2VzacOzbiB0cmFzIG5hdmVnYWNpw7NuKS4gKi9cbiAgaW5pdGlhbE9wZW4/OiBib29sZWFuXG4gIG9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG4gIC8qKiBTaSBzZSBwYXNhLCBlbCBzaWRlYmFyIGVzIGNvbnRyb2xhZG8gcG9yIGVsIHBhZHJlIChwLiBlai4gdG9nZ2xlIGRlbCBoZWFkZXIgZGUgcMOhZ2luYSkuICovXG4gIG9wZW4/OiBib29sZWFuXG4gIC8qKiBQw6FnaW5hIC9tYWlhOiBzb2xvIGhpc3RvcmlhbCBkZSBjb252ZXJzYWNpb25lcywgc2luIG5hdiBkZSBhZ2VudGVzLiAqL1xuICBjb252ZXJzYXRpb25zT25seT86IGJvb2xlYW5cbiAgLyoqIENhbGxiYWNrIGltcGVyYXRpdm8gcGFyYSBkZXNlbGVjY2lvbmFyIGVsIGNoYXQgYWN0aXZvIGFsIHZvbHZlciBhbCBob21lIChww6FnaW5hIC9tYWlhKS4gKi9cbiAgcmVzZXRTZWxlY3RlZENoYXRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PCgoKSA9PiB2b2lkKSB8IG51bGw+XG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcbiAgY29uc3QgW3VuY29udHJvbGxlZE9wZW4sIHNldFVuY29udHJvbGxlZE9wZW5dID0gdXNlU3RhdGUoaW5pdGlhbE9wZW4pXG4gIGNvbnN0IGlzT3BlbiA9IG9wZW4gPz8gdW5jb250cm9sbGVkT3BlblxuICBjb25zdCBbaXNPcGVuTW9kYWwsIHNldElzT3Blbk1vZGFsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFjdGl2ZUNoYXRJZCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuYWN0aXZlQ2hhdElkKVxuICBjb25zdCBzZXRBY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldEFjdGl2ZUNoYXRJZClcbiAgY29uc3QgY2hhdHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBjaGF0c0NvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBzZXRVbnJlYWRDb3VudCxcbiAgICBzZXRDaGF0UmVhZFN0YXRlLFxuICB9ID0gdXNlQ2hhdHMoe1xuICAgIG9uRXJyb3IsXG4gIH0pXG5cbiAgY29uc3QgdW5yZWFkU3Vic2NyaWJlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVzZXRTZWxlY3RlZENoYXRSZWYpIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSAoKSA9PiBzZXRBY3RpdmVDaGF0SWQobnVsbClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIH1cbiAgfSwgW3Jlc2V0U2VsZWN0ZWRDaGF0UmVmLCBzZXRBY3RpdmVDaGF0SWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF1c2VyPy5pZCB8fCB0eXBlb2YgJF9zYyA9PT0gJ3VuZGVmaW5lZCcgfHwgISRfc2MpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGNoYW5uZWwgPSBgc2Vzc2lvbnMudW5yZWFkOiR7dXNlci5pZH1gXG4gICAgY29uc3QgaGFuZGxlVW5yZWFkRXZlbnQgPSAoe1xuICAgICAgbW9kZWxfZGF0YTogbW9kZWxEYXRhLFxuICAgIH06IHtcbiAgICAgIG1vZGVsX2RhdGE/OiB7IHVucmVhZF9jb3VudD86IG51bWJlcjsgc2Vzc2lvbl9pZD86IHN0cmluZzsgaXNfcmVhZD86IGJvb2xlYW4gfVxuICAgIH0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgbW9kZWxEYXRhPy51bnJlYWRfY291bnQgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHNldFVucmVhZENvdW50KG1vZGVsRGF0YS51bnJlYWRfY291bnQpXG4gICAgICB9XG4gICAgICBpZiAobW9kZWxEYXRhPy5zZXNzaW9uX2lkICYmIHR5cGVvZiBtb2RlbERhdGE/LmlzX3JlYWQgPT09ICdib29sZWFuJykge1xuICAgICAgICBzZXRDaGF0UmVhZFN0YXRlKG1vZGVsRGF0YS5zZXNzaW9uX2lkLCBtb2RlbERhdGEuaXNfcmVhZClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3NjLnN1YnNjcmliZUhhbmRsZXIoY2hhbm5lbCwgaGFuZGxlVW5yZWFkRXZlbnQpXG5cbiAgICBpZiAoIXVucmVhZFN1YnNjcmliZWRSZWYuY3VycmVudCkge1xuICAgICAgJF9zYy51cGRhdGVDb25uZWN0aW9uTW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICBtb2RlbF9oYXNoOiBjaGFubmVsLFxuICAgICAgICAgIGFjdGlvbjogJF9zYy5hY3Rpb25UeXBlPy5TVUJTQ1JJQkUsXG4gICAgICAgIH0sXG4gICAgICAgIGNoYW5uZWwsXG4gICAgICAgIHVzZXIsXG4gICAgICAgIHVzZXIsXG4gICAgICAgICRfc2MuY2hhbm5lbFR5cGU/Lk1PREVMX0NIQU5ORUxcbiAgICAgIClcbiAgICAgIHVucmVhZFN1YnNjcmliZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFt1c2VyLCBzZXRVbnJlYWRDb3VudCwgc2V0Q2hhdFJlYWRTdGF0ZV0pXG5cbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGVBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlXG4gIGNvbnN0IGhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgY2FuVmlld0FnZW50cyA9ICEhdXNlclBlcm1pc3Npb25zPy52aWV3ICYmIGhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2Vzc1xuICBjb25zdCBjYW5WaWV3U2tpbGxzID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcikgJiYgaXNTa2lsbHNQaWxvdENvbXBhbnkodXNlcj8uY29tcGFueV9pZClcbiAgY29uc3Qgc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA9ICEhY2FuQ3JlYXRlQWdlbnRzICYmIGhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2Vzc1xuICBjb25zdCBhZ2VudE5hdkJ1dHRvbkNvdW50ID0gKChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gMSA6IDApICtcbiAgICAoY2FuVmlld0FnZW50cyA/IDEgOiAwKSArXG4gICAgKGNhblZpZXdTa2lsbHMgPyAxIDogMCkpIGFzIDAgfCAxIHwgMiB8IDNcbiAgY29uc3Qgc2hvd0FnZW50c05hdkJsb2NrID0gIWNvbnZlcnNhdGlvbnNPbmx5ICYmIChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHMgfHwgY2FuVmlld1NraWxscylcbiAgY29uc3QgbXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2FuVmlld0FnZW50cyB8fCBteUFnZW50c1NpZGViYXJUcmFja2VkUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgbXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHRyYWNrQXBwY3Vlc0V2ZW50KEFQUENVRVNfRVZFTlRTLm1haWFTaWRlYmFyTXlBZ2VudHMpXG4gIH0sIFtjYW5WaWV3QWdlbnRzXSlcblxuICBjb25zdCBoYW5kbGVEZWxldGVDaGF0ID0gYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgIGRlbGV0ZUNoYXQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwZGF0ZUNoYXQgPSAoY2hhdDogYW55KSA9PiB7XG4gICAgdXBkYXRlQ2hhdChjaGF0KVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwgJiYgaXNPcGVuTW9kYWwgIT09IGNoYXRJZCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SXNPcGVuTW9kYWwoY2hhdElkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoaXNPcGVuTW9kYWwgJiYgIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnW2RhdGEtbW9kYWwtY29udGFpbmVyXScpKSB7XG4gICAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc09wZW5Nb2RhbF0pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTaWRlYmFyLCB7IGFjdGlvbjogaXNPcGVuID8gJ2Nsb3NlJyA6ICdvcGVuJyB9KVxuICAgIGNvbnN0IG5leHQgPSAhaXNPcGVuXG4gICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0VW5jb250cm9sbGVkT3BlbihuZXh0KVxuICAgIH1cbiAgICBvbk9wZW5DaGFuZ2U/LihuZXh0KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChvbk9wZW5NYWlha2VyQ3JlYXRvcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgb25PcGVuTWFpYWtlckNyZWF0b3IoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIG9uRXJyb3IoKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudEl0ZW06IHsgdHlwZT86IHN0cmluZzsgZW50aXR5Pzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gICAgICAgIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50SXRlbSlcbiAgICAgIClcblxuICAgICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICAvLyBoYW5kbGVHb1RvSG9tZSBwdWVkZSByZXNlbGVjY2lvbmFyIGFnZW50cy5kYXRhWzBdIHNpIGVsIGFnZW50ZSBnbG9iYWwgYXVuIGVzdGEgZW4gbnVsbFxuICAgICAgLy8gKGNsb3N1cmUgc3RhbGUgZGUgbGEgc2VjY2lvbiBcIk1pcyBhZ2VudGVzXCIpLCBwb3IgZXNvIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudCkgdmEgZGVzcHVlcy5cbiAgICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcigpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgLy8gUmVmZXRjaCBzb2xpY2l0YWRvIHBvciBwcm9wOiBzZSBlamVjdXRhIGF1bnF1ZSBlbCBzaWRlYmFyIGVzdMOpIGNvbGFwc2Fkby5cbiAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW3JlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzLCBmZXRjaENoYXRzLCBsaW1pdCwgb2Zmc2V0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghY2hhdHNDb250YWluZXJSZWYuY3VycmVudCB8fCAhaGFzTW9yZUNoYXRzIHx8IGlzTG9hZGluZ01vcmVDaGF0cyB8fCBoYXNFcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDEwXG5cbiAgICAgIGlmIChpc0F0Qm90dG9tKSB7XG4gICAgICAgIGxvYWRNb3JlQ2hhdHMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaGFzTW9yZUNoYXRzLCBpc0xvYWRpbmdNb3JlQ2hhdHMsIGxvYWRNb3JlQ2hhdHMsIGhhc0Vycm9yXSlcblxuICBjb25zdCBoYW5kbGVOZXdDaGF0ID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haVNpZGViYXJOZXdDaGF0KVxuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgaWYgKGhhbmRsZVN0YXJ0TmV3Q2hhdCkge1xuICAgICAgaGFuZGxlU3RhcnROZXdDaGF0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEFsIGNyZWFyL2FjdHVhbGl6YXIgdW5hIGNvbnZlcnNhY2nDs24gcmVmcmVzY2Ftb3MgbGEgbGlzdGEgYXVucXVlIGVsIHNpZGViYXIgZXN0w6kgY29sYXBzYWRvLlxuICAgIGNvbnN0IGhhbmRsZVJlZmV0Y2hTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IDIwLCBvZmZzZXQ6IDAsIGJhY2tncm91bmQ6IHRydWUgfSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIH1cbiAgfSwgW2ZldGNoQ2hhdHNdKVxuXG4gIGNvbnN0IGlzQWdlbnRzSHViU2VjdGlvbiA9XG4gICAgc2hvd05ld0NoYXQgJiYgKGFnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJyB8fCBhZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJyB8fCBhZ2VudHNOYXZBY3RpdmUgPT09ICdteVNraWxscycpXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgIGlzQWdlbnRzSHViU2VjdGlvbiB8fFxuICAgICghc2hvd05ld0NoYXQgJiZcbiAgICAgICFoYXNFcnJvciAmJlxuICAgICAgIWxvYWRpbmdDaGF0cyAmJlxuICAgICAgIWlzTGVnYWN5Q29udGV4dFNlc3Npb24gJiZcbiAgICAgICgodXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykgfHxcbiAgICAgICAgKCF1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSkpXG5cbiAgY29uc3QgbmV3Q2hhdEJ1dHRvbiA9IChcbiAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU5ld0NoYXR9IGFyaWEtbGFiZWw9e3QoJ2NvbnZlcnNhdGlvbnMubmV3Q2hhdCcpfT5cbiAgICAgICAgPE5ld0NoYXQgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgPC9TQ1NXcmFwcGVyTmV3Q2hhdEljb24+XG4gICAgPC9Ub29sdGlwPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTU2lkZWJhclJvb3QgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgIDxTQ1NTaWRlYmFyVG9vbGJhciAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNPcGVuID8gdCgnY29udmVyc2F0aW9ucy5jb2xsYXBzZScpIDogdCgnaGlzdG9yeS50b29sdGlwJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgPFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24gb25DbGljaz17aGFuZGxlVG9nZ2xlU2lkZWJhcn0gaXNPcGVuPXtpc09wZW59PlxuICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgPENoZXZyb25Eb3VibGVMZWZ0IGNvbG9yPVwicmdiYSgxMDIsIDEwMiwgMTAyLCAxKVwiIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxIaXN0b3J5IGNvbG9yPVwicmdiYSgxMywgMTMsIDEzLCAxKVwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIHtzaG93TmV3Q2hhdEJ1dHRvbiA/IG5ld0NoYXRCdXR0b24gOiBudWxsfVxuICAgICAgICB7IWlzT3BlbiAmJiBzaG93QWdlbnRzTmF2QmxvY2sgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciAvPlxuICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJBZ2VudHNOYXZJY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5teUFnZW50c05hdicpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgIDxTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvblxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnfVxuICAgICAgICAgICAgICAgICAgZGF0YS1hcHBjdWVzPXtBUFBDVUVTX1NFTEVDVE9SUy5tYWlhU2lkZWJhck15QWdlbnRzfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlBZ2VudHMpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSgpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7Y2FuVmlld1NraWxscyA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlTa2lsbHNOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15U2tpbGxzKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNraWxsc05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICAgICB7c2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhU3RvcmVJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFwcGN1ZXM9e0FQUENVRVNfU0VMRUNUT1JTLm1haWFTaWRlYmFyTXlBZ2VudHN9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3U2tpbGxzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlTa2lsbHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3Pnt0KCdob21lTWVudS5tYWlha2VyLmJhZGdlTmV3Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3PlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz57dCgnY29udmVyc2F0aW9ucy50aXRsZScpfTwvU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nPlxuICAgICAgICAgICAgICA8L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1Jvdz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXtzaG93QWdlbnRzTmF2QmxvY2sgPyBhZ2VudE5hdkJ1dHRvbkNvdW50IDogMH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmICFjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JTdGF0ZSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgKSA6IGxvYWRpbmdDaGF0cyA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckxvYWRpbmdBcmVhPlxuICAgICAgICAgICAgICAgICAgPFNpZGViYXJDaGF0c1NrZWxldG9uIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjaGF0cy5tYXAoKGNoYXQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3RIaXN0b3J5Q2hhdFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhdD17Y2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NoYXREYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkdvVG9DaGF0KGNoYXREYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9kYWxPcGVuPXtpc09wZW5Nb2RhbCA9PT0gY2hhdC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uT3Blbk1vZGFsPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlTW9kYWw9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWxldGVDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVDaGF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e2FjdGl2ZUNoYXRJZCA9PT0gY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZUNoYXRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gY291bnQ9ezJ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICAgICA8RW1wdHlIaXN0b3J5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD57dCgnY29udmVyc2F0aW9ucy5lbXB0eScpfTwvU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0PlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c1Njcm9sbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgIDwvU0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyAkaXNPcGVuPXtpc09wZW59ICRqdXN0aWZ5QmV0d2Vlbj17ISFzZWxlY3RlZEFnZW50fT5cbiAgICAgICAgICB7c2VsZWN0ZWRBZ2VudCA/IDxGZWVkYmFja0J1dHRvbiBzZWxlY3RlZEFnZW50PXtzZWxlY3RlZEFnZW50fSBpc09wZW49e2lzT3Blbn0gLz4gOiBudWxsfVxuICAgICAgICA8L1NDU1NpZGViYXJGb290ZXJBY3Rpb25zPlxuICAgICAgPC9TQ1NTaWRlYmFyQm9keT5cbiAgICA8L1NDU1NpZGViYXJSb290PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQStCLE9BQU87QUFDbkYsU0FBU0MsaUJBQWlCLFFBQVEsb0RBQW9EO0FBQ3RGLFNBQVNDLE9BQU8sUUFBUSwwQ0FBMEM7QUFDbEUsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUU5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFT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
706
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJpc1NraWxsc1BpbG90Q29tcGFueSIsIm1hcENPUkxhbmciLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJnZXRBZ2VudERpc3BsYXlOYW1lIiwiaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQiLCJBUFBDVUVTX0VWRU5UUyIsIkFQUENVRVNfU0VMRUNUT1JTIiwidHJhY2tBcHBjdWVzRXZlbnQiLCJTZXNzaW9uR2VuZXJhdGluZ0RvdCIsInVzZUlzU2Vzc2lvbkdlbmVyYXRpbmciLCJ1c2VTZXNzaW9uTWV0YSIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VDaGF0c1N0b3JlIiwiU0NMSENXcmFwcGVyIiwiU0NMSENXcmFwcGVyQWdlbnQiLCJTQ0xIQ1dyYXBwZXJBZ2VudFRleHQiLCJTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zIiwiU0NMSENXcmFwcGVyQ29udGVudCIsIlNDTEhDV3JhcHBlclRpdGxlIiwiU0NMSENXcmFwcGVyVGl0bGVSb3ciLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTV3JhcHBlckFnZW50c05hdkljb24iLCJTQ1NTaWRlYmFyUm9vdCIsIlNDU1NpZGViYXJUb29sYmFyIiwiU0NTU2lkZWJhckJvZHkiLCJTQ1NTaWRlYmFyT3BlblBhbmVsIiwiU0NTU2lkZWJhckFnZW50c0Jsb2NrIiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3IiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nIiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nUm93IiwiU0NTU2lkZWJhckNoYXRzU2Nyb2xsIiwiU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4iLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lciIsIlNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwIiwiU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSIsIlNDU1NpZGViYXJMb2FkaW5nQXJlYSIsIlNDU1NpZGViYXJMb2FkTW9yZVJvdyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzIiwiU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0IiwiU0NTU2lkZWJhckNoYXRzRm9vdGVyIiwiU0NTU2lkZWJhckZvb3RlckFjdGlvbnMiLCJTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSIsImFnZW50TmFtZSIsInJlcGxhY2UiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwiaW5kZXgiLCJ0b29sdGlwWkluZGV4IiwidGV4dFJlZiIsImFnZW50UmVmIiwiZGlzcGxheVRpdGxlIiwidGl0bGUiLCJkaXNwbGF5QWdlbnQiLCJhZ2VudFR5cGUiLCJhZ2VudCIsImNvbnRleHROYW1lIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJfdXNlUmVzaXplTGlzdGVuZXIyIiwic2hvd1Rvb2x0aXBBZ2VudCIsIl91c2VUIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGlvbiIsInNldEFjdGlvbiIsImlzR2VuZXJhdGluZyIsInNlc3Npb25FeHRlcm5hbElkIiwic2Vzc2lvbk1ldGEiLCJpc1VucmVhZCIsImlzUmVhZCIsIm1lbnVJdGVtcyIsImxhYmVsIiwib25DbGlja0l0ZW0iLCJjaGF0SWQiLCJJY29uIiwiZXZlbnRLZXkiLCJwbUFpTWVudUVkaXQiLCJwbUFpTWVudURlbGV0ZSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJjaGF0RGF0YSIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVEZWxldGVDaGF0IiwiY2hpbGRyZW4iLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiJGluZGV4IiwiYXJpYUxhYmVsIiwiaXNXcml0aW5nIiwiYW5pbWF0ZWQiLCJ6SW5kZXgiLCJyZWYiLCIkdW5yZWFkIiwiY29uY2F0Iiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJvbkNsb3NlIiwiaGFuZGxlU2V0SXNPcGVuTW9kYWwiLCJTaWRlYmFyIiwiX3JlZjMiLCJfdXNlciRwZXJtaXNzaW9ucyIsIm9uR29Ub0NoYXQiLCJfcmVmMyRvbkVycm9yIiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU3RhcnROZXdDaGF0IiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlT3BlblNraWxscyIsIm9uT3Blbk1haWFrZXJDcmVhdG9yIiwic2hvd05ld0NoYXQiLCJyZWZldGNoQ2hhdHMiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJoYXNFcnJvciIsIl9yZWYzJGFnZW50c05hdkFjdGl2ZSIsImFnZW50c05hdkFjdGl2ZSIsIl9yZWYzJGlzTGVnYWN5Q29udGV4dCIsImlzTGVnYWN5Q29udGV4dFNlc3Npb24iLCJfcmVmMyRpbml0aWFsT3BlbiIsImluaXRpYWxPcGVuIiwib25PcGVuQ2hhbmdlIiwiX3VzZVQyIiwiaTE4biIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW5Nb2RhbCIsInNldElzT3Blbk1vZGFsIiwiYWN0aXZlQ2hhdElkIiwic3RhdGUiLCJjaGF0c0ZldGNoZWRSZWYiLCJjaGF0c0NvbnRhaW5lclJlZiIsInVzZXIiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0ZWRBZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJfdXNlQ2hhdHMiLCJsb2FkaW5nQ2hhdHMiLCJjaGF0cyIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0IiwiZmV0Y2hDaGF0cyIsImxpbWl0Iiwib2Zmc2V0IiwiaGFzTW9yZUNoYXRzIiwibG9hZE1vcmVDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsInNldFVucmVhZENvdW50Iiwic2V0Q2hhdFJlYWRTdGF0ZSIsInVucmVhZFN1YnNjcmliZWRSZWYiLCIkX3NjIiwidW5kZWZpbmVkIiwiY2hhbm5lbCIsImhhbmRsZVVucmVhZEV2ZW50IiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwidW5yZWFkX2NvdW50Iiwic2Vzc2lvbl9pZCIsImlzX3JlYWQiLCJzdWJzY3JpYmVIYW5kbGVyIiwiY3VycmVudCIsIl8kX3NjJGFjdGlvblR5cGUiLCJfJF9zYyRjaGFubmVsVHlwZSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsIm1vZGVsX2hhc2giLCJhY3Rpb25UeXBlIiwiU1VCU0NSSUJFIiwiY2hhbm5lbFR5cGUiLCJNT0RFTF9DSEFOTkVMIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGVBZ2VudHMiLCJjcmVhdGUiLCJoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuVmlld0FnZW50cyIsInZpZXciLCJjYW5WaWV3U2tpbGxzIiwiY29tcGFueV9pZCIsInNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24iLCJhZ2VudE5hdkJ1dHRvbkNvdW50Iiwic2hvd0FnZW50c05hdkJsb2NrIiwibXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZiIsIm1haWFTaWRlYmFyTXlBZ2VudHMiLCJfcmVmNSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZU9wZW5Nb2RhbCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVDbGlja091dHNpZGUiLCJ0YXJnZXQiLCJjbG9zZXN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVRvZ2dsZVNpZGViYXIiLCJhaUNoYXRTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjYiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl90IiwiX3QyIiwiX2NvbnRleHQyIiwiYWJydXB0IiwicGF0aCIsImxhbmd1YWdlIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJmaW5kIiwiYWdlbnRJdGVtIiwiaGFuZGxlU2Nyb2xsIiwiX2NoYXRzQ29udGFpbmVyUmVmJGN1Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaXNBdEJvdHRvbSIsImNvbnRhaW5lciIsImhhbmRsZU5ld0NoYXQiLCJhaVNpZGViYXJOZXdDaGF0IiwiaGFuZGxlUmVmZXRjaFNlc3Npb24iLCJiYWNrZ3JvdW5kIiwiaXNBZ2VudHNIdWJTZWN0aW9uIiwic2hvd05ld0NoYXRCdXR0b24iLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiJGlzT3BlbiIsImNvbG9yIiwiJGFjdGl2ZSIsImFpQ2hhdE1wT3BlbiIsImFpU2lkZWJhck15QWdlbnRzIiwiYWlTaWRlYmFyTXlTa2lsbHMiLCJ0eXBlIiwiJGhhc0NoYXRzIiwibGVuZ3RoIiwiJG9mZnNldFZhcmlhbnQiLCIkYWdlbnROYXZCdXR0b25Db3VudCIsImNvdW50IiwiJGp1c3RpZnlCZXR3ZWVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hldnJvbkRvdWJsZUxlZnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG91YmxlTGVmdCdcbmltcG9ydCB7IEhpc3RvcnkgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9IaXN0b3J5J1xuaW1wb3J0IHsgQ1VCdXR0b24gfSBmcm9tICdAcHJvamVjdGNvci9idXR0b24vbGliL2NvbXBvbmVudHMvQ1VCdXR0b24nXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgUGVuY2lsIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvUGVuY2lsJ1xuaW1wb3J0IHsgVHJhc2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9UcmFzaCdcblxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuXG5pbXBvcnQgeyBFbXB0eUhpc3RvcnlJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRW1wdHlIaXN0b3J5J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyB1c2VDaGF0cyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRzJ1xuaW1wb3J0IHsgU2lkZWJhckNoYXRzU2tlbGV0b24gfSBmcm9tICcuL1NpZGViYXIuc2tlbGV0b24nXG5pbXBvcnQgeyBFcnJvclN0YXRlLCBNQUlBSWNvbiwgTWFpYVN0b3JlSWNvbiwgTXlBZ2VudHNOYXZJY29uLCBTa2lsbHNOYXZJY29uLCBOZXdDaGF0IH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRXJyb3JJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRXJyb3JJY29uJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL0ZlZWRiYWNrQnV0dG9uJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzLCBpc1NraWxsc1BpbG90Q29tcGFueSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuaW1wb3J0IHsgZ2V0QWdlbnREaXNwbGF5TmFtZSwgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIEFQUENVRVNfU0VMRUNUT1JTLCB0cmFja0FwcGN1ZXNFdmVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcGN1ZXMnXG5pbXBvcnQgeyBTZXNzaW9uR2VuZXJhdGluZ0RvdCB9IGZyb20gJy4uLy4uL2F0b21zL1Nlc3Npb25HZW5lcmF0aW5nRG90J1xuaW1wb3J0IHsgdXNlSXNTZXNzaW9uR2VuZXJhdGluZywgdXNlU2Vzc2lvbk1ldGEgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uTWV0YSdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ0xIQ1dyYXBwZXJUaXRsZVJvdyxcbiAgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbixcbiAgU0NTV3JhcHBlck5ld0NoYXRJY29uLFxuICBTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbixcbn0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3LFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmcsXG4gIFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1JvdyxcbiAgU0NTU2lkZWJhckNoYXRzU2Nyb2xsLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbixcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVUb3AsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lcixcbiAgU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UsXG4gIFNDU1NpZGViYXJMb2FkaW5nQXJlYSxcbiAgU0NTU2lkZWJhckxvYWRNb3JlUm93LFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0cyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0LFxuICBTQ1NTaWRlYmFyQ2hhdHNGb290ZXIsXG4gIFNDU1NpZGViYXJGb290ZXJBY3Rpb25zLFxuICBTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlcixcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV4LFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpbmRleDogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg6IG51bWJlclxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgZGlzcGxheVRpdGxlID0gdXNlTWVtbygoKSA9PiBmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMoY2hhdC50aXRsZSksIFtjaGF0LnRpdGxlXSlcbiAgY29uc3QgZGlzcGxheUFnZW50ID0gZ2V0QWdlbnREaXNwbGF5TmFtZShjaGF0LmFnZW50VHlwZSwgY2hhdC5hZ2VudClcbiAgY29uc3QgY29udGV4dE5hbWUgPSBjaGF0LnByb2plY3ROYW1lIHx8IGNoYXQuY2xpZW50TmFtZVxuICBjb25zdCB7IHNob3dUb29sdGlwIH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmLCBbZGlzcGxheVRpdGxlXSlcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBBZ2VudCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFtjaGF0LmFnZW50XSlcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGlvbiwgc2V0QWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzR2VuZXJhdGluZyA9IHVzZUlzU2Vzc2lvbkdlbmVyYXRpbmcoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgY29uc3Qgc2Vzc2lvbk1ldGEgPSB1c2VTZXNzaW9uTWV0YShjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICBjb25zdCBpc1VucmVhZCA9IGNoYXQuaXNSZWFkID09PSBmYWxzZSAmJiAhaXNHZW5lcmF0aW5nXG5cbiAgY29uc3QgbWVudUl0ZW1zID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUucmVuYW1lJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZWRpdCcpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBQZW5jaWwsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RWRpdCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0KCdoaXN0b3J5Lm1lbnUuZGVsZXRlJyksXG4gICAgICBvbkNsaWNrSXRlbTogKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHNldEFjdGlvbignZGVsZXRlJylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFRyYXNoLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudURlbGV0ZSxcbiAgICB9LFxuICBdXG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybUFjdGlvbiA9IChjaGF0RGF0YTogYW55KSA9PiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2VkaXQnKSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVVcGRhdGVDaGF0KGNoYXREYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVycy5oYW5kbGVEZWxldGVDaGF0KGNoYXREYXRhKVxuICAgIH1cbiAgICBzZXRBY3Rpb24obnVsbClcbiAgICBvbkNsb3NlTW9kYWwoKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNDTEhDV3JhcHBlckNvbnRlbnRcbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIG9uQ2xpY2soY2hhdClcbiAgICAgICAgfX1cbiAgICAgICAga2V5PXtgY29udmVyc2F0aW9uLSR7Y2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1gfVxuICAgICAgICBpc01vZGFsT3Blbj17aXNNb2RhbE9wZW59XG4gICAgICAgIGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICA+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXI+XG4gICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgICAge2lzR2VuZXJhdGluZyB8fCBpc1VucmVhZCA/IChcbiAgICAgICAgICAgICAgPFNlc3Npb25HZW5lcmF0aW5nRG90XG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtpc0dlbmVyYXRpbmcgPyB0KCdjb252ZXJzYXRpb25zLmdlbmVyYXRpbmcnKSA6IHQoJ2NvbnZlcnNhdGlvbnMudW5yZWFkTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzR2VuZXJhdGluZyAmJiBzZXNzaW9uTWV0YT8uaXNXcml0aW5nfVxuICAgICAgICAgICAgICAgIGFuaW1hdGVkPXtpc0dlbmVyYXRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGRpc3BsYXlUaXRsZSA6ICcnfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfSAkdW5yZWFkPXtpc1VucmVhZH0+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXlUaXRsZSB8fCB0KCdjb252ZXJzYXRpb25zLmVtcHR5TGFiZWwnKX1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L1NDTEhDV3JhcHBlclRpdGxlUm93PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17c2hvd1Rvb2x0aXBBZ2VudCA/IGRpc3BsYXlBZ2VudCArIChjb250ZXh0TmFtZSA/IGAgLSAke2NvbnRleHROYW1lfWAgOiAnJykgOiAnJ31cbiAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgPyAoXG4gICAgICAgICAgICAgICAgPE1BSUFJY29uIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzE0cHgnIH19PntjaGF0LmVtb2ppfTwvc3Bhbj5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnRUZXh0IHJlZj17YWdlbnRSZWZ9PlxuICAgICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgICAgICAgICAgICAgICAgID8gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShjaGF0LmFnZW50KVxuICAgICAgICAgICAgICAgICAgOiBjaGF0LmFnZW50fVxuICAgICAgICAgICAgICAgIHtjaGF0LnByb2plY3ROYW1lICYmIGAgLSAke2NoYXQucHJvamVjdE5hbWV9YH1cbiAgICAgICAgICAgICAgPC9TQ0xIQ1dyYXBwZXJBZ2VudFRleHQ+XG4gICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9TQ0xIQ1dyYXBwZXI+XG4gICAgICAgIDxTQ0xIQ1dyYXBwZXJCdXR0b25BY3Rpb25zPlxuICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgIG9uT3Blbk1vZGFsKGNoYXQuaWQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNZW51RG90cyB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICB7aXNNb2RhbE9wZW4gJiYgIWFjdGlvbiAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtbW9kYWwtY29udGFpbmVyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgdG9wOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgekluZGV4OiAxMDAwLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2JhKDIyNCwgMjI0LCAyMjQsIDEpJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzEyNHB4JyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge21lbnVJdGVtcy5tYXAoKHsgbGFiZWwsIG9uQ2xpY2tJdGVtLCBJY29uLCBldmVudEtleSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9wdGlvbkl0ZW1cbiAgICAgICAgICAgICAgICAgIGtleT17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNsaWNrSXRlbShjaGF0LmlkKX1cbiAgICAgICAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICAgICAgICBldmVudEtleT17ZXZlbnRLZXl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICA8L1NDTEhDV3JhcHBlckNvbnRlbnQ+XG4gICAgICB7ISFhY3Rpb24gJiZcbiAgICAgICAgYWN0aW9uc1thY3Rpb25dKHtcbiAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNsb3NlTW9kYWwoKVxuICAgICAgICAgICAgc2V0QWN0aW9uKG51bGwpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjaGF0LFxuICAgICAgICAgIGhhbmRsZXJzOiB7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uLFxuICAgICAgICAgICAgaGFuZGxlU2V0SXNPcGVuTW9kYWw6IG9uQ2xvc2VNb2RhbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KX1cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgU2lkZWJhciA9ICh7XG4gIG9uR29Ub0NoYXQsXG4gIG9uRXJyb3IgPSAoKSA9PiBudWxsLFxuICBoYW5kbGVHb1RvSG9tZSxcbiAgaGFuZGxlU3RhcnROZXdDaGF0LFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIGhhbmRsZU9wZW5Ta2lsbHMsXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yLFxuICBzaG93TmV3Q2hhdCxcbiAgcmVmZXRjaENoYXRzLFxuICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMsXG4gIGhhc0Vycm9yLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxuICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uID0gZmFsc2UsXG4gIGluaXRpYWxPcGVuID0gZmFsc2UsXG4gIG9uT3BlbkNoYW5nZSxcbn06IHtcbiAgb25Hb1RvQ2hhdDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgaGFuZGxlR29Ub0hvbWU6ICgpID0+IHZvaWRcbiAgLyoqIEluaWNpYSB1biBjaGF0IG51ZXZvOyBlbiBNaXMgYWdlbnRlcyAvIE1haWFrZXIgLyBNaXMgc2tpbGxzIHVzYSBlbCBwcmltZXIgYWdlbnRlIGRlIGxhIGxpc3RhLiAqL1xuICBoYW5kbGVTdGFydE5ld0NoYXQ/OiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuU2tpbGxzOiAoKSA9PiB2b2lkXG4gIC8qKiBBYnJlIGVsIGNyZWFkb3IgTWFpYWtlciAobWlzbWEgbMOzZ2ljYSBxdWUgZWwgaHViIGRlbCBtb2RhbCkuICovXG4gIG9uT3Blbk1haWFrZXJDcmVhdG9yPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciwgTWlzIGFnZW50ZXMgbyBNaXMgc2tpbGxzICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbFxuICAvKiogQ29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3kgKGFnZW50X3R5cGUgY2xvbmUgKyBlbnRpdHkgcHJvamVjdC9jbGllbnQvdGFzayk6IG9jdWx0YSBcIm51ZXZvIGNoYXRcIi4gKi9cbiAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj86IGJvb2xlYW5cbiAgLyoqIEVzdGFkbyBpbmljaWFsIGRlbCBzaWRlYmFyIChyZXN0YXVyYWNpw7NuIGRlIHNlc2nDs24gdHJhcyBuYXZlZ2FjacOzbikuICovXG4gIGluaXRpYWxPcGVuPzogYm9vbGVhblxuICBvbk9wZW5DaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxufSkgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShpbml0aWFsT3BlbilcbiAgY29uc3QgW2lzT3Blbk1vZGFsLCBzZXRJc09wZW5Nb2RhbF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBhY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmFjdGl2ZUNoYXRJZClcbiAgY29uc3QgY2hhdHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBjaGF0c0NvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBzZXRVbnJlYWRDb3VudCxcbiAgICBzZXRDaGF0UmVhZFN0YXRlLFxuICB9ID0gdXNlQ2hhdHMoe1xuICAgIG9uRXJyb3IsXG4gIH0pXG5cbiAgY29uc3QgdW5yZWFkU3Vic2NyaWJlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdXNlcj8uaWQgfHwgdHlwZW9mICRfc2MgPT09ICd1bmRlZmluZWQnIHx8ICEkX3NjKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBjaGFubmVsID0gYHNlc3Npb25zLnVucmVhZDoke3VzZXIuaWR9YFxuICAgIGNvbnN0IGhhbmRsZVVucmVhZEV2ZW50ID0gKHtcbiAgICAgIG1vZGVsX2RhdGE6IG1vZGVsRGF0YSxcbiAgICB9OiB7XG4gICAgICBtb2RlbF9kYXRhPzogeyB1bnJlYWRfY291bnQ/OiBudW1iZXI7IHNlc3Npb25faWQ/OiBzdHJpbmc7IGlzX3JlYWQ/OiBib29sZWFuIH1cbiAgICB9KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG1vZGVsRGF0YT8udW5yZWFkX2NvdW50ID09PSAnbnVtYmVyJykge1xuICAgICAgICBzZXRVbnJlYWRDb3VudChtb2RlbERhdGEudW5yZWFkX2NvdW50KVxuICAgICAgfVxuICAgICAgaWYgKG1vZGVsRGF0YT8uc2Vzc2lvbl9pZCAmJiB0eXBlb2YgbW9kZWxEYXRhPy5pc19yZWFkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgc2V0Q2hhdFJlYWRTdGF0ZShtb2RlbERhdGEuc2Vzc2lvbl9pZCwgbW9kZWxEYXRhLmlzX3JlYWQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zYy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIGhhbmRsZVVucmVhZEV2ZW50KVxuXG4gICAgaWYgKCF1bnJlYWRTdWJzY3JpYmVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICRfc2MudXBkYXRlQ29ubmVjdGlvbk1vZGVsKFxuICAgICAgICB7XG4gICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICBhY3Rpb246ICRfc2MuYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICB9LFxuICAgICAgICBjaGFubmVsLFxuICAgICAgICB1c2VyLFxuICAgICAgICB1c2VyLFxuICAgICAgICAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMXG4gICAgICApXG4gICAgICB1bnJlYWRTdWJzY3JpYmVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbdXNlciwgc2V0VW5yZWFkQ291bnQsIHNldENoYXRSZWFkU3RhdGVdKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhblZpZXdBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgY2FuVmlld1NraWxscyA9IGNhbkFjY2Vzc1RvU2tpbGxzKHVzZXIpICYmIGlzU2tpbGxzUGlsb3RDb21wYW55KHVzZXI/LmNvbXBhbnlfaWQpXG4gIGNvbnN0IHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPSAhIWNhbkNyZWF0ZUFnZW50cyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgYWdlbnROYXZCdXR0b25Db3VudCA9ICgoc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IDEgOiAwKSArXG4gICAgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkgK1xuICAgIChjYW5WaWV3U2tpbGxzID8gMSA6IDApKSBhcyAwIHwgMSB8IDIgfCAzXG4gIGNvbnN0IHNob3dBZ2VudHNOYXZCbG9jayA9IHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gfHwgY2FuVmlld0FnZW50cyB8fCBjYW5WaWV3U2tpbGxzXG4gIGNvbnN0IG15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNhblZpZXdBZ2VudHMgfHwgbXlBZ2VudHNTaWRlYmFyVHJhY2tlZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIG15QWdlbnRzU2lkZWJhclRyYWNrZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhU2lkZWJhck15QWdlbnRzKVxuICB9LCBbY2FuVmlld0FnZW50c10pXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQ2hhdCA9IGFzeW5jIChjaGF0OiBhbnkpID0+IHtcbiAgICBkZWxldGVDaGF0KGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVVcGRhdGVDaGF0ID0gKGNoYXQ6IGFueSkgPT4ge1xuICAgIHVwZGF0ZUNoYXQoY2hhdClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsICYmIGlzT3Blbk1vZGFsICE9PSBjaGF0SWQpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKGNoYXRJZClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbk1vZGFsICYmICEoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJ1tkYXRhLW1vZGFsLWNvbnRhaW5lcl0nKSkge1xuICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbaXNPcGVuTW9kYWxdKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZVNpZGViYXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2lkZWJhciwgeyBhY3Rpb246IGlzT3BlbiA/ICdjbG9zZScgOiAnb3BlbicgfSlcbiAgICBzZXRJc09wZW4ocHJldiA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gIXByZXZcbiAgICAgIG9uT3BlbkNoYW5nZT8uKG5leHQpXG4gICAgICByZXR1cm4gbmV4dFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKG9uT3Blbk1haWFrZXJDcmVhdG9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBvbk9wZW5NYWlha2VyQ3JlYXRvcigpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgb25FcnJvcigpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgIGNvbnN0IG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGFnZW50SXRlbTogeyB0eXBlPzogc3RyaW5nOyBlbnRpdHk/OiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfSkgPT5cbiAgICAgICAgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnRJdGVtKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIC8vIGhhbmRsZUdvVG9Ib21lIHB1ZWRlIHJlc2VsZWNjaW9uYXIgYWdlbnRzLmRhdGFbMF0gc2kgZWwgYWdlbnRlIGdsb2JhbCBhdW4gZXN0YSBlbiBudWxsXG4gICAgICAvLyAoY2xvc3VyZSBzdGFsZSBkZSBsYSBzZWNjaW9uIFwiTWlzIGFnZW50ZXNcIiksIHBvciBlc28gc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KSB2YSBkZXNwdWVzLlxuICAgICAgaGFuZGxlR29Ub0hvbWUoKVxuICAgICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICAvLyBSZWZldGNoIHNvbGljaXRhZG8gcG9yIHByb3A6IHNlIGVqZWN1dGEgYXVucXVlIGVsIHNpZGViYXIgZXN0w6kgY29sYXBzYWRvLlxuICAgIGlmIChyZWZldGNoQ2hhdHMpIHtcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMoZmFsc2UpXG4gICAgfVxuICB9LCBbcmVmZXRjaENoYXRzLCBoYW5kbGVTZXRSZWZldGNoQ2hhdHMsIGZldGNoQ2hhdHMsIGxpbWl0LCBvZmZzZXRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50IHx8ICFoYXNNb3JlQ2hhdHMgfHwgaXNMb2FkaW5nTW9yZUNoYXRzIHx8IGhhc0Vycm9yKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGlzQXRCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gMTBcblxuICAgICAgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgbG9hZE1vcmVDaGF0cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtoYXNNb3JlQ2hhdHMsIGlzTG9hZGluZ01vcmVDaGF0cywgbG9hZE1vcmVDaGF0cywgaGFzRXJyb3JdKVxuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck5ld0NoYXQpXG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBpZiAoaGFuZGxlU3RhcnROZXdDaGF0KSB7XG4gICAgICBoYW5kbGVTdGFydE5ld0NoYXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQWwgY3JlYXIvYWN0dWFsaXphciB1bmEgY29udmVyc2FjacOzbiByZWZyZXNjYW1vcyBsYSBsaXN0YSBhdW5xdWUgZWwgc2lkZWJhciBlc3TDqSBjb2xhcHNhZG8uXG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBjaGF0c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdDogMjAsIG9mZnNldDogMCwgYmFja2dyb3VuZDogdHJ1ZSB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgfVxuICB9LCBbZmV0Y2hDaGF0c10pXG5cbiAgY29uc3QgaXNBZ2VudHNIdWJTZWN0aW9uID1cbiAgICBzaG93TmV3Q2hhdCAmJiAoYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnIHx8IGFnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInIHx8IGFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJylcblxuICBjb25zdCBzaG93TmV3Q2hhdEJ1dHRvbiA9XG4gICAgaXNBZ2VudHNIdWJTZWN0aW9uIHx8XG4gICAgKCFzaG93TmV3Q2hhdCAmJlxuICAgICAgIWhhc0Vycm9yICYmXG4gICAgICAhbG9hZGluZ0NoYXRzICYmXG4gICAgICAhaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiAmJlxuICAgICAgKCh1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSB8fFxuICAgICAgICAoIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpKSlcblxuICByZXR1cm4gKFxuICAgIDxTQ1NTaWRlYmFyUm9vdCAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgPFNDU1NpZGViYXJUb29sYmFyICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXtpc09wZW4gPyB0KCdjb252ZXJzYXRpb25zLmNvbGxhcHNlJykgOiB0KCdoaXN0b3J5LnRvb2x0aXAnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICA8U0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVUb2dnbGVTaWRlYmFyfSBpc09wZW49e2lzT3Blbn0+XG4gICAgICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgICAgICA8Q2hldnJvbkRvdWJsZUxlZnQgY29sb3I9XCJyZ2JhKDEwMiwgMTAyLCAxMDIsIDEpXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEhpc3RvcnkgY29sb3I9XCJyZ2JhKDEzLCAxMywgMTMsIDEpXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgIDxTQ1NXcmFwcGVyTmV3Q2hhdEljb24gb25DbGljaz17aGFuZGxlTmV3Q2hhdH0gYXJpYS1sYWJlbD17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9PlxuICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWlzT3BlbiAmJiBzaG93QWdlbnRzTmF2QmxvY2sgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlciAvPlxuICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJBZ2VudHNOYXZJY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5teUFnZW50c05hdicpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgIDxTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvblxuICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnfVxuICAgICAgICAgICAgICAgICAgZGF0YS1hcHBjdWVzPXtBUFBDVUVTX1NFTEVDVE9SUy5tYWlhU2lkZWJhck15QWdlbnRzfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlBZ2VudHMpXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSgpXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7Y2FuVmlld1NraWxscyA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubXlTa2lsbHNOYXYnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15U2tpbGxzKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNraWxsc05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICAgICB7c2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5DcmVhdGVBZ2VudCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhU3RvcmVJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFwcGN1ZXM9e0FQUENVRVNfU0VMRUNUT1JTLm1haWFTaWRlYmFyTXlBZ2VudHN9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3U2tpbGxzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTXlTa2lsbHMpXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3Pnt0KCdob21lTWVudS5tYWlha2VyLmJhZGdlTmV3Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3PlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz57dCgnY29udmVyc2F0aW9ucy50aXRsZScpfTwvU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nPlxuICAgICAgICAgICAgICA8L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZ1Jvdz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge2NoYXRzLm1hcCgoY2hhdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdEhpc3RvcnlDaGF0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0PXtjaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2hhdERhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17YWN0aXZlQ2hhdElkID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdNb3JlQ2hhdHMgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTaWRlYmFyQ2hhdHNTa2VsZXRvbiBjb3VudD17Mn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgICAgIDxFbXB0eUhpc3RvcnlJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0Pnt0KCdjb252ZXJzYXRpb25zLmVtcHR5Jyl9PC9TQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzU2Nyb2xsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICAgICAge2hhc0Vycm9yICYmIGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgPC9TQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPFNDU1NpZGViYXJGb290ZXJBY3Rpb25zICRpc09wZW49e2lzT3Blbn0gJGp1c3RpZnlCZXR3ZWVuPXshIXNlbGVjdGVkQWdlbnR9PlxuICAgICAgICAgIHtzZWxlY3RlZEFnZW50ID8gPEZlZWRiYWNrQnV0dG9uIHNlbGVjdGVkQWdlbnQ9e3NlbGVjdGVkQWdlbnR9IGlzT3Blbj17aXNPcGVufSAvPiA6IG51bGx9XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQzVELFNBQVNDLGlCQUFpQixRQUFRLG9EQUFvRDtBQUN0RixTQUFTQyxPQUFPLFFBQVEsMENBQTBDO0FBQ2xFLFNBQVNDLFFBQVEsUUFBUSw0Q0FBNEM7QUFDckUsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFFOUQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUFTQyxnQkFBZ0IsUUFBUSxnQ0FBZ0M7QUFDakUsU0FBU0MsaUJBQWlCLFFBQVEsMEJBQTBCO0FBQzVELFNBQVNDLFFBQVEsUUFBUSx5QkFBeUI7QUFDbEQsU0FBU0Msb0JBQW9CLFFBQVEsb0JBQW9CO0FBQ3pELFNBQVNDLFVBQVUsRUFBRUMsUUFBUSxFQUFFQyxhQUFhLEVBQUVDLGVBQWUsRUFBRUMsYUFBYSxFQUFFQyxPQUFPLFFBQVEsbUJBQW1CO0FBQ2hILFNBQVNDLE1B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aEJBLGdCQUFnQjtrQkFDaEJELGdCQUFnQixFQUFoQkE7Z0JBQ0YsQ0FBRTtnQkFDRnZDLFVBQVUsRUFBRTJHLFlBQVksS0FBS2pILElBQUksQ0FBQytCLGlCQUFrQjtnQkFDcER2QixhQUFhLEVBQUVBO2NBQWMsR0FqQnhCUixJQUFJLENBQUNtRSxFQWtCWCxDQUFDO1lBRU4sQ0FBQyxDQUFDLEVBQ0RvRSxrQkFBa0IsaUJBQ2pCdEosSUFBQSxDQUFDUCxxQkFBcUI7Y0FBQXFFLFFBQUEsZUFDcEI5RCxJQUFBLENBQUNuRSxvQkFBb0I7Z0JBQUNxVSxLQUFLLEVBQUU7Y0FBRSxDQUFFO1lBQUMsQ0FDYixDQUN4QjtVQUFBLENBQ0QsQ0FBQyxnQkFFSGhRLEtBQUEsQ0FBQ1Isb0JBQW9CO1lBQUFvRSxRQUFBLGdCQUNuQjlELElBQUEsQ0FBQ3RFLGdCQUFnQixJQUFFLENBQUMsZUFDcEJzRSxJQUFBLENBQUNMLHdCQUF3QjtjQUFBbUUsUUFBQSxFQUFFdkIsQ0FBQyxDQUFDLHFCQUFxQjtZQUFDLENBQTJCLENBQUM7VUFBQSxDQUMzRDtRQUN2QixDQUNvQixDQUFDLGVBQ3hCdkMsSUFBQSxDQUFDSixxQkFBcUI7VUFBQWtFLFFBQUEsRUFDbkJnRCxRQUFRLElBQUlnQyxLQUFLLENBQUNpSCxNQUFNLGdCQUN2QjdQLEtBQUEsQ0FBQ2IscUJBQXFCO1lBQUF5RSxRQUFBLGdCQUNwQjlELElBQUEsQ0FBQ1YsNkJBQTZCO2NBQUF3RSxRQUFBLGVBQzVCOUQsSUFBQSxDQUFDdEQsU0FBUyxJQUFFO1lBQUMsQ0FDZ0IsQ0FBQyxlQUNoQ3NELElBQUEsQ0FBQ1QsNEJBQTRCO2NBQUF1RSxRQUFBLEVBQUV2QixDQUFDLENBQUMscUJBQXFCO1lBQUMsQ0FBK0IsQ0FBQztVQUFBLENBQ2xFLENBQUMsR0FDdEI7UUFBSSxDQUNhLENBQUM7TUFBQSxDQUNMLENBQUMsR0FDcEIsSUFBSSxlQUNSdkMsSUFBQSxDQUFDSCx1QkFBdUI7UUFBQzBQLE9BQU8sRUFBRTdILE1BQU87UUFBQ3lJLGVBQWUsRUFBRSxDQUFDLENBQUM1SCxhQUFjO1FBQUF6RSxRQUFBLEVBQ3hFeUUsYUFBYSxnQkFBR3ZJLElBQUEsQ0FBQ3BELGNBQWM7VUFBQzJMLGFBQWEsRUFBRUEsYUFBYztVQUFDYixNQUFNLEVBQUVBO1FBQU8sQ0FBRSxDQUFDLEdBQUc7TUFBSSxDQUNqRSxDQUFDO0lBQUEsQ0FDWixDQUFDO0VBQUEsQ0FDSCxDQUFDO0FBRXJCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=