@projectcor/maia-components 2.49.0-beta.1 → 2.49.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 (124) hide show
  1. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.js +37 -0
  2. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -37
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +117 -0
  4. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +31 -101
  5. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +91 -0
  6. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +49 -140
  7. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +257 -0
  8. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +53 -205
  9. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +4 -0
  10. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +2 -4
  11. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.js +26 -0
  12. package/lib/components/atoms/ClientSelector/ClientSelector.js +12 -21
  13. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.js +227 -0
  14. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +15 -255
  15. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +59 -0
  16. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +12 -57
  17. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +74 -0
  18. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +184 -0
  19. package/lib/components/atoms/MAIAInput/MAIAInput.js +127 -176
  20. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +96 -0
  21. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +40 -113
  22. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.js +17 -0
  23. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +3 -15
  24. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +3 -4
  25. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +3 -11
  26. package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +6 -1
  27. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +2 -3
  28. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.js +10 -0
  29. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.js +101 -0
  30. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +21 -77
  31. package/lib/components/atoms/TextArea/TextArea.helpers.js +23 -0
  32. package/lib/components/atoms/TextArea/TextArea.js +11 -20
  33. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +37 -0
  34. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +6 -29
  35. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +68 -0
  36. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +17 -56
  37. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +133 -0
  38. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +31 -112
  39. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +17 -0
  40. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +5 -15
  41. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.js +370 -0
  42. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +197 -233
  43. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +398 -0
  44. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +209 -235
  45. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +515 -4
  46. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +228 -344
  47. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +5 -0
  48. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +3 -2
  49. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +49 -0
  50. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +36 -33
  51. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.js +39 -0
  52. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +30 -33
  53. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.js +41 -0
  54. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +9 -35
  55. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +48 -0
  56. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +9 -44
  57. package/lib/components/molecules/Sidebar/Sidebar.helpers.js +43 -0
  58. package/lib/components/molecules/Sidebar/Sidebar.js +25 -22
  59. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +512 -0
  60. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +309 -643
  61. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.js +37 -0
  62. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +13 -25
  63. package/lib/constants/formatExtensions.js +7 -8
  64. package/lib/dev/DevReasoningTimeline.js +8 -50
  65. package/lib/hooks/useAgentModel/useCreateAgent.helpers.js +144 -0
  66. package/lib/hooks/useAgentModel/useCreateAgent.js +38 -102
  67. package/lib/hooks/useChatManager/useChatManager.helpers.js +902 -0
  68. package/lib/hooks/useChatManager/useChatManager.js +267 -741
  69. package/lib/hooks/useChatMessages/useChatMessages.helpers.js +365 -0
  70. package/lib/hooks/useChatMessages/useChatMessages.js +59 -285
  71. package/lib/hooks/useClientSearch.helpers.js +36 -0
  72. package/lib/hooks/useClientSearch.js +4 -32
  73. package/lib/hooks/useContextMentions.helpers.js +212 -0
  74. package/lib/hooks/useContextMentions.js +5 -223
  75. package/lib/hooks/useContextMentions.types.js +2 -0
  76. package/lib/hooks/useContextPinPopover.helpers.js +95 -0
  77. package/lib/hooks/useContextPinPopover.js +16 -75
  78. package/lib/hooks/useEntitySearch.helpers.js +407 -0
  79. package/lib/hooks/useEntitySearch.js +52 -436
  80. package/lib/hooks/useMentionPopover.helpers.js +41 -0
  81. package/lib/hooks/useMentionPopover.js +9 -35
  82. package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +47 -0
  83. package/lib/hooks/useMinimizedPillBottomOffset.js +15 -45
  84. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.js +86 -0
  85. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -82
  86. package/lib/hooks/useProjectSearch.helpers.js +61 -0
  87. package/lib/hooks/useProjectSearch.js +4 -58
  88. package/lib/hooks/useProjectSummaryConfig.helpers.js +62 -0
  89. package/lib/hooks/useProjectSummaryConfig.js +14 -52
  90. package/lib/hooks/useReasoningTrace/reasoningStore.js +8 -39
  91. package/lib/hooks/useRecentClientsSearch.helpers.js +33 -0
  92. package/lib/hooks/useRecentClientsSearch.js +4 -32
  93. package/lib/lang/br/index.js +1 -7
  94. package/lib/lang/en/index.js +1 -7
  95. package/lib/lang/es/index.js +1 -7
  96. package/lib/lang/fr/index.js +1 -7
  97. package/lib/services/maia/Agents/getAgents.helpers.js +241 -0
  98. package/lib/services/maia/Agents/getAgents.js +90 -282
  99. package/lib/services/maia/Orchestrator/orchestrator.helpers.js +130 -0
  100. package/lib/services/maia/Orchestrator/orchestrator.js +38 -121
  101. package/lib/services/utils/mapChatMessages.helpers.js +223 -0
  102. package/lib/services/utils/mapChatMessages.js +25 -254
  103. package/lib/store/sessions/sessionNotifications.helpers.js +45 -0
  104. package/lib/store/sessions/sessionNotifications.js +35 -41
  105. package/lib/store/sessions/sessionStreamManager.helpers.js +134 -0
  106. package/lib/store/sessions/sessionStreamManager.js +172 -236
  107. package/lib/test/mockSseStream.js +121 -0
  108. package/lib/test/streamdownCodeMock.js +6 -0
  109. package/lib/test/streamdownMock.js +12 -0
  110. package/lib/types/Chat.js +1 -1
  111. package/lib/types/agentModal.js +1 -1
  112. package/lib/types/reasoning.js +1 -1
  113. package/lib/utils/imagePreprocessor.helpers.js +28 -0
  114. package/lib/utils/imagePreprocessor.js +12 -37
  115. package/lib/utils/renderContextMentions.helpers.js +110 -0
  116. package/lib/utils/renderContextMentions.js +4 -110
  117. package/lib/utils/streamActivityMessages.helpers.js +222 -0
  118. package/lib/utils/streamActivityMessages.js +4 -221
  119. package/package.json +2 -2
  120. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +0 -53
  121. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +0 -8
  122. package/lib/components/atoms/ContextCompactedNotice/index.js +0 -2
  123. package/lib/types/contextCompaction.js +0 -48
  124. package/lib/types/jest-dom.d.js +0 -2
@@ -0,0 +1,5 @@
1
+ import { validateIsMaia } from '../../../../../services/utils/validateIsMaia';
2
+ export var canEditCustomAgentInSelector = function canEditCustomAgentInSelector(agent, userPermissions, multiAgentsEnabled) {
3
+ return Boolean((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.edit) && !validateIsMaia(agent) && agent.type === 'custom' && multiAgentsEnabled);
4
+ };
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2YWxpZGF0ZUlzTWFpYSIsImNhbkVkaXRDdXN0b21BZ2VudEluU2VsZWN0b3IiLCJhZ2VudCIsInVzZXJQZXJtaXNzaW9ucyIsIm11bHRpQWdlbnRzRW5hYmxlZCIsIkJvb2xlYW4iLCJlZGl0IiwidHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuXG50eXBlIEFnZW50RWRpdFBlcm1pc3Npb25zID0ge1xuICBlZGl0PzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgY2FuRWRpdEN1c3RvbUFnZW50SW5TZWxlY3RvciA9IChcbiAgYWdlbnQ6IEFnZW50LFxuICB1c2VyUGVybWlzc2lvbnM6IEFnZW50RWRpdFBlcm1pc3Npb25zIHwgdW5kZWZpbmVkLFxuICBtdWx0aUFnZW50c0VuYWJsZWQ6IGJvb2xlYW5cbik6IGJvb2xlYW4gPT4gQm9vbGVhbih1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgIXZhbGlkYXRlSXNNYWlhKGFnZW50KSAmJiBhZ2VudC50eXBlID09PSAnY3VzdG9tJyAmJiBtdWx0aUFnZW50c0VuYWJsZWQpXG4iXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLGNBQWMsUUFBUSw4Q0FBOEM7QUFNN0UsT0FBTyxJQUFNQyw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUN2Q0MsS0FBWSxFQUNaQyxlQUFpRCxFQUNqREMsa0JBQTJCO0VBQUEsT0FDZkMsT0FBTyxDQUFDLENBQUFGLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFRyxJQUFJLEtBQUksQ0FBQ04sY0FBYyxDQUFDRSxLQUFLLENBQUMsSUFBSUEsS0FBSyxDQUFDSyxJQUFJLEtBQUssUUFBUSxJQUFJSCxrQkFBa0IsQ0FBQztBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -10,6 +10,7 @@ import { EVENTS, useEvent } from '../../../../../hooks/useEvent';
10
10
  import { validateIsMaia } from '../../../../../services/utils/validateIsMaia';
11
11
  import { useToggleFavorite } from '../../../../../hooks';
12
12
  import { MAIAIcon } from '../../../../atoms/icons';
13
+ import { canEditCustomAgentInSelector } from './ChatAiAgentOptions.helpers';
13
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
15
  export var ChatAIAgentOption = function ChatAIAgentOption(_ref) {
15
16
  var _user$permissions;
@@ -30,7 +31,7 @@ export var ChatAIAgentOption = function ChatAIAgentOption(_ref) {
30
31
  var _useToggleFavorite = useToggleFavorite(),
31
32
  toggleFavorite = _useToggleFavorite.toggleFavorite;
32
33
  var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
33
- var canEditCustomAgent = (userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.edit) && !validateIsMaia(agent) && agent.type === 'custom' && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
34
+ var canEditCustomAgent = canEditCustomAgentInSelector(agent, userPermissions, Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS));
34
35
  var handleClick = function handleClick(event) {
35
36
  event.preventDefault();
36
37
  event.stopPropagation();
@@ -124,4 +125,4 @@ export var ChatAIAgentOption = function ChatAIAgentOption(_ref) {
124
125
  })]
125
126
  }, "agent-".concat(index));
126
127
  };
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJUb29sdGlwIiwiUGVuY2lsIiwiU3RhciIsInVzZVRyYW5zbGF0aW9uIiwidXNlUmVzaXplTGlzdGVuZXIiLCJTQ0NBSUFPV3JhcHBlciIsIlNDQ0FJQU9XcmFwcGVyRWRpdCIsIlNDQ0FJTUFnZW50TmFtZSIsIlNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUiLCJ1c2VVc2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZVRvZ2dsZUZhdm9yaXRlIiwiTUFJQUljb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ2hhdEFJQWdlbnRPcHRpb24iLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJhZ2VudCIsImluZGV4IiwiaGFuZGxlU2VsZWN0QWdlbnQiLCJpc1NlbGVjdGVkIiwiaXNNYWlhIiwib25GYXZvcml0ZVRvZ2dsZSIsInNldElzRXhwYW5kZWQiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwidXNlciIsImFtcGxpdHVkRXZlbnQiLCJhZ2VudFJlZiIsIl91c2VSZXNpemVMaXN0ZW5lciIsIm5hbWUiLCJzaG93VG9vbHRpcCIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5FZGl0Q3VzdG9tQWdlbnQiLCJlZGl0IiwidHlwZSIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJoYW5kbGVDbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsImlkIiwidXBkYXRlZEFnZW50IiwiYWlDaGF0RmF2b3JpdGUiLCJvcHRpb24iLCJpc19mYXZvcml0ZSIsInVuZGVmaW5lZCIsIiRpbmRleCIsIm9uQ2xpY2siLCJjaGlsZHJlbiIsImVtb2ppIiwidGl0bGUiLCJyZWYiLCJoYXNDb3JydXB0ZWRBY2Nlc3MiLCJoYXNfY29ycnVwdGVkX2FjY2VzcyIsInN0eWxlIiwiZGlzcGxheSIsImdhcCIsImFsaWduSXRlbXMiLCJlIiwib3Blbk1vZGFsIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJhZ2VudFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJpc09wZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwiY2xhc3NOYW1lIiwiYWx3YXlzVmlzaWJsZSIsImZpbGwiLCJ2YXJpYW50IiwiY29uY2F0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2NvbXBvbmVudHMvQ2hhdEFpQWdlbnRPcHRpb25zL0NoYXRBaUFnZW50T3B0aW9ucy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCBNb3VzZUV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBQZW5jaWwgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QZW5jaWwnXG5pbXBvcnQgeyBTdGFyIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU3RhcidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB7XG4gIFNDQ0FJQU9XcmFwcGVyLFxuICBTQ0NBSUFPV3JhcHBlckVkaXQsXG4gIFNDQ0FJTUFnZW50TmFtZSxcbiAgU0NDQUlNV3JhcHBlckFnZW50TmFtZSxcbn0gZnJvbSAnLi9DaGF0QWlBZ2VudE9wdGlvbnMuc3R5bGVzJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcydcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlBZ2VudE9wdGlvbiA9ICh7XG4gIGFnZW50LFxuICBpbmRleCxcbiAgaGFuZGxlU2VsZWN0QWdlbnQsXG4gIGlzU2VsZWN0ZWQsXG4gIGlzTWFpYSxcbiAgb25GYXZvcml0ZVRvZ2dsZSxcbiAgc2V0SXNFeHBhbmRlZCxcbn06IHtcbiAgYWdlbnQ6IEFnZW50XG4gIGluZGV4OiBudW1iZXJcbiAgaGFuZGxlU2VsZWN0QWdlbnQ6IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpc01haWE/OiBib29sZWFuXG4gIG9uRmF2b3JpdGVUb2dnbGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZXRJc0V4cGFuZGVkPzogKGlzRXhwYW5kZWQ6IGJvb2xlYW4pID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2NoYXRfYWlfc2VjdGlvbiddKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFthZ2VudC5uYW1lXSlcbiAgY29uc3QgeyB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlVG9nZ2xlRmF2b3JpdGUoKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuRWRpdEN1c3RvbUFnZW50ID1cbiAgICB1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiZcbiAgICAhdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpICYmXG4gICAgYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGhhbmRsZVNlbGVjdEFnZW50KGFnZW50KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgIGFnZW50LmlkLFxuICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgaWYgKG9uRmF2b3JpdGVUb2dnbGUpIHtcbiAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgfVxuICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJQU9XcmFwcGVyIGtleT17YGFnZW50LSR7aW5kZXh9YH0gJGluZGV4PXtpbmRleH0gaXNTZWxlY3RlZD17aXNTZWxlY3RlZH0gb25DbGljaz17aGFuZGxlQ2xpY2t9IGlzTWFpYT17aXNNYWlhfT5cbiAgICAgIHthZ2VudC50eXBlID09PSAnY3VzdG9tJyAmJiA8c3Bhbj57YWdlbnQ/LmVtb2ppfTwvc3Bhbj59XG4gICAgICB7YWdlbnQudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgKFxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8TUFJQUljb24gLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICAgIDxTQ0NBSU1XcmFwcGVyQWdlbnROYW1lPlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBhZ2VudD8ubmFtZSA6ICcnfT5cbiAgICAgICAgICA8U0NDQUlNQWdlbnROYW1lIHJlZj17YWdlbnRSZWZ9IGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9IGhhc0NvcnJ1cHRlZEFjY2Vzcz17ISFhZ2VudD8uaGFzX2NvcnJ1cHRlZF9hY2Nlc3N9PlxuICAgICAgICAgICAge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlNQWdlbnROYW1lPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICc0cHgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICB7Y2FuRWRpdEN1c3RvbUFnZW50ICYmIChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdhZ2VudHMuZWRpdCcpfT5cbiAgICAgICAgICAgICAgPFNDQ0FJQU9XcmFwcGVyRWRpdFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICBzZXRJc0V4cGFuZGVkPy4oZmFsc2UpXG4gICAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5vcGVuTW9kYWwsIHsgb3B0aW9uOiAnZWRpdF9hZ2VudCcgfSlcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga25vd2xlZGdlOiBhZ2VudD8ua25vd2xlZGdlIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFnZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWdlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuY2lsIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCIjYTZhNmE2XCIgY2xhc3NOYW1lPVwicGVuY2lsLWljb25cIiAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJQU9XcmFwcGVyRWRpdD5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHshdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpICYmIChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthZ2VudD8uaXNfZmF2b3JpdGUgPyB0KCdhZ2VudHMucmVtb3ZlRmF2b3JpdGUnKSA6IHQoJ2FnZW50cy5hZGRGYXZvcml0ZScpfT5cbiAgICAgICAgICAgICAgPFNDQ0FJQU9XcmFwcGVyRWRpdCBhbHdheXNWaXNpYmxlPXthZ2VudD8uaXNfZmF2b3JpdGV9IG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUZhdm9yaXRlfT5cbiAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgd2lkdGg9ezIwfVxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsyMH1cbiAgICAgICAgICAgICAgICAgIGNvbG9yPXthZ2VudD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnI2E2YTZhNid9XG4gICAgICAgICAgICAgICAgICBmaWxsPXthZ2VudD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnbm9uZSd9XG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwic29saWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXthZ2VudD8uaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NDQUlBT1dyYXBwZXJFZGl0PlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyQWdlbnROYW1lPlxuICAgIDwvU0NDQUlBT1dyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFBTSxRQUFvQixPQUFPO0FBQzFDLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUNFQyxjQUFjLEVBQ2RDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxzQkFBc0IsUUFDakIsNkJBQTZCO0FBQ3BDLFNBQVNDLE9BQU8sUUFBUSxpQ0FBaUM7QUFDekQsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsK0JBQStCO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSw4Q0FBOEM7QUFDN0UsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLFFBQVEsUUFBUSx5QkFBeUI7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBO0FBRWxELE9BQU8sSUFBTUMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBQUMsSUFBQSxFQWdCeEI7RUFBQSxJQUFBQyxpQkFBQTtFQUFBLElBZkpDLEtBQUssR0FBQUYsSUFBQSxDQUFMRSxLQUFLO0lBQ0xDLEtBQUssR0FBQUgsSUFBQSxDQUFMRyxLQUFLO0lBQ0xDLGlCQUFpQixHQUFBSixJQUFBLENBQWpCSSxpQkFBaUI7SUFDakJDLFVBQVUsR0FBQUwsSUFBQSxDQUFWSyxVQUFVO0lBQ1ZDLE1BQU0sR0FBQU4sSUFBQSxDQUFOTSxNQUFNO0lBQ05DLGdCQUFnQixHQUFBUCxJQUFBLENBQWhCTyxnQkFBZ0I7SUFDaEJDLGFBQWEsR0FBQVIsSUFBQSxDQUFiUSxhQUFhO0VBVWIsSUFBQUMsZUFBQSxHQUFjMUIsY0FBYyxDQUFDLENBQUMsaUJB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
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJUb29sdGlwIiwiUGVuY2lsIiwiU3RhciIsInVzZVRyYW5zbGF0aW9uIiwidXNlUmVzaXplTGlzdGVuZXIiLCJTQ0NBSUFPV3JhcHBlciIsIlNDQ0FJQU9XcmFwcGVyRWRpdCIsIlNDQ0FJTUFnZW50TmFtZSIsIlNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUiLCJ1c2VVc2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ2YWxpZGF0ZUlzTWFpYSIsInVzZVRvZ2dsZUZhdm9yaXRlIiwiTUFJQUljb24iLCJjYW5FZGl0Q3VzdG9tQWdlbnRJblNlbGVjdG9yIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNoYXRBSUFnZW50T3B0aW9uIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiYWdlbnQiLCJpbmRleCIsImhhbmRsZVNlbGVjdEFnZW50IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJzZXRJc0V4cGFuZGVkIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsInVzZXIiLCJhbXBsaXR1ZEV2ZW50IiwiYWdlbnRSZWYiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJuYW1lIiwic2hvd1Rvb2x0aXAiLCJfdXNlVG9nZ2xlRmF2b3JpdGUiLCJ0b2dnbGVGYXZvcml0ZSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuRWRpdEN1c3RvbUFnZW50IiwiQm9vbGVhbiIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJoYW5kbGVDbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsImlkIiwidXBkYXRlZEFnZW50IiwiYWlDaGF0RmF2b3JpdGUiLCJvcHRpb24iLCJpc19mYXZvcml0ZSIsInVuZGVmaW5lZCIsIiRpbmRleCIsIm9uQ2xpY2siLCJjaGlsZHJlbiIsInR5cGUiLCJlbW9qaSIsInRpdGxlIiwicmVmIiwiaGFzQ29ycnVwdGVkQWNjZXNzIiwiaGFzX2NvcnJ1cHRlZF9hY2Nlc3MiLCJzdHlsZSIsImRpc3BsYXkiLCJnYXAiLCJhbGlnbkl0ZW1zIiwiZSIsIm9wZW5Nb2RhbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJrbm93bGVkZ2UiLCJnZW5lcmFsIiwiaXNPcGVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsImNsYXNzTmFtZSIsImFsd2F5c1Zpc2libGUiLCJmaWxsIiwidmFyaWFudCIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9jb21wb25lbnRzL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgTW91c2VFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgUGVuY2lsIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvUGVuY2lsJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQge1xuICBTQ0NBSUFPV3JhcHBlcixcbiAgU0NDQUlBT1dyYXBwZXJFZGl0LFxuICBTQ0NBSU1BZ2VudE5hbWUsXG4gIFNDQ0FJTVdyYXBwZXJBZ2VudE5hbWUsXG59IGZyb20gJy4vQ2hhdEFpQWdlbnRPcHRpb25zLnN0eWxlcydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IHVzZVRvZ2dsZUZhdm9yaXRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MnXG5pbXBvcnQgeyBNQUlBSWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgY2FuRWRpdEN1c3RvbUFnZW50SW5TZWxlY3RvciB9IGZyb20gJy4vQ2hhdEFpQWdlbnRPcHRpb25zLmhlbHBlcnMnXG5cbmV4cG9ydCBjb25zdCBDaGF0QUlBZ2VudE9wdGlvbiA9ICh7XG4gIGFnZW50LFxuICBpbmRleCxcbiAgaGFuZGxlU2VsZWN0QWdlbnQsXG4gIGlzU2VsZWN0ZWQsXG4gIGlzTWFpYSxcbiAgb25GYXZvcml0ZVRvZ2dsZSxcbiAgc2V0SXNFeHBhbmRlZCxcbn06IHtcbiAgYWdlbnQ6IEFnZW50XG4gIGluZGV4OiBudW1iZXJcbiAgaGFuZGxlU2VsZWN0QWdlbnQ6IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpc01haWE/OiBib29sZWFuXG4gIG9uRmF2b3JpdGVUb2dnbGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBzZXRJc0V4cGFuZGVkPzogKGlzRXhwYW5kZWQ6IGJvb2xlYW4pID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2NoYXRfYWlfc2VjdGlvbiddKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIoYWdlbnRSZWYsIFthZ2VudC5uYW1lXSlcbiAgY29uc3QgeyB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlVG9nZ2xlRmF2b3JpdGUoKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuRWRpdEN1c3RvbUFnZW50ID0gY2FuRWRpdEN1c3RvbUFnZW50SW5TZWxlY3RvcihcbiAgICBhZ2VudCxcbiAgICB1c2VyUGVybWlzc2lvbnMsXG4gICAgQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGhhbmRsZVNlbGVjdEFnZW50KGFnZW50KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgIGFnZW50LmlkLFxuICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgaWYgKG9uRmF2b3JpdGVUb2dnbGUpIHtcbiAgICAgICAgICBvbkZhdm9yaXRlVG9nZ2xlKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgfVxuICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQ0FJQU9XcmFwcGVyIGtleT17YGFnZW50LSR7aW5kZXh9YH0gJGluZGV4PXtpbmRleH0gaXNTZWxlY3RlZD17aXNTZWxlY3RlZH0gb25DbGljaz17aGFuZGxlQ2xpY2t9IGlzTWFpYT17aXNNYWlhfT5cbiAgICAgIHthZ2VudC50eXBlID09PSAnY3VzdG9tJyAmJiA8c3Bhbj57YWdlbnQ/LmVtb2ppfTwvc3Bhbj59XG4gICAgICB7YWdlbnQudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgKFxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8TUFJQUljb24gLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICAgIDxTQ0NBSU1XcmFwcGVyQWdlbnROYW1lPlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBhZ2VudD8ubmFtZSA6ICcnfT5cbiAgICAgICAgICA8U0NDQUlNQWdlbnROYW1lIHJlZj17YWdlbnRSZWZ9IGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9IGhhc0NvcnJ1cHRlZEFjY2Vzcz17ISFhZ2VudD8uaGFzX2NvcnJ1cHRlZF9hY2Nlc3N9PlxuICAgICAgICAgICAge2FnZW50Py5uYW1lfVxuICAgICAgICAgIDwvU0NDQUlNQWdlbnROYW1lPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICc0cHgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICB7Y2FuRWRpdEN1c3RvbUFnZW50ICYmIChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdhZ2VudHMuZWRpdCcpfT5cbiAgICAgICAgICAgICAgPFNDQ0FJQU9XcmFwcGVyRWRpdFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICBzZXRJc0V4cGFuZGVkPy4oZmFsc2UpXG4gICAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5vcGVuTW9kYWwsIHsgb3B0aW9uOiAnZWRpdF9hZ2VudCcgfSlcbiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga25vd2xlZGdlOiBhZ2VudD8ua25vd2xlZGdlIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFnZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWdlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGVuY2lsIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCIjYTZhNmE2XCIgY2xhc3NOYW1lPVwicGVuY2lsLWljb25cIiAvPlxuICAgICAgICAgICAgICA8L1NDQ0FJQU9XcmFwcGVyRWRpdD5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHshdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpICYmIChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthZ2VudD8uaXNfZmF2b3JpdGUgPyB0KCdhZ2VudHMucmVtb3ZlRmF2b3JpdGUnKSA6IHQoJ2FnZW50cy5hZGRGYXZvcml0ZScpfT5cbiAgICAgICAgICAgICAgPFNDQ0FJQU9XcmFwcGVyRWRpdCBhbHdheXNWaXNpYmxlPXthZ2VudD8uaXNfZmF2b3JpdGV9IG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUZhdm9yaXRlfT5cbiAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgd2lkdGg9ezIwfVxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsyMH1cbiAgICAgICAgICAgICAgICAgIGNvbG9yPXthZ2VudD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnI2E2YTZhNid9XG4gICAgICAgICAgICAgICAgICBmaWxsPXthZ2VudD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnbm9uZSd9XG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwic29saWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXthZ2VudD8uaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NDQUlBT1dyYXBwZXJFZGl0PlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyQWdlbnROYW1lPlxuICAgIDwvU0NDQUlBT1dyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFBTSxRQUFvQixPQUFPO0FBQzFDLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUNFQyxjQUFjLEVBQ2RDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxzQkFBc0IsUUFDakIsNkJBQTZCO0FBQ3BDLFNBQVNDLE9BQU8sUUFBUSxpQ0FBaUM7QUFDekQsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsK0JBQStCO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSw4Q0FBOEM7QUFDN0UsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLFFBQVEsUUFBUSx5QkFBeUI7QUFDbEQsU0FBU0MsNEJBQTRCLFFBQVEsOEJBQThCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUUzRSxPQUFPLElBQU1DLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUFDLElBQUEsRUFnQnhCO0VBQUEsSUFBQUMsaUJBQUE7RUFBQSxJQWZKQyxLQUFLLEdBQUFGLElBQUEsQ0FBTEUsS0FBSztJQUNMQyxLQUFLLEdBQUFILElBQUEsQ0FBTEcsS0FBSztJQUNMQyxpQkFBaUIsR0FBQUosSUFBQSxDQUFqQkksaUJBQWlCO0lBQ2pCQyxVQUFVLEdBQUFMLElBQUEsQ0FBVkssVUFBVTtJQUNWQyxNQUFNLEdBQUFOLElBQUEsQ0FBTk0s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
@@ -0,0 +1,49 @@
1
+ export var isMaiaOrchestratorAgent = function isMaiaOrchestratorAgent(agent) {
2
+ return agent.type === 'orchestrator';
3
+ };
4
+ export var filterAgentsForSelector = function filterAgentsForSelector(agents) {
5
+ return agents.filter(function (agent) {
6
+ return agent.type === 'orchestrator' || agent.entity !== 'global';
7
+ });
8
+ };
9
+ export var isDeletedOrBlockedAgent = function isDeletedOrBlockedAgent(agent) {
10
+ return Boolean(agent.is_deleted || agent.has_not_permissions || agent.has_not_access || agent.is_from_conversation || agent.is_legacy_context);
11
+ };
12
+ export var resolveLocalSelectedAgent = function resolveLocalSelectedAgent(agents, selectedAgent) {
13
+ var _ref;
14
+ if (!selectedAgent) return null;
15
+ if (isDeletedOrBlockedAgent(selectedAgent)) return selectedAgent;
16
+ var fromList = agents.find(function (agent) {
17
+ return !isDeletedOrBlockedAgent(agent) && agent.id === selectedAgent.id;
18
+ });
19
+ return (_ref = fromList !== null && fromList !== void 0 ? fromList : selectedAgent) !== null && _ref !== void 0 ? _ref : null;
20
+ };
21
+ export var resolveHeaderSelectorLabel = function resolveHeaderSelectorLabel(localAgent, isMyAgentsSection, isMySkillsSection, myAgentsTitle, mySkillsTitle) {
22
+ if (localAgent !== null && localAgent !== void 0 && localAgent.name) return localAgent.name;
23
+ if (isMyAgentsSection) return myAgentsTitle;
24
+ if (isMySkillsSection) return mySkillsTitle;
25
+ return '';
26
+ };
27
+ export var canShowHeaderCreateAgentButton = function canShowHeaderCreateAgentButton(canCreatePermission, multiAgentsAccess, isMyAgentsSection, isMaiakerSection) {
28
+ return Boolean(canCreatePermission && multiAgentsAccess && (isMyAgentsSection || isMaiakerSection));
29
+ };
30
+ export var agentSelectionNeedsEntity = function agentSelectionNeedsEntity(agent) {
31
+ return agent.type === 'clone' && (agent.entity === 'project' || agent.entity === 'client');
32
+ };
33
+ export var shouldRenderHeaderAgentSelector = function shouldRenderHeaderAgentSelector(params) {
34
+ return !params.hasError && !params.loading && !params.hideAgentSelector && (!!params.selectedAgent || params.isMyAgentsSection || params.isMySkillsSection) && (params.multiAgentsAccess || params.legacyMaiaAccess);
35
+ };
36
+ export var shouldLoadMoreAgentsOnScroll = function shouldLoadMoreAgentsOnScroll(distanceFromBottom) {
37
+ var thresholdPx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
38
+ return distanceFromBottom < thresholdPx;
39
+ };
40
+ export var shouldRenderAgentDropdownItem = function shouldRenderAgentDropdownItem(params) {
41
+ if (params.agent.is_deleted || params.agent.has_not_permissions || params.agent.has_not_access || params.agent.type === 'clone' || isMaiaOrchestratorAgent(params.agent) || params.agent.type === 'custom' && !params.multiAgentsAccess) {
42
+ return false;
43
+ }
44
+ return true;
45
+ };
46
+ export var shouldShowDropdownAddAgentFooter = function shouldShowDropdownAddAgentFooter(params) {
47
+ return Boolean(params.canCreate && params.multiAgentsAccess && !params.isMyAgentsSection && !params.isMySkillsSection && !params.isMaiakerSection);
48
+ };
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc01haWFPcmNoZXN0cmF0b3JBZ2VudCIsImFnZW50IiwidHlwZSIsImZpbHRlckFnZW50c0ZvclNlbGVjdG9yIiwiYWdlbnRzIiwiZmlsdGVyIiwiZW50aXR5IiwiaXNEZWxldGVkT3JCbG9ja2VkQWdlbnQiLCJCb29sZWFuIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsImlzX2Zyb21fY29udmVyc2F0aW9uIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJyZXNvbHZlTG9jYWxTZWxlY3RlZEFnZW50Iiwic2VsZWN0ZWRBZ2VudCIsIl9yZWYiLCJmcm9tTGlzdCIsImZpbmQiLCJpZCIsInJlc29sdmVIZWFkZXJTZWxlY3RvckxhYmVsIiwibG9jYWxBZ2VudCIsImlzTXlBZ2VudHNTZWN0aW9uIiwiaXNNeVNraWxsc1NlY3Rpb24iLCJteUFnZW50c1RpdGxlIiwibXlTa2lsbHNUaXRsZSIsIm5hbWUiLCJjYW5TaG93SGVhZGVyQ3JlYXRlQWdlbnRCdXR0b24iLCJjYW5DcmVhdGVQZXJtaXNzaW9uIiwibXVsdGlBZ2VudHNBY2Nlc3MiLCJpc01haWFrZXJTZWN0aW9uIiwiYWdlbnRTZWxlY3Rpb25OZWVkc0VudGl0eSIsInNob3VsZFJlbmRlckhlYWRlckFnZW50U2VsZWN0b3IiLCJwYXJhbXMiLCJoYXNFcnJvciIsImxvYWRpbmciLCJoaWRlQWdlbnRTZWxlY3RvciIsImxlZ2FjeU1haWFBY2Nlc3MiLCJzaG91bGRMb2FkTW9yZUFnZW50c09uU2Nyb2xsIiwiZGlzdGFuY2VGcm9tQm90dG9tIiwidGhyZXNob2xkUHgiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzaG91bGRSZW5kZXJBZ2VudERyb3Bkb3duSXRlbSIsInNob3VsZFNob3dEcm9wZG93bkFkZEFnZW50Rm9vdGVyIiwiY2FuQ3JlYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXIuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5cbmV4cG9ydCBjb25zdCBpc01haWFPcmNoZXN0cmF0b3JBZ2VudCA9IChhZ2VudDogQWdlbnQpOiBib29sZWFuID0+IGFnZW50LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJBZ2VudHNGb3JTZWxlY3RvciA9IChhZ2VudHM6IEFnZW50W10pOiBBZ2VudFtdID0+XG4gIGFnZW50cy5maWx0ZXIoYWdlbnQgPT4gYWdlbnQudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgYWdlbnQuZW50aXR5ICE9PSAnZ2xvYmFsJylcblxuZXhwb3J0IGNvbnN0IGlzRGVsZXRlZE9yQmxvY2tlZEFnZW50ID0gKGFnZW50OiBBZ2VudCk6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbihcbiAgICBhZ2VudC5pc19kZWxldGVkIHx8XG4gICAgYWdlbnQuaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgIGFnZW50Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgYWdlbnQuaXNfZnJvbV9jb252ZXJzYXRpb24gfHxcbiAgICBhZ2VudC5pc19sZWdhY3lfY29udGV4dFxuICApXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlTG9jYWxTZWxlY3RlZEFnZW50ID0gKGFnZW50czogQWdlbnRbXSwgc2VsZWN0ZWRBZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogQWdlbnQgfCBudWxsID0+IHtcbiAgaWYgKCFzZWxlY3RlZEFnZW50KSByZXR1cm4gbnVsbFxuICBpZiAoaXNEZWxldGVkT3JCbG9ja2VkQWdlbnQoc2VsZWN0ZWRBZ2VudCkpIHJldHVybiBzZWxlY3RlZEFnZW50XG5cbiAgY29uc3QgZnJvbUxpc3QgPSBhZ2VudHMuZmluZChhZ2VudCA9PiAhaXNEZWxldGVkT3JCbG9ja2VkQWdlbnQoYWdlbnQpICYmIGFnZW50LmlkID09PSBzZWxlY3RlZEFnZW50LmlkKVxuICByZXR1cm4gZnJvbUxpc3QgPz8gc2VsZWN0ZWRBZ2VudCA/PyBudWxsXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlSGVhZGVyU2VsZWN0b3JMYWJlbCA9IChcbiAgbG9jYWxBZ2VudDogQWdlbnQgfCBudWxsLFxuICBpc015QWdlbnRzU2VjdGlvbjogYm9vbGVhbixcbiAgaXNNeVNraWxsc1NlY3Rpb246IGJvb2xlYW4sXG4gIG15QWdlbnRzVGl0bGU6IHN0cmluZyxcbiAgbXlTa2lsbHNUaXRsZTogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAobG9jYWxBZ2VudD8ubmFtZSkgcmV0dXJuIGxvY2FsQWdlbnQubmFtZVxuICBpZiAoaXNNeUFnZW50c1NlY3Rpb24pIHJldHVybiBteUFnZW50c1RpdGxlXG4gIGlmIChpc015U2tpbGxzU2VjdGlvbikgcmV0dXJuIG15U2tpbGxzVGl0bGVcbiAgcmV0dXJuICcnXG59XG5cbmV4cG9ydCBjb25zdCBjYW5TaG93SGVhZGVyQ3JlYXRlQWdlbnRCdXR0b24gPSAoXG4gIGNhbkNyZWF0ZVBlcm1pc3Npb246IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIG11bHRpQWdlbnRzQWNjZXNzOiBib29sZWFuLFxuICBpc015QWdlbnRzU2VjdGlvbjogYm9vbGVhbixcbiAgaXNNYWlha2VyU2VjdGlvbjogYm9vbGVhblxuKTogYm9vbGVhbiA9PiBCb29sZWFuKGNhbkNyZWF0ZVBlcm1pc3Npb24gJiYgbXVsdGlBZ2VudHNBY2Nlc3MgJiYgKGlzTXlBZ2VudHNTZWN0aW9uIHx8IGlzTWFpYWtlclNlY3Rpb24pKVxuXG5leHBvcnQgY29uc3QgYWdlbnRTZWxlY3Rpb25OZWVkc0VudGl0eSA9IChhZ2VudDogQWdlbnQpOiBib29sZWFuID0+XG4gIGFnZW50LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50LmVudGl0eSA9PT0gJ2NsaWVudCcpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRSZW5kZXJIZWFkZXJBZ2VudFNlbGVjdG9yID0gKHBhcmFtczoge1xuICBoYXNFcnJvcjogYm9vbGVhblxuICBsb2FkaW5nOiBib29sZWFuXG4gIGhpZGVBZ2VudFNlbGVjdG9yOiBib29sZWFuXG4gIHNlbGVjdGVkQWdlbnQ6IEFnZW50IHwgbnVsbCB8IHVuZGVmaW5lZFxuICBpc015QWdlbnRzU2VjdGlvbjogYm9vbGVhblxuICBpc015U2tpbGxzU2VjdGlvbjogYm9vbGVhblxuICBtdWx0aUFnZW50c0FjY2VzczogYm9vbGVhblxuICBsZWdhY3lNYWlhQWNjZXNzOiBib29sZWFuXG59KTogYm9vbGVhbiA9PlxuICAhcGFyYW1zLmhhc0Vycm9yICYmXG4gICFwYXJhbXMubG9hZGluZyAmJlxuICAhcGFyYW1zLmhpZGVBZ2VudFNlbGVjdG9yICYmXG4gICghIXBhcmFtcy5zZWxlY3RlZEFnZW50IHx8IHBhcmFtcy5pc015QWdlbnRzU2VjdGlvbiB8fCBwYXJhbXMuaXNNeVNraWxsc1NlY3Rpb24pICYmXG4gIChwYXJhbXMubXVsdGlBZ2VudHNBY2Nlc3MgfHwgcGFyYW1zLmxlZ2FjeU1haWFBY2Nlc3MpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRMb2FkTW9yZUFnZW50c09uU2Nyb2xsID0gKGRpc3RhbmNlRnJvbUJvdHRvbTogbnVtYmVyLCB0aHJlc2hvbGRQeCA9IDUwKTogYm9vbGVhbiA9PlxuICBkaXN0YW5jZUZyb21Cb3R0b20gPCB0aHJlc2hvbGRQeFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmVuZGVyQWdlbnREcm9wZG93bkl0ZW0gPSAocGFyYW1zOiB7IGFnZW50OiBBZ2VudDsgbXVsdGlBZ2VudHNBY2Nlc3M6IGJvb2xlYW4gfSk6IGJvb2xlYW4gPT4ge1xuICBpZiAoXG4gICAgcGFyYW1zLmFnZW50LmlzX2RlbGV0ZWQgfHxcbiAgICBwYXJhbXMuYWdlbnQuaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgIHBhcmFtcy5hZ2VudC5oYXNfbm90X2FjY2VzcyB8fFxuICAgIHBhcmFtcy5hZ2VudC50eXBlID09PSAnY2xvbmUnIHx8XG4gICAgaXNNYWlhT3JjaGVzdHJhdG9yQWdlbnQocGFyYW1zLmFnZW50KSB8fFxuICAgIChwYXJhbXMuYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgJiYgIXBhcmFtcy5tdWx0aUFnZW50c0FjY2VzcylcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dEcm9wZG93bkFkZEFnZW50Rm9vdGVyID0gKHBhcmFtczoge1xuICBjYW5DcmVhdGU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgbXVsdGlBZ2VudHNBY2Nlc3M6IGJvb2xlYW5cbiAgaXNNeUFnZW50c1NlY3Rpb246IGJvb2xlYW5cbiAgaXNNeVNraWxsc1NlY3Rpb246IGJvb2xlYW5cbiAgaXNNYWlha2VyU2VjdGlvbjogYm9vbGVhblxufSk6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbihcbiAgICBwYXJhbXMuY2FuQ3JlYXRlICYmXG4gICAgcGFyYW1zLm11bHRpQWdlbnRzQWNjZXNzICYmXG4gICAgIXBhcmFtcy5pc015QWdlbnRzU2VjdGlvbiAmJlxuICAgICFwYXJhbXMuaXNNeVNraWxsc1NlY3Rpb24gJiZcbiAgICAhcGFyYW1zLmlzTWFpYWtlclNlY3Rpb25cbiAgKVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLElBQU1BLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUlDLEtBQVk7RUFBQSxPQUFjQSxLQUFLLENBQUNDLElBQUksS0FBSyxjQUFjO0FBQUE7QUFFL0YsT0FBTyxJQUFNQyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJQyxNQUFlO0VBQUEsT0FDckRBLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLFVBQUFKLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNDLElBQUksS0FBSyxjQUFjLElB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
@@ -26,9 +26,10 @@ import { useUser } from '../../../../../context/cor-user';
26
26
  import { isMaiaCloneAgentsRoleBlocked } from '../../../../../constants/maiaTaskPanelAccess';
27
27
  import { Loader } from '../../../../atoms/Loader';
28
28
  import { useMaiaTaskPanelZIndex } from '../../../../../hooks/useMaiaTaskPanelZIndex';
29
+ import { canShowHeaderCreateAgentButton, filterAgentsForSelector, isMaiaOrchestratorAgent, resolveHeaderSelectorLabel, resolveLocalSelectedAgent, agentSelectionNeedsEntity, shouldRenderHeaderAgentSelector, shouldLoadMoreAgentsOnScroll, shouldRenderAgentDropdownItem, shouldShowDropdownAddAgentFooter } from './ChatAiModalHeader.helpers';
29
30
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
30
31
  export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
31
- var _user$permissions, _localAgents$name;
32
+ var _user$permissions;
32
33
  var layoutMode = _ref.layoutMode,
33
34
  onLayoutModeChange = _ref.onLayoutModeChange,
34
35
  _ref$draggable = _ref.draggable,
@@ -95,17 +96,11 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
95
96
  var _useResizeListener = useResizeListener(textRefAgent, [selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.name]),
96
97
  showTooltipAgent = _useResizeListener.showTooltip;
97
98
  var agentsRef = useRef(null);
98
- var isMaiaAgent = useCallback(function (agentItem) {
99
- return agentItem.type === 'orchestrator';
100
- }, []);
101
99
  var agentsForSelector = useMemo(function () {
102
- return agents.filter(function (agentItem) {
103
- return isMaiaAgent(agentItem) || agentItem.entity !== 'global';
104
- });
105
- }, [agents, isMaiaAgent]);
100
+ return filterAgentsForSelector(agents);
101
+ }, [agents]);
106
102
  var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
107
- var canCreateAgent = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
108
- var showHeaderCreateAgentButton = canCreateAgent && (isMyAgentsSection || isMaiakerSection);
103
+ var showHeaderCreateAgentButton = canShowHeaderCreateAgentButton(userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.create, Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS), isMyAgentsSection, isMaiakerSection);
109
104
  var handleOpenCreateAgentModal = useCallback(function () {
110
105
  amplitudEvent(EVENTS.openModal, {
111
106
  option: 'create_agent'
@@ -137,9 +132,7 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
137
132
  scrollHeight = _agentsRef$current.scrollHeight,
138
133
  clientHeight = _agentsRef$current.clientHeight;
139
134
  var distanceFromBottom = scrollHeight - scrollTop - clientHeight;
140
-
141
- // Cargar más (50px antes)
142
- if (distanceFromBottom < 50) {
135
+ if (shouldLoadMoreAgentsOnScroll(distanceFromBottom)) {
143
136
  loadMoreAgents();
144
137
  }
145
138
  };
@@ -160,26 +153,17 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
160
153
  };
161
154
  }, [isExpanded, loadMoreAgents, hasMore, loadingMore]);
162
155
  var localAgents = useMemo(function () {
163
- var _ref2;
164
- if (selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_from_conversation || selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_legacy_context) {
165
- return selectedAgent;
166
- }
167
- var fromList = agents.find(function (agent) {
168
- return !agent.is_deleted && !agent.has_not_permissions && !agent.has_not_access && agent.id === (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id);
169
- });
170
- // Agente hidratado por GET (p. ej. nuevo chat tras create_agent) puede no estar aún en la lista paginada
171
- return (_ref2 = fromList !== null && fromList !== void 0 ? fromList : selectedAgent) !== null && _ref2 !== void 0 ? _ref2 : null;
156
+ return resolveLocalSelectedAgent(agents, selectedAgent);
172
157
  }, [agents, selectedAgent]);
173
158
 
174
159
  // En 'Mis agentes' / 'Skills' sin agente seteado, el selector muestra el icono de MAIA y el nombre de la sección
175
160
  // en lugar del agente, para que el usuario pueda abrir el dropdown y elegir uno.
176
161
  var selectorIcon = (localAgents === null || localAgents === void 0 ? void 0 : localAgents.type) === 'custom' && !(localAgents !== null && localAgents !== void 0 && localAgents.is_legacy_context) ? localAgents === null || localAgents === void 0 ? void 0 : localAgents.emoji : /*#__PURE__*/_jsx(MAIAIcon, {});
177
- var sectionSelectorLabel = isMyAgentsSection ? t('marketplace.myAgentsTitle', {
162
+ var selectorLabel = resolveHeaderSelectorLabel(localAgents, isMyAgentsSection, isMySkillsSection, t('marketplace.myAgentsTitle', {
178
163
  ns: SECTIONS.chatAI
179
- }) : isMySkillsSection ? t('conversations.mySkillsNav', {
164
+ }), t('conversations.mySkillsNav', {
180
165
  ns: SECTIONS.chatAI
181
- }) : '';
182
- var selectorLabel = (_localAgents$name = localAgents === null || localAgents === void 0 ? void 0 : localAgents.name) !== null && _localAgents$name !== void 0 ? _localAgents$name : sectionSelectorLabel;
166
+ }));
183
167
  var handleSelectAgent = useCallback(function (agent) {
184
168
  selectAgent(agent);
185
169
  amplitudEvent(EVENTS.aiChatAgentSelect, {
@@ -194,8 +178,7 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
194
178
  // Si el agente no depende de una entity (custom o clone+global) ya podemos
195
179
  // resolver si existe una sesión previa y, en ese caso, navegar a ella.
196
180
  // Para clone+project|client, la resolución ocurre en los selectors de entity.
197
- var needsEntity = (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' && ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'project' || (agent === null || agent === void 0 ? void 0 : agent.entity) === 'client');
198
- if (!needsEntity) {
181
+ if (!agentSelectionNeedsEntity(agent)) {
199
182
  onAgentSelected === null || onAgentSelected === void 0 || onAgentSelected(agent);
200
183
  }
201
184
  }, 100);
@@ -284,7 +267,7 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
284
267
  children: /*#__PURE__*/_jsxs(SCCAIMHWrapperModalContent, {
285
268
  children: [window.MAIA_CHAT_AI_FEATURE_ACCESS && !cloneAgentsRoleBlocked && /*#__PURE__*/_jsx(_Fragment, {
286
269
  children: function () {
287
- var maiaAgents = agentsForSelector.filter(isMaiaAgent);
270
+ var maiaAgents = agentsForSelector.filter(isMaiaOrchestratorAgent);
288
271
  if (!maiaAgents.length) return null;
289
272
  return /*#__PURE__*/_jsx(_Fragment, {
290
273
  children: maiaAgents.map(function (maiaAgent, index) {
@@ -310,7 +293,12 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
310
293
  agentsCount: agentsForSelector.length,
311
294
  ref: agentsRef,
312
295
  children: [agentsForSelector === null || agentsForSelector === void 0 ? void 0 : agentsForSelector.map(function (agent, index) {
313
- if (agent !== null && agent !== void 0 && agent.is_deleted || agent !== null && agent !== void 0 && agent.has_not_permissions || agent !== null && agent !== void 0 && agent.has_not_access || (agent === null || agent === void 0 ? void 0 : agent.type) === 'clone' || isMaiaAgent(agent) || (agent === null || agent === void 0 ? void 0 : agent.type) === 'custom' && !window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) return null;
296
+ if (!shouldRenderAgentDropdownItem({
297
+ agent: agent,
298
+ multiAgentsAccess: Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS)
299
+ })) {
300
+ return null;
301
+ }
314
302
  return /*#__PURE__*/_jsx(ChatAIAgentOption, {
315
303
  agent: agent,
316
304
  index: index,
@@ -324,7 +312,13 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
324
312
  size: "small"
325
313
  })
326
314
  })]
327
- }), (userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.create) && window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS && !isMyAgentsSection && !isMySkillsSection && !isMaiakerSection && /*#__PURE__*/_jsxs(SCCAIMHAddAgent, {
315
+ }), shouldShowDropdownAddAgentFooter({
316
+ canCreate: userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.create,
317
+ multiAgentsAccess: Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS),
318
+ isMyAgentsSection: isMyAgentsSection,
319
+ isMySkillsSection: isMySkillsSection,
320
+ isMaiakerSection: isMaiakerSection
321
+ }) && /*#__PURE__*/_jsxs(SCCAIMHAddAgent, {
328
322
  onClick: function onClick() {
329
323
  setIsExpanded(false);
330
324
  amplitudEvent(EVENTS.openModal, {
@@ -353,7 +347,16 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
353
347
  })]
354
348
  });
355
349
  };
356
- var shouldRenderSelector = !hasError && !loading && !hideAgentSelector && (!!selectedAgent || isMyAgentsSection || isMySkillsSection) && (!!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || !!window.MAIA_CHAT_AI_FEATURE_ACCESS);
350
+ var shouldRenderSelector = shouldRenderHeaderAgentSelector({
351
+ hasError: hasError,
352
+ loading: loading,
353
+ hideAgentSelector: hideAgentSelector,
354
+ selectedAgent: selectedAgent,
355
+ isMyAgentsSection: isMyAgentsSection,
356
+ isMySkillsSection: isMySkillsSection,
357
+ multiAgentsAccess: Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS),
358
+ legacyMaiaAccess: Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS)
359
+ });
357
360
  return /*#__PURE__*/_jsxs(SCCAIMHModal, {
358
361
  $hasError: hasError,
359
362
  $loading: loading,
@@ -450,4 +453,4 @@ export var ChatAIModalHeader = function ChatAIModalHeader(_ref) {
450
453
  })]
451
454
  });
452
455
  };
453
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJTdGF0dXMiLCJDaGV2cm9uRG93biIsIkNoZXZyb25MZWZ0IiwiUGx1cyIsInVzZVRyYW5zbGF0aW9uIiwiU0VDVElPTlMiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlUmVzaXplTGlzdGVuZXIiLCJJY29uQnV0dG9uIiwiTUFJQUljb24iLCJNYWlhQ2hhdExheW91dE1lbnVJY29uIiwiTWFpYUNoYXRMYXlvdXRTaWRlYmFySWNvbiIsIk1haWFDaGF0TGF5b3V0RnVsbHNjcmVlbkljb24iLCJNYWlhQ2hhdExheW91dEZsb2F0aW5nSWNvbiIsIkNoYXRBSUFnZW50T3B0aW9uIiwiU0NDQUlNSE1vZGFsIiwiU0NDQUlNSFNlbGVjdGVkQWdlbnQiLCJTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQiLCJTQ0NBSU1IV3JhcHBlciIsIlNDQ0FJTUhXcmFwcGVyQnV0dG9uIiwiU0NDQUlNSFdyYXBwZXJJY29uIiwiU0NDQUlNSFdyYXBwZXJNb2RhbCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50IiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSIsIlNDQ0FJTUhBZGRBZ2VudCIsIlNDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvbiIsIlNDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvblRleHQiLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSExvYWRlcldyYXBwZXIiLCJTQ0NBSU1IUGx1c0ljb25XcmFwcGVyIiwiU0NDQUlNSExheW91dE1lbnVBbmNob3IiLCJTQ0NBSU1ITGF5b3V0TWVudVBhbmVsIiwiU0NDQUlNSExheW91dE1lbnVSb3ciLCJTQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24iLCJTQ0NBSU1IQmFja0J1dHRvbiIsIlNDQ0FJTUhNaW5pbWl6ZUljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVVzZXIiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwiTG9hZGVyIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX2xvY2FsQWdlbnRzJG5hbWUiLCJsYXlvdXRNb2RlIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiX3JlZiRkcmFnZ2FibGUiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYW5kbGVNaW5pbWl6ZSIsIl9yZWYkYWdlbnRzIiwiYWdlbnRzIiwiX3JlZiRoYXNFcnJvciIsImhhc0Vycm9yIiwiX3JlZiRsb2FkaW5nIiwibG9hZGluZyIsIl9yZWYkbG9hZGluZ01vcmUiLCJsb2FkaW5nTW9yZSIsIl9yZWYkaGFzTW9yZSIsImhhc01vcmUiLCJoYW5kbGVSZXNldENoYXQiLCJvbkFnZW50VXBkYXRlIiwibG9hZE1vcmVBZ2VudHMiLCJzb3J0QWdlbnRzTGlzdCIsIl9yZWYkaXNNeUFnZW50c1NlY3RpbyIsImlzTXlBZ2VudHNTZWN0aW9uIiwiX3JlZiRpc015U2tpbGxzU2VjdGlvIiwiaXNNeVNraWxsc1NlY3Rpb24iLCJfcmVmJGlzTWFpYWtlclNlY3Rpb24iLCJpc01haWFrZXJTZWN0aW9uIiwiX3JlZiRoaWRlQWdlbnRTZWxlY3RvIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkFnZW50U2VsZWN0ZWQiLCJfcmVmJHNob3dCYWNrQnV0dG9uIiwic2hvd0JhY2tCdXR0b24iLCJfcmVmJG9uQmFjayIsIm9uQmFjayIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiY2hhdEFJIiwidCIsInVzZXIiLCJhbXBsaXR1ZEV2ZW50IiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RlZEFnZW50IiwiYWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwic2VjdGlvbiIsInRvb2x0aXBaSW5kZXgiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsInRleHRSZWZBZ2VudCIsImRyb3Bkb3duUmVmIiwibGF5b3V0TWVudVJlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibGF5b3V0TWVudU9wZW4iLCJzZXRMYXlvdXRNZW51T3BlbiIsIl91c2VSZXNpemVMaXN0ZW5lciIsIm5hbWUiLCJzaG93VG9vbHRpcEFnZW50Iiwic2hvd1Rvb2x0aXAiLCJhZ2VudHNSZWYiLCJpc01haWFBZ2VudCIsImFnZW50SXRlbSIsInR5cGUiLCJhZ2VudHNGb3JTZWxlY3RvciIsImZpbHRlciIsImVudGl0eSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuQ3JlYXRlQWdlbnQiLCJjcmVhdGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwic2hvd0hlYWRlckNyZWF0ZUFnZW50QnV0dG9uIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50TW9kYWwiLCJvcGVuTW9kYWwiLCJvcHRpb24iLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImFnZW50VmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaXNPcGVuIiwidW5kZWZpbmVkIiwiaGFuZGxlU2Nyb2xsIiwiY3VycmVudCIsIl9hZ2VudHNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJzY3JvbGxFbGVtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJsb2NhbEFnZW50cyIsIl9yZWYyIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsImlzX2Zyb21fY29udmVyc2F0aW9uIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJmcm9tTGlzdCIsImZpbmQiLCJpZCIsInNlbGVjdG9ySWNvbiIsImVtb2ppIiwic2VjdGlvblNlbGVjdG9yTGFiZWwiLCJucyIsInNlbGVjdG9yTGFiZWwiLCJoYW5kbGVTZWxlY3RBZ2VudCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWdlbnRfdHlwZSIsIm5lZWRzRW50aXR5IiwiaGFuZGxlRXhwYW5kTW9kYWwiLCJhaUNoYXRPcGVuQWdlbnRTZWxlY3QiLCJwcmV2IiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImhhbmRsZVBpY2tMYXlvdXQiLCJtb2RlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsImV4cGFuZGVkIiwiYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMiLCJjbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwicmVuZGVyTW9kYWwiLCJyZWYiLCJvbkNsaWNrIiwibGVuZ3RoIiwiY2hpbGRyZW4iLCJfb2JqZWN0U3ByZWFkIiwidGl0bGUiLCJzdHlsZSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiZ2FwIiwicGxhY2VtZW50IiwiekluZGV4IiwiaXNBZ2VudERlbGV0ZWQiLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwibWFpYUFnZW50cyIsIm1hcCIsIm1haWFBZ2VudCIsImluZGV4IiwiaXNTZWxlY3RlZCIsImlzTWFpYSIsIm9uRmF2b3JpdGVUb2dnbGUiLCJjb25jYXQiLCJzb21lIiwiY29tcGFueSIsImFnZW50c0NvdW50Iiwic2l6ZSIsInNob3VsZFJlbmRlclNlbGVjdG9yIiwiJGhhc0Vycm9yIiwiJGxvYWRpbmciLCIkaGFzQWdlbnRzIiwib25Qb2ludGVyRG93biIsIm9uUG9pbnRlck1vdmUiLCJvblBvaW50ZXJVcCIsIm9uUG9pbnRlckNhbmNlbCIsIm9uTG9zdFBvaW50ZXJDYXB0dXJlIiwiY3Vyc29yIiwidG91Y2hBY3Rpb24iLCJidXR0b25JZCIsImhhbmRsZUNsaWNrIiwiYWlDaGF0T3BlblZpZXdPcHRpb25zIiwidG9vbHRpcCIsImRpc2FibGVUb29sdGlwIiwicm9sZSIsIiRhY3RpdmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU3RhdHVzJ1xuaW1wb3J0IHsgQ2hldnJvbkRvd24gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG93bidcbmltcG9ydCB7IENoZXZyb25MZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkxlZnQnXG5pbXBvcnQgeyBQbHVzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvUGx1cydcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlUmVzaXplTGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ob29rcy91c2VSZXNpemUnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvSWNvbkJ1dHRvbidcbmltcG9ydCB7IE1BSUFJY29uLCBNYWlhQ2hhdExheW91dE1lbnVJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBNYWlhQ2hhdExheW91dFNpZGViYXJJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMvTWFpYUNoYXRMYXlvdXRTaWRlYmFySWNvbidcbmltcG9ydCB7IE1haWFDaGF0TGF5b3V0RnVsbHNjcmVlbkljb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9pY29ucy9NYWlhQ2hhdExheW91dEZ1bGxzY3JlZW5JY29uJ1xuaW1wb3J0IHsgTWFpYUNoYXRMYXlvdXRGbG9hdGluZ0ljb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9pY29ucy9NYWlhQ2hhdExheW91dEZsb2F0aW5nSWNvbidcbmltcG9ydCB7IENoYXRBSUFnZW50T3B0aW9uIH0gZnJvbSAnLi4vQ2hhdEFpQWdlbnRPcHRpb25zL0NoYXRBaUFnZW50T3B0aW9ucydcbmltcG9ydCB7XG4gIFNDQ0FJTUhNb2RhbCxcbiAgU0NDQUlNSFNlbGVjdGVkQWdlbnQsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dCxcbiAgU0NDQUlNSFdyYXBwZXIsXG4gIFNDQ0FJTUhXcmFwcGVyQnV0dG9uLFxuICBTQ0NBSU1IV3JhcHBlckljb24sXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWwsXG4gIFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50LFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudFRpdGxlLFxuICBTQ0NBSU1IQWRkQWdlbnQsXG4gIFNDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvbixcbiAgU0NDQUlNSENyZWF0ZUFnZW50QnV0dG9uVGV4dCxcbiAgU0NDQUlNSERpdmlkZXIsXG4gIFNDQ0FJTUhBZ2VudHNMaXN0LFxuICBTQ0NBSU1ITG9hZGVyV3JhcHBlcixcbiAgU0NDQUlNSFBsdXNJY29uV3JhcHBlcixcbiAgU0NDQUlNSExheW91dE1lbnVBbmNob3IsXG4gIFNDQ0FJTUhMYXlvdXRNZW51UGFuZWwsXG4gIFNDQ0FJTUhMYXlvdXRNZW51Um93LFxuICBTQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24sXG4gIFNDQ0FJTUhCYWNrQnV0dG9uLFxuICBTQ0NBSU1ITWluaW1pemVJY29uLFxufSBmcm9tICcuL0NoYXRBaU1vZGFsSGVhZGVyLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuLi8uLi9sYXlvdXQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGlzTWFpYUNsb25lQWdlbnRzUm9sZUJsb2NrZWQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb25zdGFudHMvbWFpYVRhc2tQYW5lbEFjY2VzcydcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsSGVhZGVyID0gKHtcbiAgbGF5b3V0TW9kZSxcbiAgb25MYXlvdXRNb2RlQ2hhbmdlLFxuICBkcmFnZ2FibGUgPSBmYWxzZSxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ01vdmUsXG4gIG9uRHJhZ0VuZCxcbiAgaGFuZGxlTWluaW1pemUsXG4gIGFnZW50cyA9IFtdLFxuICBoYXNFcnJvciA9IGZhbHNlLFxuICBsb2FkaW5nID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlID0gZmFsc2UsXG4gIGhhc01vcmUgPSBmYWxzZSxcbiAgaGFuZGxlUmVzZXRDaGF0LFxuICBvbkFnZW50VXBkYXRlLFxuICBsb2FkTW9yZUFnZW50cyxcbiAgc29ydEFnZW50c0xpc3QsXG4gIGlzTXlBZ2VudHNTZWN0aW9uID0gZmFsc2UsXG4gIGlzTXlTa2lsbHNTZWN0aW9uID0gZmFsc2UsXG4gIGlzTWFpYWtlclNlY3Rpb24gPSBmYWxzZSxcbiAgaGlkZUFnZW50U2VsZWN0b3IgPSBmYWxzZSxcbiAgb25BZ2VudFNlbGVjdGVkLFxuICBzaG93QmFja0J1dHRvbiA9IGZhbHNlLFxuICBvbkJhY2sgPSAoKSA9PiBudWxsLFxufToge1xuICBsYXlvdXRNb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZVxuICBvbkxheW91dE1vZGVDaGFuZ2U6IChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4gdm9pZFxuICBleHBhbmRlZDogYm9vbGVhblxuICBkcmFnZ2FibGU/OiBib29sZWFuXG4gIG9uRHJhZ1N0YXJ0PzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25EcmFnTW92ZT86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRHJhZ0VuZD86IChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIGhhbmRsZU1pbmltaXplPzogKCkgPT4gdm9pZFxuICBhZ2VudHM6IEFnZW50W11cbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgbG9hZGluZzogYm9vbGVhblxuICBsb2FkaW5nTW9yZT86IGJvb2xlYW5cbiAgaGFzTW9yZT86IGJvb2xlYW5cbiAgaGFuZGxlUmVzZXRDaGF0OiAoKSA9PiB2b2lkXG4gIG9uQWdlbnRVcGRhdGU/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBsb2FkTW9yZUFnZW50cz86ICgpID0+IHZvaWRcbiAgc29ydEFnZW50c0xpc3Q/OiAoKSA9PiB2b2lkXG4gIC8qKiBTZWNjacOzbiBcIk1pcyBhZ2VudGVzXCI6IHNpIG5vIGhheSBhZ2VudGUgc2V0ZWFkbywgZWwgc2VsZWN0b3IgbXVlc3RyYSBlbCBpY29ubyBkZSBNQUlBIHkgZWwgbm9tYnJlIGRlIGxhIHNlY2Npw7NuICovXG4gIGlzTXlBZ2VudHNTZWN0aW9uPzogYm9vbGVhblxuICAvKiogU2VjY2nDs24gXCJTa2lsbHNcIjogbWlzbW8gY29tcG9ydGFtaWVudG8gZGUgc2VsZWN0b3IgcXVlIE1pcyBhZ2VudGVzLCBjb24gZWwgbm9tYnJlIGRlIGxhIHNlY2Npw7NuICovXG4gIGlzTXlTa2lsbHNTZWN0aW9uPzogYm9vbGVhblxuICAvKiogT2N1bHRhIGVsIGNoaXAgZGUgbW9kZWxvIExMTSAocC4gZWouIGVuIE1pcyBhZ2VudGVzIC8gTWlzIHNraWxscykgKi9cbiAgaGlkZUFnZW50U2VsZWN0b3I/OiBib29sZWFuXG4gIC8qKiBTZWNjacOzbiBcIkNyZWFkb3IgZGUgYWdlbnRlc1wiIChNYWlha2VyKTogaGFiaWxpdGEgZWwgYm90w7NuIFwiQ3JlYXIgYWdlbnRlXCIgZGVsIGhlYWRlciAqL1xuICBpc01haWFrZXJTZWN0aW9uPzogYm9vbGVhblxuICAvKipcbiAgICogU2UgaW52b2NhIGRlc3B1w6lzIGRlbCByZXNldCBjdWFuZG8gZWwgYWdlbnRlIHNlbGVjY2lvbmFkbyBOTyByZXF1aWVyZSBzZWxlY2Npw7NuXG4gICAqIGRlIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKS4gUGVybWl0ZSByZXNvbHZlciBgR0VUIC92Mi9zZXNzaW9ucy9hZ2VudC97aWR9YFxuICAgKiB5IG5hdmVnYXIgYSB1bmEgY29udmVyc2FjacOzbiBleGlzdGVudGUgc2kgbGEgaGF5LlxuICAgKi9cbiAgb25BZ2VudFNlbGVjdGVkPzogKGFnZW50OiBBZ2VudCkgPT4gdm9pZCB8IFByb21pc2U8dW5rbm93bj5cbiAgc2hvd0JhY2tCdXR0b24/OiBib29sZWFuXG4gIG9uQmFjaz86ICgpID0+IHZvaWRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnQsIFNFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIC8vIEVuIHNlY3Rpb24gJ3Rhc2snIGVsIG1vZGFsIGRlIE1haWEgc2UgZWxldmEgcG9yIGVuY2ltYSBkZWwgdGFzayBwYW5lbCAoei1pbmRleCA5ODAwMDAxKS5cbiAgLy8gTG9zIHRvb2x0aXBzIHNlIG1vbnRhbiBlbiBwb3J0YWwgY29uIHotaW5kZXggMTUwMCBwb3IgZGVmZWN0bywgYXPDrSBxdWUgcXVlZGFyw61hbiBkZXRyw6FzLlxuICAvLyBTdWJpbW9zIHN1IHotaW5kZXggc8OzbG8gZW4gZXN0ZSBjYXNvIHBhcmEgcXVlIHNlIHZlYW4gcG9yIGVuY2ltYSBkZWwgbW9kYWwuXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRleHRSZWZBZ2VudCA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGRyb3Bkb3duUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBsYXlvdXRNZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbbGF5b3V0TWVudU9wZW4sIHNldExheW91dE1lbnVPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcih0ZXh0UmVmQWdlbnQsIFtzZWxlY3RlZEFnZW50Py5uYW1lXSlcbiAgY29uc3QgYWdlbnRzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IGlzTWFpYUFnZW50ID0gdXNlQ2FsbGJhY2soKGFnZW50SXRlbTogQWdlbnQpID0+IGFnZW50SXRlbS50eXBlID09PSAnb3JjaGVzdHJhdG9yJywgW10pXG4gIGNvbnN0IGFnZW50c0ZvclNlbGVjdG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBhZ2VudHMuZmlsdGVyKGFnZW50SXRlbSA9PiBpc01haWFBZ2VudChhZ2VudEl0ZW0pIHx8IGFnZW50SXRlbS5lbnRpdHkgIT09ICdnbG9iYWwnKSxcbiAgICBbYWdlbnRzLCBpc01haWFBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnQgPSAhIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3Qgc2hvd0hlYWRlckNyZWF0ZUFnZW50QnV0dG9uID0gY2FuQ3JlYXRlQWdlbnQgJiYgKGlzTXlBZ2VudHNTZWN0aW9uIHx8IGlzTWFpYWtlclNlY3Rpb24pXG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50TW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gIH0sIFthbXBsaXR1ZEV2ZW50XSlcblxuICAvLyBNYW5lamFyIHNjcm9sbCBpbmZpbml0byBwYXJhIGNhcmdhciBtw6FzIGFnZW50c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNvbG8gY3VhbmRvIGVsIGRyb3Bkb3duIGVzdMOpIGFiaWVydG9cbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWFnZW50c1JlZi5jdXJyZW50IHx8ICFsb2FkTW9yZUFnZW50cyB8fCAhaGFzTW9yZSB8fCBsb2FkaW5nTW9yZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG5cbiAgICAgIC8vIENhcmdhciBtw6FzICg1MHB4IGFudGVzKVxuICAgICAgaWYgKGRpc3RhbmNlRnJvbUJvdHRvbSA8IDUwKSB7XG4gICAgICAgIGxvYWRNb3JlQWdlbnRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBET00gZXN0w6kgcmVuZGVyaXphZG9cbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSBhZ2VudHNSZWYuY3VycmVudFxuICAgICAgaWYgKHNjcm9sbEVsZW1lbnQpIHtcbiAgICAgICAgc2Nyb2xsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfSwgMTAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxvYWRNb3JlQWdlbnRzLCBoYXNNb3JlLCBsb2FkaW5nTW9yZV0pXG5cbiAgY29uc3QgbG9jYWxBZ2VudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICBzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgc2VsZWN0ZWRBZ2VudD8uaXNfZnJvbV9jb252ZXJzYXRpb24gfHxcbiAgICAgIHNlbGVjdGVkQWdlbnQ/LmlzX2xlZ2FjeV9jb250ZXh0XG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRBZ2VudFxuICAgIH1cbiAgICBjb25zdCBmcm9tTGlzdCA9IGFnZW50cy5maW5kKFxuICAgICAgYWdlbnQgPT5cbiAgICAgICAgIWFnZW50LmlzX2RlbGV0ZWQgJiYgIWFnZW50Lmhhc19ub3RfcGVybWlzc2lvbnMgJiYgIWFnZW50Lmhhc19ub3RfYWNjZXNzICYmIGFnZW50LmlkID09PSBzZWxlY3RlZEFnZW50Py5pZFxuICAgIClcbiAgICAvLyBBZ2VudGUgaGlkcmF0YWRvIHBvciBHRVQgKHAuIGVqLiBudWV2byBjaGF0IHRyYXMgY3JlYXRlX2FnZW50KSBwdWVkZSBubyBlc3RhciBhw7puIGVuIGxhIGxpc3RhIHBhZ2luYWRhXG4gICAgcmV0dXJuIGZyb21MaXN0ID8/IHNlbGVjdGVkQWdlbnQgPz8gbnVsbFxuICB9LCBbYWdlbnRzLCBzZWxlY3RlZEFnZW50XSlcblxuICAvLyBFbiAnTWlzIGFnZW50ZXMnIC8gJ1NraWxscycgc2luIGFnZW50ZSBzZXRlYWRvLCBlbCBzZWxlY3RvciBtdWVzdHJhIGVsIGljb25vIGRlIE1BSUEgeSBlbCBub21icmUgZGUgbGEgc2VjY2nDs25cbiAgLy8gZW4gbHVnYXIgZGVsIGFnZW50ZSwgcGFyYSBxdWUgZWwgdXN1YXJpbyBwdWVkYSBhYnJpciBlbCBkcm9wZG93biB5IGVsZWdpciB1bm8uXG4gIGNvbnN0IHNlbGVjdG9ySWNvbiA9XG4gICAgbG9jYWxBZ2VudHM/LnR5cGUgPT09ICdjdXN0b20nICYmICFsb2NhbEFnZW50cz8uaXNfbGVnYWN5X2NvbnRleHQgPyBsb2NhbEFnZW50cz8uZW1vamkgOiA8TUFJQUljb24gLz5cbiAgY29uc3Qgc2VjdGlvblNlbGVjdG9yTGFiZWwgPSBpc015QWdlbnRzU2VjdGlvblxuICAgID8gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNUaXRsZScsIHsgbnM6IFNFQ1RJT05TLmNoYXRBSSB9KVxuICAgIDogaXNNeVNraWxsc1NlY3Rpb25cbiAgICAgID8gdCgnY29udmVyc2F0aW9ucy5teVNraWxsc05hdicsIHsgbnM6IFNFQ1RJT05TLmNoYXRBSSB9KVxuICAgICAgOiAnJ1xuICBjb25zdCBzZWxlY3RvckxhYmVsID0gbG9jYWxBZ2VudHM/Lm5hbWUgPz8gc2VjdGlvblNlbGVjdG9yTGFiZWxcblxuICBjb25zdCBoYW5kbGVTZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudDogQWdlbnQpID0+IHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGRlcGVuZGUgZGUgdW5hIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKSB5YSBwb2RlbW9zXG4gICAgICAgIC8vIHJlc29sdmVyIHNpIGV4aXN0ZSB1bmEgc2VzacOzbiBwcmV2aWEgeSwgZW4gZXNlIGNhc28sIG5hdmVnYXIgYSBlbGxhLlxuICAgICAgICAvLyBQYXJhIGNsb25lK3Byb2plY3R8Y2xpZW50LCBsYSByZXNvbHVjacOzbiBvY3VycmUgZW4gbG9zIHNlbGVjdG9ycyBkZSBlbnRpdHkuXG4gICAgICAgIGNvbnN0IG5lZWRzRW50aXR5ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICAgICAgaWYgKCFuZWVkc0VudGl0eSkge1xuICAgICAgICAgIG9uQWdlbnRTZWxlY3RlZD8uKGFnZW50KVxuICAgICAgICB9XG4gICAgICB9LCAxMDApXG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIGFtcGxpdHVkRXZlbnQsIGhhbmRsZVJlc2V0Q2hhdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBvbkFnZW50U2VsZWN0ZWRdXG4gIClcblxuICBjb25zdCBoYW5kbGVFeHBhbmRNb2RhbCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5BZ2VudFNlbGVjdClcbiAgICAgIC8vIEN1YW5kbyBzZSBhYnJlIGVsIHNlbGVjdG9yLCBvcmRlbmFyIGxvcyBhZ2VudGVzXG4gICAgICBpZiAoc29ydEFnZW50c0xpc3QpIHtcbiAgICAgICAgc29ydEFnZW50c0xpc3QoKVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRJc0V4cGFuZGVkKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCAmJiAhbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBOb2RlXG4gICAgICBpZiAoaXNFeHBhbmRlZCAmJiBkcm9wZG93blJlZi5jdXJyZW50ICYmICFkcm9wZG93blJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChsYXlvdXRNZW51T3BlbiAmJiBsYXlvdXRNZW51UmVmLmN1cnJlbnQgJiYgIWxheW91dE1lbnVSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzRXhwYW5kZWQsIGxheW91dE1lbnVPcGVuXSlcblxuICBjb25zdCBoYW5kbGVQaWNrTGF5b3V0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5wcm9qZWN0UmVzdW1lRXhwYW5kLCB7XG4gICAgICAgIGV4cGFuZGVkOiBtb2RlID09PSAnZnVsbHNjcmVlbicsXG4gICAgICB9KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMsIHsgb3B0aW9uOiBtb2RlIH0pXG4gICAgICBvbkxheW91dE1vZGVDaGFuZ2UobW9kZSlcbiAgICAgIHNldExheW91dE1lbnVPcGVuKGZhbHNlKVxuICAgIH0sXG4gICAgW2FtcGxpdHVkRXZlbnQsIG9uTGF5b3V0TW9kZUNoYW5nZV1cbiAgKVxuXG4gIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG5cbiAgY29uc3QgcmVuZGVyTW9kYWwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ0NBSU1IV3JhcHBlclxuICAgICAgICByZWY9e2Ryb3Bkb3duUmVmfVxuICAgICAgICBkYXRhLW5vLWRyYWc9XCJ0cnVlXCJcbiAgICAgICAgb25DbGljaz17YWdlbnRzLmxlbmd0aCA/IGhhbmRsZUV4cGFuZE1vZGFsIDogdW5kZWZpbmVkfVxuICAgICAgICBpZD1cImNoYXQtYWktbW9kYWwtaGVhZGVyLXdyYXBwZXJcIlxuICAgICAgPlxuICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgc2hvd1Rvb2x0aXBBZ2VudCA/IChcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy50eXBlID09PSAnY3VzdG9tJyAmJiAhbG9jYWxBZ2VudHM/LmlzX2xlZ2FjeV9jb250ZXh0ID8gKFxuICAgICAgICAgICAgICAgICAgICBsb2NhbEFnZW50cz8uZW1vamlcbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxNQUlBSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgKX17JyAnfVxuICAgICAgICAgICAgICAgICAge2xvY2FsQWdlbnRzPy5uYW1lfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGFjZW1lbnQ9e2lzRXhwYW5kZWQgPyAnbGVmdCcgOiAndG9wJ31cbiAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U0NDQUlNSFNlbGVjdGVkQWdlbnRUZXh0XG4gICAgICAgICAgICAgIHJlZj17dGV4dFJlZkFnZW50fVxuICAgICAgICAgICAgICBpc0FnZW50RGVsZXRlZD17XG4gICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkIHx8XG4gICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8XG4gICAgICAgICAgICAgICAgISFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcyB8fFxuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfbGVnYWN5X2NvbnRleHRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgICAgIHtzZWxlY3Rvckljb259IHtzZWxlY3RvckxhYmVsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvU0NDQUlNSFNlbGVjdGVkQWdlbnQ+XG4gICAgICAgIDxTQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgICAgPENoZXZyb25Eb3duIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gY29sb3I9XCIjMjAyMDFGXCIgLz5cbiAgICAgICAgPC9TQ0NBSU1IV3JhcHBlckljb24+XG4gICAgICAgIHtpc0V4cGFuZGVkICYmIChcbiAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgICAgIDxTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAge3dpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIWNsb25lQWdlbnRzUm9sZUJsb2NrZWQgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFpYUFnZW50cyA9IGFnZW50c0ZvclNlbGVjdG9yLmZpbHRlcihpc01haWFBZ2VudClcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYWlhQWdlbnRzLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAge21haWFBZ2VudHMubWFwKChtYWlhQWdlbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YGFnZW50LSR7bWFpYUFnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e21haWFBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0QWdlbnQ9e2hhbmRsZVNlbGVjdEFnZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkQWdlbnQ/LmlkID09PSBtYWlhQWdlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYWlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GYXZvcml0ZVRvZ2dsZT17b25BZ2VudFVwZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3Iuc29tZShhZ2VudCA9PiBhZ2VudC50eXBlID09PSAnY3VzdG9tJykgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICB7dCgnYWdlbnRzJyl9IGJ5IHt1c2VyLmNvbXBhbnl9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8U0NDQUlNSEFnZW50c0xpc3QgaGFzTW9yZT17aGFzTW9yZX0gYWdlbnRzQ291bnQ9e2FnZW50c0ZvclNlbGVjdG9yLmxlbmd0aH0gcmVmPXthZ2VudHNSZWZ9PlxuICAgICAgICAgICAgICAgIHthZ2VudHNGb3JTZWxlY3Rvcj8ubWFwKChhZ2VudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/LmlzX2RlbGV0ZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHxcbiAgICAgICAgICAgICAgICAgICAgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgIGFnZW50Py50eXBlID09PSAnY2xvbmUnIHx8XG4gICAgICAgICAgICAgICAgICAgIGlzTWFpYUFnZW50KGFnZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAoYWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nICYmICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxDaGF0QUlBZ2VudE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YGFnZW50LSR7YWdlbnQuaWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gYWdlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgb25GYXZvcml0ZVRvZ2dsZT17b25BZ2VudFVwZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRJc0V4cGFuZGVkPXtzZXRJc0V4cGFuZGVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIHtsb2FkaW5nTW9yZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8U0NDQUlNSExvYWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NDQUlNSExvYWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1IQWdlbnRzTGlzdD5cbiAgICAgICAgICAgICAge3VzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmXG4gICAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgICAgICAgICAhaXNNeUFnZW50c1NlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAhaXNNeVNraWxsc1NlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAhaXNNYWlha2VyU2VjdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8U0NDQUlNSEFkZEFnZW50XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRJc0V4cGFuZGVkKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLm9wZW5Nb2RhbCwgeyBvcHRpb246ICdjcmVhdGVfYWdlbnQnIH0pXG4gICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50VmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U0NDQUlNSFBsdXNJY29uV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1cyBjb2xvcj1cIndoaXRlXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhQbHVzSWNvbldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdjcmVhdGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IQWRkQWdlbnQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgPC9TQ0NBSU1IV3JhcHBlck1vZGFsPlxuICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1IV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBzaG91bGRSZW5kZXJTZWxlY3RvciA9XG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAhaGlkZUFnZW50U2VsZWN0b3IgJiZcbiAgICAoISFzZWxlY3RlZEFnZW50IHx8IGlzTXlBZ2VudHNTZWN0aW9uIHx8IGlzTXlTa2lsbHNTZWN0aW9uKSAmJlxuICAgICghIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIHx8ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUylcblxuICByZXR1cm4gKFxuICAgIDxTQ0NBSU1ITW9kYWxcbiAgICAgICRoYXNFcnJvcj17aGFzRXJyb3J9XG4gICAgICAkbG9hZGluZz17bG9hZGluZ31cbiAgICAgICRoYXNBZ2VudHM9eyEhYWdlbnRzLmxlbmd0aH1cbiAgICAgIG9uUG9pbnRlckRvd249e2RyYWdnYWJsZSA/IG9uRHJhZ1N0YXJ0IDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyTW92ZT17ZHJhZ2dhYmxlID8gb25EcmFnTW92ZSA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlclVwPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJDYW5jZWw9e2RyYWdnYWJsZSA/IG9uRHJhZ0VuZCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uTG9zdFBvaW50ZXJDYXB0dXJlPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBzdHlsZT17eyBjdXJzb3I6IGRyYWdnYWJsZSA/ICdncmFiJyA6IHVuZGVmaW5lZCwgdG91Y2hBY3Rpb246IGRyYWdnYWJsZSA/ICdtYW5pcHVsYXRpb24nIDogdW5kZWZpbmVkIH19XG4gICAgPlxuICAgICAge3Nob3VsZFJlbmRlclNlbGVjdG9yID8gcmVuZGVyTW9kYWwoKSA6IDxkaXYgLz59XG4gICAgICA8U0NDQUlNSFdyYXBwZXJCdXR0b24gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICB7c2hvd0JhY2tCdXR0b24gJiYgKFxuICAgICAgICAgIDxTQ0NBSU1IQmFja0J1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIG9uQmFjaygpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDaGV2cm9uTGVmdCB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzM0MzQzM1wiIC8+XG4gICAgICAgICAgICB7dCgnYmFjaycpfVxuICAgICAgICAgIDwvU0NDQUlNSEJhY2tCdXR0b24+XG4gICAgICAgICl9XG4gICAgICAgIHtzaG93SGVhZGVyQ3JlYXRlQWdlbnRCdXR0b24gJiYgKFxuICAgICAgICAgIDxTQ0NBSU1IQ3JlYXRlQWdlbnRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZU9wZW5DcmVhdGVBZ2VudE1vZGFsfT5cbiAgICAgICAgICAgIDxTQ0NBSU1IQ3JlYXRlQWdlbnRCdXR0b25UZXh0Pnt0KCdvcGVuQWdlbnRDcmVhdG9yJyl9PC9TQ0NBSU1IQ3JlYXRlQWdlbnRCdXR0b25UZXh0PlxuICAgICAgICAgIDwvU0NDQUlNSENyZWF0ZUFnZW50QnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICA8U0NDQUlNSExheW91dE1lbnVBbmNob3IgcmVmPXtsYXlvdXRNZW51UmVmfSBkYXRhLW5vLWRyYWc9XCJ0cnVlXCI+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGJ1dHRvbklkPVwiYnRuLW1haWEtbGF5b3V0LW1lbnVcIlxuICAgICAgICAgICAgaGFuZGxlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFsYXlvdXRNZW51T3Blbikge1xuICAgICAgICAgICAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE9wZW5WaWV3T3B0aW9ucylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRMYXlvdXRNZW51T3BlbihwcmV2ID0+ICFwcmV2KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHRvb2x0aXA9e3QoJ2xheW91dE1lbnVUb29sdGlwJyl9XG4gICAgICAgICAgICBkaXNhYmxlVG9vbHRpcD17bGF5b3V0TWVudU9wZW59XG4gICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxNYWlhQ2hhdExheW91dE1lbnVJY29uIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIHtsYXlvdXRNZW51T3BlbiA/IChcbiAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVBhbmVsIHJvbGU9XCJtZW51XCI+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdzaWRlYmFyJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQaWNrTGF5b3V0KCdzaWRlYmFyJyl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dJY29uIGFyaWEtaGlkZGVuPlxuICAgICAgICAgICAgICAgICAgPE1haWFDaGF0TGF5b3V0U2lkZWJhckljb24gLz5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93SWNvbj5cbiAgICAgICAgICAgICAgICB7dCgnbGF5b3V0U2lkZWJhcicpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZnVsbHNjcmVlbicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93SWNvbiBhcmlhLWhpZGRlbj5cbiAgICAgICAgICAgICAgICAgIDxNYWlhQ2hhdExheW91dEZ1bGxzY3JlZW5JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dEZ1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVQaWNrTGF5b3V0KCdmbG9hdGluZycpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93SWNvbiBhcmlhLWhpZGRlbj5cbiAgICAgICAgICAgICAgICAgIDxNYWlhQ2hhdExheW91dEZsb2F0aW5nSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3dJY29uPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGbG9hdGluZycpfVxuICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93PlxuICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVBhbmVsPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51QW5jaG9yPlxuICAgICAgICB7aGFuZGxlTWluaW1pemUgPyAoXG4gICAgICAgICAgPEljb25CdXR0b24gaGFuZGxlQ2xpY2s9e2hhbmRsZU1pbmltaXplfSB0b29sdGlwPXt0KCdnbG9iYWxzLm1pbmltaXplJyl9IHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgPFNDQ0FJTUhNaW5pbWl6ZUljb24+XG4gICAgICAgICAgICAgIDxTdGF0dXMgd2lkdGg9ezI0fSBoZWlnaHQ9ezI0fSAvPlxuICAgICAgICAgICAgPC9TQ0NBSU1ITWluaW1pemVJY29uPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDQ0FJTUhXcmFwcGVyQnV0dG9uPlxuICAgIDwvU0NDQUlNSE1vZGFsPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLFFBQTJDLE9BQU87QUFDNUcsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLDhDQUE4QztBQUMxRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFFBQVEsUUFBUSxpQ0FBaUM7QUFDMUQsU0FBU0MsZ0JBQWdCLFFBQVEsdUNBQXVDO0FBQ3hFLFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUFTQyxVQUFVLFFBQVEsOEJBQThCO0FBQ3pELFNBQVNDLFFBQVEsRUFBRUMsc0JBQXNCLFFBQVEseUJBQXlCO0FBQzFF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
456
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsIlRvb2x0aXAiLCJTdGF0dXMiLCJDaGV2cm9uRG93biIsIkNoZXZyb25MZWZ0IiwiUGx1cyIsInVzZVRyYW5zbGF0aW9uIiwiU0VDVElPTlMiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlUmVzaXplTGlzdGVuZXIiLCJJY29uQnV0dG9uIiwiTUFJQUljb24iLCJNYWlhQ2hhdExheW91dE1lbnVJY29uIiwiTWFpYUNoYXRMYXlvdXRTaWRlYmFySWNvbiIsIk1haWFDaGF0TGF5b3V0RnVsbHNjcmVlbkljb24iLCJNYWlhQ2hhdExheW91dEZsb2F0aW5nSWNvbiIsIkNoYXRBSUFnZW50T3B0aW9uIiwiU0NDQUlNSE1vZGFsIiwiU0NDQUlNSFNlbGVjdGVkQWdlbnQiLCJTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQiLCJTQ0NBSU1IV3JhcHBlciIsIlNDQ0FJTUhXcmFwcGVyQnV0dG9uIiwiU0NDQUlNSFdyYXBwZXJJY29uIiwiU0NDQUlNSFdyYXBwZXJNb2RhbCIsIlNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50IiwiU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSIsIlNDQ0FJTUhBZGRBZ2VudCIsIlNDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvbiIsIlNDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvblRleHQiLCJTQ0NBSU1IRGl2aWRlciIsIlNDQ0FJTUhBZ2VudHNMaXN0IiwiU0NDQUlNSExvYWRlcldyYXBwZXIiLCJTQ0NBSU1IUGx1c0ljb25XcmFwcGVyIiwiU0NDQUlNSExheW91dE1lbnVBbmNob3IiLCJTQ0NBSU1ITGF5b3V0TWVudVBhbmVsIiwiU0NDQUlNSExheW91dE1lbnVSb3ciLCJTQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24iLCJTQ0NBSU1IQmFja0J1dHRvbiIsIlNDQ0FJTUhNaW5pbWl6ZUljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVVzZXIiLCJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwiTG9hZGVyIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsImNhblNob3dIZWFkZXJDcmVhdGVBZ2VudEJ1dHRvbiIsImZpbHRlckFnZW50c0ZvclNlbGVjdG9yIiwiaXNNYWlhT3JjaGVzdHJhdG9yQWdlbnQiLCJyZXNvbHZlSGVhZGVyU2VsZWN0b3JMYWJlbCIsInJlc29sdmVMb2NhbFNlbGVjdGVkQWdlbnQiLCJhZ2VudFNlbGVjdGlvbk5lZWRzRW50aXR5Iiwic2hvdWxkUmVuZGVySGVhZGVyQWdlbnRTZWxlY3RvciIsInNob3VsZExvYWRNb3JlQWdlbnRzT25TY3JvbGwiLCJzaG91bGRSZW5kZXJBZ2VudERyb3Bkb3duSXRlbSIsInNob3VsZFNob3dEcm9wZG93bkFkZEFnZW50Rm9vdGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQ2hhdEFJTW9kYWxIZWFkZXIiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJsYXlvdXRNb2RlIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiX3JlZiRkcmFnZ2FibGUiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYW5kbGVNaW5pbWl6ZSIsIl9yZWYkYWdlbnRzIiwiYWdlbnRzIiwiX3JlZiRoYXNFcnJvciIsImhhc0Vycm9yIiwiX3JlZiRsb2FkaW5nIiwibG9hZGluZyIsIl9yZWYkbG9hZGluZ01vcmUiLCJsb2FkaW5nTW9yZSIsIl9yZWYkaGFzTW9yZSIsImhhc01vcmUiLCJoYW5kbGVSZXNldENoYXQiLCJvbkFnZW50VXBkYXRlIiwibG9hZE1vcmVBZ2VudHMiLCJzb3J0QWdlbnRzTGlzdCIsIl9yZWYkaXNNeUFnZW50c1NlY3RpbyIsImlzTXlBZ2VudHNTZWN0aW9uIiwiX3JlZiRpc015U2tpbGxzU2VjdGlvIiwiaXNNeVNraWxsc1NlY3Rpb24iLCJfcmVmJGlzTWFpYWtlclNlY3Rpb24iLCJpc01haWFrZXJTZWN0aW9uIiwiX3JlZiRoaWRlQWdlbnRTZWxlY3RvIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkFnZW50U2VsZWN0ZWQiLCJfcmVmJHNob3dCYWNrQnV0dG9uIiwic2hvd0JhY2tCdXR0b24iLCJfcmVmJG9uQmFjayIsIm9uQmFjayIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiY2hhdEFJIiwidCIsInVzZXIiLCJhbXBsaXR1ZEV2ZW50IiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RlZEFnZW50IiwiYWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwic2VjdGlvbiIsInRvb2x0aXBaSW5kZXgiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsInRleHRSZWZBZ2VudCIsImRyb3Bkb3duUmVmIiwibGF5b3V0TWVudVJlZiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibGF5b3V0TWVudU9wZW4iLCJzZXRMYXlvdXRNZW51T3BlbiIsIl91c2VSZXNpemVMaXN0ZW5lciIsIm5hbWUiLCJzaG93VG9vbHRpcEFnZW50Iiwic2hvd1Rvb2x0aXAiLCJhZ2VudHNSZWYiLCJhZ2VudHNGb3JTZWxlY3RvciIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwic2hvd0hlYWRlckNyZWF0ZUFnZW50QnV0dG9uIiwiY3JlYXRlIiwiQm9vbGVhbiIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJoYW5kbGVPcGVuQ3JlYXRlQWdlbnRNb2RhbCIsIm9wZW5Nb2RhbCIsIm9wdGlvbiIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iLCJ1bmRlZmluZWQiLCJoYW5kbGVTY3JvbGwiLCJjdXJyZW50IiwiX2FnZW50c1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwidGltZW91dElkIiwic2V0VGltZW91dCIsInNjcm9sbEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImxvY2FsQWdlbnRzIiwic2VsZWN0b3JJY29uIiwidHlwZSIsImlzX2xlZ2FjeV9jb250ZXh0IiwiZW1vamkiLCJzZWxlY3RvckxhYmVsIiwibnMiLCJoYW5kbGVTZWxlY3RBZ2VudCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWdlbnRfdHlwZSIsImhhbmRsZUV4cGFuZE1vZGFsIiwiYWlDaGF0T3BlbkFnZW50U2VsZWN0IiwicHJldiIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImV2ZW50IiwidGFyZ2V0IiwiY29udGFpbnMiLCJoYW5kbGVQaWNrTGF5b3V0IiwibW9kZSIsInByb2plY3RSZXN1bWVFeHBhbmQiLCJleHBhbmRlZCIsImFpQ2hhdFNlbGVjdFZpZXdPcHRpb25zIiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsInJlbmRlck1vZGFsIiwicmVmIiwib25DbGljayIsImxlbmd0aCIsImlkIiwiY2hpbGRyZW4iLCJfb2JqZWN0U3ByZWFkIiwidGl0bGUiLCJzdHlsZSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiZ2FwIiwicGxhY2VtZW50IiwiekluZGV4IiwiaXNBZ2VudERlbGV0ZWQiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIm1haWFBZ2VudHMiLCJmaWx0ZXIiLCJtYXAiLCJtYWlhQWdlbnQiLCJpbmRleCIsImlzU2VsZWN0ZWQiLCJpc01haWEiLCJvbkZhdm9yaXRlVG9nZ2xlIiwiY29uY2F0Iiwic29tZSIsImNvbXBhbnkiLCJhZ2VudHNDb3VudCIsIm11bHRpQWdlbnRzQWNjZXNzIiwic2l6ZSIsImNhbkNyZWF0ZSIsInNob3VsZFJlbmRlclNlbGVjdG9yIiwibGVnYWN5TWFpYUFjY2VzcyIsIiRoYXNFcnJvciIsIiRsb2FkaW5nIiwiJGhhc0FnZW50cyIsIm9uUG9pbnRlckRvd24iLCJvblBvaW50ZXJNb3ZlIiwib25Qb2ludGVyVXAiLCJvblBvaW50ZXJDYW5jZWwiLCJvbkxvc3RQb2ludGVyQ2FwdHVyZSIsImN1cnNvciIsInRvdWNoQWN0aW9uIiwiYnV0dG9uSWQiLCJoYW5kbGVDbGljayIsImFpQ2hhdE9wZW5WaWV3T3B0aW9ucyIsInRvb2x0aXAiLCJkaXNhYmxlVG9vbHRpcCIsInJvbGUiLCIkYWN0aXZlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IFN0YXR1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXR1cydcbmltcG9ydCB7IENoZXZyb25Eb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvd24nXG5pbXBvcnQgeyBDaGV2cm9uTGVmdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25MZWZ0J1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL0ljb25CdXR0b24nXG5pbXBvcnQgeyBNQUlBSWNvbiwgTWFpYUNoYXRMYXlvdXRNZW51SWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgTWFpYUNoYXRMYXlvdXRTaWRlYmFySWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2F0b21zL2ljb25zL01haWFDaGF0TGF5b3V0U2lkZWJhckljb24nXG5pbXBvcnQgeyBNYWlhQ2hhdExheW91dEZ1bGxzY3JlZW5JY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMvTWFpYUNoYXRMYXlvdXRGdWxsc2NyZWVuSWNvbidcbmltcG9ydCB7IE1haWFDaGF0TGF5b3V0RmxvYXRpbmdJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvaWNvbnMvTWFpYUNoYXRMYXlvdXRGbG9hdGluZ0ljb24nXG5pbXBvcnQgeyBDaGF0QUlBZ2VudE9wdGlvbiB9IGZyb20gJy4uL0NoYXRBaUFnZW50T3B0aW9ucy9DaGF0QWlBZ2VudE9wdGlvbnMnXG5pbXBvcnQge1xuICBTQ0NBSU1ITW9kYWwsXG4gIFNDQ0FJTUhTZWxlY3RlZEFnZW50LFxuICBTQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQsXG4gIFNDQ0FJTUhXcmFwcGVyLFxuICBTQ0NBSU1IV3JhcHBlckJ1dHRvbixcbiAgU0NDQUlNSFdyYXBwZXJJY29uLFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsLFxuICBTQ0NBSU1IV3JhcHBlck1vZGFsQ29udGVudCxcbiAgU0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnRUaXRsZSxcbiAgU0NDQUlNSEFkZEFnZW50LFxuICBTQ0NBSU1IQ3JlYXRlQWdlbnRCdXR0b24sXG4gIFNDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvblRleHQsXG4gIFNDQ0FJTUhEaXZpZGVyLFxuICBTQ0NBSU1IQWdlbnRzTGlzdCxcbiAgU0NDQUlNSExvYWRlcldyYXBwZXIsXG4gIFNDQ0FJTUhQbHVzSWNvbldyYXBwZXIsXG4gIFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yLFxuICBTQ0NBSU1ITGF5b3V0TWVudVBhbmVsLFxuICBTQ0NBSU1ITGF5b3V0TWVudVJvdyxcbiAgU0NDQUlNSExheW91dE1lbnVSb3dJY29uLFxuICBTQ0NBSU1IQmFja0J1dHRvbixcbiAgU0NDQUlNSE1pbmltaXplSWNvbixcbn0gZnJvbSAnLi9DaGF0QWlNb2RhbEhlYWRlci5zdHlsZXMnXG5pbXBvcnQgdHlwZSB7IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi4vLi4vbGF5b3V0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQge1xuICBjYW5TaG93SGVhZGVyQ3JlYXRlQWdlbnRCdXR0b24sXG4gIGZpbHRlckFnZW50c0ZvclNlbGVjdG9yLFxuICBpc01haWFPcmNoZXN0cmF0b3JBZ2VudCxcbiAgcmVzb2x2ZUhlYWRlclNlbGVjdG9yTGFiZWwsXG4gIHJlc29sdmVMb2NhbFNlbGVjdGVkQWdlbnQsXG4gIGFnZW50U2VsZWN0aW9uTmVlZHNFbnRpdHksXG4gIHNob3VsZFJlbmRlckhlYWRlckFnZW50U2VsZWN0b3IsXG4gIHNob3VsZExvYWRNb3JlQWdlbnRzT25TY3JvbGwsXG4gIHNob3VsZFJlbmRlckFnZW50RHJvcGRvd25JdGVtLFxuICBzaG91bGRTaG93RHJvcGRvd25BZGRBZ2VudEZvb3Rlcixcbn0gZnJvbSAnLi9DaGF0QWlNb2RhbEhlYWRlci5oZWxwZXJzJ1xuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWxIZWFkZXIgPSAoe1xuICBsYXlvdXRNb2RlLFxuICBvbkxheW91dE1vZGVDaGFuZ2UsXG4gIGRyYWdnYWJsZSA9IGZhbHNlLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnTW92ZSxcbiAgb25EcmFnRW5kLFxuICBoYW5kbGVNaW5pbWl6ZSxcbiAgYWdlbnRzID0gW10sXG4gIGhhc0Vycm9yID0gZmFsc2UsXG4gIGxvYWRpbmcgPSBmYWxzZSxcbiAgbG9hZGluZ01vcmUgPSBmYWxzZSxcbiAgaGFzTW9yZSA9IGZhbHNlLFxuICBoYW5kbGVSZXNldENoYXQsXG4gIG9uQWdlbnRVcGRhdGUsXG4gIGxvYWRNb3JlQWdlbnRzLFxuICBzb3J0QWdlbnRzTGlzdCxcbiAgaXNNeUFnZW50c1NlY3Rpb24gPSBmYWxzZSxcbiAgaXNNeVNraWxsc1NlY3Rpb24gPSBmYWxzZSxcbiAgaXNNYWlha2VyU2VjdGlvbiA9IGZhbHNlLFxuICBoaWRlQWdlbnRTZWxlY3RvciA9IGZhbHNlLFxuICBvbkFnZW50U2VsZWN0ZWQsXG4gIHNob3dCYWNrQnV0dG9uID0gZmFsc2UsXG4gIG9uQmFjayA9ICgpID0+IG51bGwsXG59OiB7XG4gIGxheW91dE1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlXG4gIG9uTGF5b3V0TW9kZUNoYW5nZTogKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB2b2lkXG4gIGV4cGFuZGVkOiBib29sZWFuXG4gIGRyYWdnYWJsZT86IGJvb2xlYW5cbiAgb25EcmFnU3RhcnQ/OiAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4gdm9pZFxuICBvbkRyYWdNb3ZlPzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25EcmFnRW5kPzogKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgaGFuZGxlTWluaW1pemU/OiAoKSA9PiB2b2lkXG4gIGFnZW50czogQWdlbnRbXVxuICBoYXNFcnJvcjogYm9vbGVhblxuICBsb2FkaW5nOiBib29sZWFuXG4gIGxvYWRpbmdNb3JlPzogYm9vbGVhblxuICBoYXNNb3JlPzogYm9vbGVhblxuICBoYW5kbGVSZXNldENoYXQ6ICgpID0+IHZvaWRcbiAgb25BZ2VudFVwZGF0ZT86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIGxvYWRNb3JlQWdlbnRzPzogKCkgPT4gdm9pZFxuICBzb3J0QWdlbnRzTGlzdD86ICgpID0+IHZvaWRcbiAgLyoqIFNlY2Npw7NuIFwiTWlzIGFnZW50ZXNcIjogc2kgbm8gaGF5IGFnZW50ZSBzZXRlYWRvLCBlbCBzZWxlY3RvciBtdWVzdHJhIGVsIGljb25vIGRlIE1BSUEgeSBlbCBub21icmUgZGUgbGEgc2VjY2nDs24gKi9cbiAgaXNNeUFnZW50c1NlY3Rpb24/OiBib29sZWFuXG4gIC8qKiBTZWNjacOzbiBcIlNraWxsc1wiOiBtaXNtbyBjb21wb3J0YW1pZW50byBkZSBzZWxlY3RvciBxdWUgTWlzIGFnZW50ZXMsIGNvbiBlbCBub21icmUgZGUgbGEgc2VjY2nDs24gKi9cbiAgaXNNeVNraWxsc1NlY3Rpb24/OiBib29sZWFuXG4gIC8qKiBPY3VsdGEgZWwgY2hpcCBkZSBtb2RlbG8gTExNIChwLiBlai4gZW4gTWlzIGFnZW50ZXMgLyBNaXMgc2tpbGxzKSAqL1xuICBoaWRlQWdlbnRTZWxlY3Rvcj86IGJvb2xlYW5cbiAgLyoqIFNlY2Npw7NuIFwiQ3JlYWRvciBkZSBhZ2VudGVzXCIgKE1haWFrZXIpOiBoYWJpbGl0YSBlbCBib3TDs24gXCJDcmVhciBhZ2VudGVcIiBkZWwgaGVhZGVyICovXG4gIGlzTWFpYWtlclNlY3Rpb24/OiBib29sZWFuXG4gIC8qKlxuICAgKiBTZSBpbnZvY2EgZGVzcHXDqXMgZGVsIHJlc2V0IGN1YW5kbyBlbCBhZ2VudGUgc2VsZWNjaW9uYWRvIE5PIHJlcXVpZXJlIHNlbGVjY2nDs25cbiAgICogZGUgZW50aXR5IChjdXN0b20gbyBjbG9uZStnbG9iYWwpLiBQZXJtaXRlIHJlc29sdmVyIGBHRVQgL3YyL3Nlc3Npb25zL2FnZW50L3tpZH1gXG4gICAqIHkgbmF2ZWdhciBhIHVuYSBjb252ZXJzYWNpw7NuIGV4aXN0ZW50ZSBzaSBsYSBoYXkuXG4gICAqL1xuICBvbkFnZW50U2VsZWN0ZWQ/OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkIHwgUHJvbWlzZTx1bmtub3duPlxuICBzaG93QmFja0J1dHRvbj86IGJvb2xlYW5cbiAgb25CYWNrPzogKCkgPT4gdm9pZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudCwgU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFnZW50OiBzZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBzZWN0aW9uIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgLy8gRW4gc2VjdGlvbiAndGFzaycgZWwgbW9kYWwgZGUgTWFpYSBzZSBlbGV2YSBwb3IgZW5jaW1hIGRlbCB0YXNrIHBhbmVsICh6LWluZGV4IDk4MDAwMDEpLlxuICAvLyBMb3MgdG9vbHRpcHMgc2UgbW9udGFuIGVuIHBvcnRhbCBjb24gei1pbmRleCAxNTAwIHBvciBkZWZlY3RvLCBhc8OtIHF1ZSBxdWVkYXLDrWFuIGRldHLDoXMuXG4gIC8vIFN1Ymltb3Mgc3Ugei1pbmRleCBzw7NsbyBlbiBlc3RlIGNhc28gcGFyYSBxdWUgc2UgdmVhbiBwb3IgZW5jaW1hIGRlbCBtb2RhbC5cbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdGV4dFJlZkFnZW50ID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGxheW91dE1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtsYXlvdXRNZW51T3Blbiwgc2V0TGF5b3V0TWVudU9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXA6IHNob3dUb29sdGlwQWdlbnQgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWZBZ2VudCwgW3NlbGVjdGVkQWdlbnQ/Lm5hbWVdKVxuICBjb25zdCBhZ2VudHNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgY29uc3QgYWdlbnRzRm9yU2VsZWN0b3IgPSB1c2VNZW1vKCgpID0+IGZpbHRlckFnZW50c0ZvclNlbGVjdG9yKGFnZW50cyksIFthZ2VudHNdKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3Qgc2hvd0hlYWRlckNyZWF0ZUFnZW50QnV0dG9uID0gY2FuU2hvd0hlYWRlckNyZWF0ZUFnZW50QnV0dG9uKFxuICAgIHVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlLFxuICAgIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpLFxuICAgIGlzTXlBZ2VudHNTZWN0aW9uLFxuICAgIGlzTWFpYWtlclNlY3Rpb25cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5DcmVhdGVBZ2VudE1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLm9wZW5Nb2RhbCwgeyBvcHRpb246ICdjcmVhdGVfYWdlbnQnIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGFnZW50VmFsdWVzOiB7XG4gICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbYW1wbGl0dWRFdmVudF0pXG5cbiAgLy8gTWFuZWphciBzY3JvbGwgaW5maW5pdG8gcGFyYSBjYXJnYXIgbcOhcyBhZ2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTb2xvIGN1YW5kbyBlbCBkcm9wZG93biBlc3TDqSBhYmllcnRvXG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFhZ2VudHNSZWYuY3VycmVudCB8fCAhbG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmUgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgaWYgKHNob3VsZExvYWRNb3JlQWdlbnRzT25TY3JvbGwoZGlzdGFuY2VGcm9tQm90dG9tKSkge1xuICAgICAgICBsb2FkTW9yZUFnZW50cygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVsYXkgcGFyYSBhc2VndXJhciBxdWUgZWwgRE9NIGVzdMOpIHJlbmRlcml6YWRvXG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gYWdlbnRzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzY3JvbGxFbGVtZW50KSB7XG4gICAgICAgIHNjcm9sbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH0sIDEwMClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgICBpZiAoc2Nyb2xsRWxlbWVudCkge1xuICAgICAgICBzY3JvbGxFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkLCBsb2FkTW9yZUFnZW50cywgaGFzTW9yZSwgbG9hZGluZ01vcmVdKVxuXG4gIGNvbnN0IGxvY2FsQWdlbnRzID0gdXNlTWVtbygoKSA9PiByZXNvbHZlTG9jYWxTZWxlY3RlZEFnZW50KGFnZW50cywgc2VsZWN0ZWRBZ2VudCksIFthZ2VudHMsIHNlbGVjdGVkQWdlbnRdKVxuXG4gIC8vIEVuICdNaXMgYWdlbnRlcycgLyAnU2tpbGxzJyBzaW4gYWdlbnRlIHNldGVhZG8sIGVsIHNlbGVjdG9yIG11ZXN0cmEgZWwgaWNvbm8gZGUgTUFJQSB5IGVsIG5vbWJyZSBkZSBsYSBzZWNjacOzblxuICAvLyBlbiBsdWdhciBkZWwgYWdlbnRlLCBwYXJhIHF1ZSBlbCB1c3VhcmlvIHB1ZWRhIGFicmlyIGVsIGRyb3Bkb3duIHkgZWxlZ2lyIHVuby5cbiAgY29uc3Qgc2VsZWN0b3JJY29uID1cbiAgICBsb2NhbEFnZW50cz8udHlwZSA9PT0gJ2N1c3RvbScgJiYgIWxvY2FsQWdlbnRzPy5pc19sZWdhY3lfY29udGV4dCA/IGxvY2FsQWdlbnRzPy5lbW9qaSA6IDxNQUlBSWNvbiAvPlxuICBjb25zdCBzZWxlY3RvckxhYmVsID0gcmVzb2x2ZUhlYWRlclNlbGVjdG9yTGFiZWwoXG4gICAgbG9jYWxBZ2VudHMsXG4gICAgaXNNeUFnZW50c1NlY3Rpb24sXG4gICAgaXNNeVNraWxsc1NlY3Rpb24sXG4gICAgdCgnbWFya2V0cGxhY2UubXlBZ2VudHNUaXRsZScsIHsgbnM6IFNFQ1RJT05TLmNoYXRBSSB9KSxcbiAgICB0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2JywgeyBuczogU0VDVElPTlMuY2hhdEFJIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudDogQWdlbnQpID0+IHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QWdlbnRTZWxlY3QsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlUmVzZXRDaGF0KClcbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGRlcGVuZGUgZGUgdW5hIGVudGl0eSAoY3VzdG9tIG8gY2xvbmUrZ2xvYmFsKSB5YSBwb2RlbW9zXG4gICAgICAgIC8vIHJlc29sdmVyIHNpIGV4aXN0ZSB1bmEgc2VzacOzbiBwcmV2aWEgeSwgZW4gZXNlIGNhc28sIG5hdmVnYXIgYSBlbGxhLlxuICAgICAgICAvLyBQYXJhIGNsb25lK3Byb2plY3R8Y2xpZW50LCBsYSByZXNvbHVjacOzbiBvY3VycmUgZW4gbG9zIHNlbGVjdG9ycyBkZSBlbnRpdHkuXG4gICAgICAgIGlmICghYWdlbnRTZWxlY3Rpb25OZWVkc0VudGl0eShhZ2VudCkpIHtcbiAgICAgICAgICBvbkFnZW50U2VsZWN0ZWQ/LihhZ2VudClcbiAgICAgICAgfVxuICAgICAgfSwgMTAwKVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBhbXBsaXR1ZEV2ZW50LCBoYW5kbGVSZXNldENoYXQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgb25BZ2VudFNlbGVjdGVkXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRXhwYW5kTW9kYWwgPSAoKSA9PiB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuQWdlbnRTZWxlY3QpXG4gICAgICAvLyBDdWFuZG8gc2UgYWJyZSBlbCBzZWxlY3Rvciwgb3JkZW5hciBsb3MgYWdlbnRlc1xuICAgICAgaWYgKHNvcnRBZ2VudHNMaXN0KSB7XG4gICAgICAgIHNvcnRBZ2VudHNMaXN0KClcbiAgICAgIH1cbiAgICB9XG4gICAgc2V0SXNFeHBhbmRlZChwcmV2ID0+ICFwcmV2KVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQgJiYgIWxheW91dE1lbnVPcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgTm9kZVxuICAgICAgaWYgKGlzRXhwYW5kZWQgJiYgZHJvcGRvd25SZWYuY3VycmVudCAmJiAhZHJvcGRvd25SZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHNldElzRXhwYW5kZWQoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAobGF5b3V0TWVudU9wZW4gJiYgbGF5b3V0TWVudVJlZi5jdXJyZW50ICYmICFsYXlvdXRNZW51UmVmLmN1cnJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICBzZXRMYXlvdXRNZW51T3BlbihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtpc0V4cGFuZGVkLCBsYXlvdXRNZW51T3Blbl0pXG5cbiAgY29uc3QgaGFuZGxlUGlja0xheW91dCA9IHVzZUNhbGxiYWNrKFxuICAgIChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4ge1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMucHJvamVjdFJlc3VtZUV4cGFuZCwge1xuICAgICAgICBleHBhbmRlZDogbW9kZSA9PT0gJ2Z1bGxzY3JlZW4nLFxuICAgICAgfSlcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdFNlbGVjdFZpZXdPcHRpb25zLCB7IG9wdGlvbjogbW9kZSB9KVxuICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlKG1vZGUpXG4gICAgICBzZXRMYXlvdXRNZW51T3BlbihmYWxzZSlcbiAgICB9LFxuICAgIFthbXBsaXR1ZEV2ZW50LCBvbkxheW91dE1vZGVDaGFuZ2VdXG4gIClcblxuICBjb25zdCBjbG9uZUFnZW50c1JvbGVCbG9ja2VkID0gaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCh1c2VyLCBzZWN0aW9uKVxuXG4gIGNvbnN0IHJlbmRlck1vZGFsID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NDQUlNSFdyYXBwZXJcbiAgICAgICAgcmVmPXtkcm9wZG93blJlZn1cbiAgICAgICAgZGF0YS1uby1kcmFnPVwidHJ1ZVwiXG4gICAgICAgIG9uQ2xpY2s9e2FnZW50cy5sZW5ndGggPyBoYW5kbGVFeHBhbmRNb2RhbCA6IHVuZGVmaW5lZH1cbiAgICAgICAgaWQ9XCJjaGF0LWFpLW1vZGFsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgID5cbiAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50PlxuICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgIHNob3dUb29sdGlwQWdlbnQgPyAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgIHtsb2NhbEFnZW50cz8udHlwZSA9PT0gJ2N1c3RvbScgJiYgIWxvY2FsQWdlbnRzPy5pc19sZWdhY3lfY29udGV4dCA/IChcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxBZ2VudHM/LmVtb2ppXG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8TUFJQUljb24gLz5cbiAgICAgICAgICAgICAgICAgICl9eycgJ31cbiAgICAgICAgICAgICAgICAgIHtsb2NhbEFnZW50cz8ubmFtZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxhY2VtZW50PXtpc0V4cGFuZGVkID8gJ2xlZnQnIDogJ3RvcCd9XG4gICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDQ0FJTUhTZWxlY3RlZEFnZW50VGV4dFxuICAgICAgICAgICAgICByZWY9e3RleHRSZWZBZ2VudH1cbiAgICAgICAgICAgICAgaXNBZ2VudERlbGV0ZWQ9e1xuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCB8fFxuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fFxuICAgICAgICAgICAgICAgICEhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAhIXNlbGVjdGVkQWdlbnQ/LmlzX2xlZ2FjeV9jb250ZXh0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnNHB4JyB9fT5cbiAgICAgICAgICAgICAgICB7c2VsZWN0b3JJY29ufSB7c2VsZWN0b3JMYWJlbH1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9TQ0NBSU1IU2VsZWN0ZWRBZ2VudFRleHQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDQ0FJTUhTZWxlY3RlZEFnZW50PlxuICAgICAgICA8U0NDQUlNSFdyYXBwZXJJY29uPlxuICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD17MTR9IGhlaWdodD17MTR9IGNvbG9yPVwiIzIwMjAxRlwiIC8+XG4gICAgICAgIDwvU0NDQUlNSFdyYXBwZXJJY29uPlxuICAgICAgICB7aXNFeHBhbmRlZCAmJiAoXG4gICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWw+XG4gICAgICAgICAgICA8U0NDQUlNSFdyYXBwZXJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgIHt3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICFjbG9uZUFnZW50c1JvbGVCbG9ja2VkICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1haWFBZ2VudHMgPSBhZ2VudHNGb3JTZWxlY3Rvci5maWx0ZXIoaXNNYWlhT3JjaGVzdHJhdG9yQWdlbnQpXG4gICAgICAgICAgICAgICAgICAgIGlmICghbWFpYUFnZW50cy5sZW5ndGgpIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttYWlhQWdlbnRzLm1hcCgobWFpYUFnZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke21haWFBZ2VudC5pZH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50PXttYWlhQWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEFnZW50PXtoYW5kbGVTZWxlY3RBZ2VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZEFnZW50Py5pZCA9PT0gbWFpYUFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2FnZW50c0ZvclNlbGVjdG9yLnNvbWUoYWdlbnQgPT4gYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScpICYmXG4gICAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2FnZW50cycpfSBieSB7dXNlci5jb21wYW55fVxuICAgICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50VGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IRGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPFNDQ0FJTUhBZ2VudHNMaXN0IGhhc01vcmU9e2hhc01vcmV9IGFnZW50c0NvdW50PXthZ2VudHNGb3JTZWxlY3Rvci5sZW5ndGh9IHJlZj17YWdlbnRzUmVmfT5cbiAgICAgICAgICAgICAgICB7YWdlbnRzRm9yU2VsZWN0b3I/Lm1hcCgoYWdlbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICFzaG91bGRSZW5kZXJBZ2VudERyb3Bkb3duSXRlbSh7XG4gICAgICAgICAgICAgICAgICAgICAgYWdlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgbXVsdGlBZ2VudHNBY2Nlc3M6IEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8Q2hhdEFJQWdlbnRPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BhZ2VudC0ke2FnZW50LmlkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgYWdlbnQ9e2FnZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBZ2VudD17aGFuZGxlU2VsZWN0QWdlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uRmF2b3JpdGVUb2dnbGU9e29uQWdlbnRVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZD17c2V0SXNFeHBhbmRlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB7bG9hZGluZ01vcmUgJiYgKFxuICAgICAgICAgICAgICAgICAgPFNDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMb2FkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSEFnZW50c0xpc3Q+XG4gICAgICAgICAgICAgIHtzaG91bGRTaG93RHJvcGRvd25BZGRBZ2VudEZvb3Rlcih7XG4gICAgICAgICAgICAgICAgY2FuQ3JlYXRlOiB1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZSxcbiAgICAgICAgICAgICAgICBtdWx0aUFnZW50c0FjY2VzczogQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyksXG4gICAgICAgICAgICAgICAgaXNNeUFnZW50c1NlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXNNeVNraWxsc1NlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXNNYWlha2VyU2VjdGlvbixcbiAgICAgICAgICAgICAgfSkgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ0NBSU1IQWRkQWdlbnRcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50VmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTQ0NBSU1IUGx1c0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICA8UGx1cyBjb2xvcj1cIndoaXRlXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0NBSU1IUGx1c0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAge3QoJ2NyZWF0ZUFnZW50Jyl9XG4gICAgICAgICAgICAgICAgPC9TQ0NBSU1IQWRkQWdlbnQ+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDQ0FJTUhXcmFwcGVyTW9kYWxDb250ZW50PlxuICAgICAgICAgIDwvU0NDQUlNSFdyYXBwZXJNb2RhbD5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNSFdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0b3IgPSBzaG91bGRSZW5kZXJIZWFkZXJBZ2VudFNlbGVjdG9yKHtcbiAgICBoYXNFcnJvcixcbiAgICBsb2FkaW5nLFxuICAgIGhpZGVBZ2VudFNlbGVjdG9yLFxuICAgIHNlbGVjdGVkQWdlbnQsXG4gICAgaXNNeUFnZW50c1NlY3Rpb24sXG4gICAgaXNNeVNraWxsc1NlY3Rpb24sXG4gICAgbXVsdGlBZ2VudHNBY2Nlc3M6IEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpLFxuICAgIGxlZ2FjeU1haWFBY2Nlc3M6IEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyksXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NDQUlNSE1vZGFsXG4gICAgICAkaGFzRXJyb3I9e2hhc0Vycm9yfVxuICAgICAgJGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAkaGFzQWdlbnRzPXshIWFnZW50cy5sZW5ndGh9XG4gICAgICBvblBvaW50ZXJEb3duPXtkcmFnZ2FibGUgPyBvbkRyYWdTdGFydCA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlck1vdmU9e2RyYWdnYWJsZSA/IG9uRHJhZ01vdmUgOiB1bmRlZmluZWR9XG4gICAgICBvblBvaW50ZXJVcD17ZHJhZ2dhYmxlID8gb25EcmFnRW5kIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyQ2FuY2VsPXtkcmFnZ2FibGUgPyBvbkRyYWdFbmQgOiB1bmRlZmluZWR9XG4gICAgICBvbkxvc3RQb2ludGVyQ2FwdHVyZT17ZHJhZ2dhYmxlID8gb25EcmFnRW5kIDogdW5kZWZpbmVkfVxuICAgICAgc3R5bGU9e3sgY3Vyc29yOiBkcmFnZ2FibGUgPyAnZ3JhYicgOiB1bmRlZmluZWQsIHRvdWNoQWN0aW9uOiBkcmFnZ2FibGUgPyAnbWFuaXB1bGF0aW9uJyA6IHVuZGVmaW5lZCB9fVxuICAgID5cbiAgICAgIHtzaG91bGRSZW5kZXJTZWxlY3RvciA/IHJlbmRlck1vZGFsKCkgOiA8ZGl2IC8+fVxuICAgICAgPFNDQ0FJTUhXcmFwcGVyQnV0dG9uIGRhdGEtbm8tZHJhZz1cInRydWVcIj5cbiAgICAgICAge3Nob3dCYWNrQnV0dG9uICYmIChcbiAgICAgICAgICA8U0NDQUlNSEJhY2tCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBvbkJhY2soKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hldnJvbkxlZnQgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSBjb2xvcj1cIiMzNDM0MzNcIiAvPlxuICAgICAgICAgICAge3QoJ2JhY2snKX1cbiAgICAgICAgICA8L1NDQ0FJTUhCYWNrQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICB7c2hvd0hlYWRlckNyZWF0ZUFnZW50QnV0dG9uICYmIChcbiAgICAgICAgICA8U0NDQUlNSENyZWF0ZUFnZW50QnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVPcGVuQ3JlYXRlQWdlbnRNb2RhbH0+XG4gICAgICAgICAgICA8U0NDQUlNSENyZWF0ZUFnZW50QnV0dG9uVGV4dD57dCgnb3BlbkFnZW50Q3JlYXRvcicpfTwvU0NDQUlNSENyZWF0ZUFnZW50QnV0dG9uVGV4dD5cbiAgICAgICAgICA8L1NDQ0FJTUhDcmVhdGVBZ2VudEJ1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51QW5jaG9yIHJlZj17bGF5b3V0TWVudVJlZn0gZGF0YS1uby1kcmFnPVwidHJ1ZVwiPlxuICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICBidXR0b25JZD1cImJ0bi1tYWlhLWxheW91dC1tZW51XCJcbiAgICAgICAgICAgIGhhbmRsZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbGF5b3V0TWVudU9wZW4pIHtcbiAgICAgICAgICAgICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRPcGVuVmlld09wdGlvbnMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0TGF5b3V0TWVudU9wZW4ocHJldiA9PiAhcHJldilcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB0b29sdGlwPXt0KCdsYXlvdXRNZW51VG9vbHRpcCcpfVxuICAgICAgICAgICAgZGlzYWJsZVRvb2x0aXA9e2xheW91dE1lbnVPcGVufVxuICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRNZW51SWNvbiAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB7bGF5b3V0TWVudU9wZW4gPyAoXG4gICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVQYW5lbCByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICA8U0NDQUlNSExheW91dE1lbnVSb3dcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtsYXlvdXRNb2RlID09PSAnc2lkZWJhcid9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnc2lkZWJhcicpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93SWNvbiBhcmlhLWhpZGRlbj5cbiAgICAgICAgICAgICAgICAgIDxNYWlhQ2hhdExheW91dFNpZGViYXJJY29uIC8+XG4gICAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24+XG4gICAgICAgICAgICAgICAge3QoJ2xheW91dFNpZGViYXInKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgICAgPFNDQ0FJTUhMYXlvdXRNZW51Um93XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgJGFjdGl2ZT17bGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVBpY2tMYXlvdXQoJ2Z1bGxzY3JlZW4nKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24gYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRGdWxsc2NyZWVuSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3dJY29uPlxuICAgICAgICAgICAgICAgIHt0KCdsYXlvdXRGdWxsc2NyZWVuJyl9XG4gICAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVSb3c+XG4gICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICRhY3RpdmU9e2xheW91dE1vZGUgPT09ICdmbG9hdGluZyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUGlja0xheW91dCgnZmxvYXRpbmcnKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0NBSU1ITGF5b3V0TWVudVJvd0ljb24gYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICAgICAgICA8TWFpYUNoYXRMYXlvdXRGbG9hdGluZ0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L1NDQ0FJTUhMYXlvdXRNZW51Um93SWNvbj5cbiAgICAgICAgICAgICAgICB7dCgnbGF5b3V0RmxvYXRpbmcnKX1cbiAgICAgICAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudVJvdz5cbiAgICAgICAgICAgIDwvU0NDQUlNSExheW91dE1lbnVQYW5lbD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ0NBSU1ITGF5b3V0TWVudUFuY2hvcj5cbiAgICAgICAge2hhbmRsZU1pbmltaXplID8gKFxuICAgICAgICAgIDxJY29uQnV0dG9uIGhhbmRsZUNsaWNrPXtoYW5kbGVNaW5pbWl6ZX0gdG9vbHRpcD17dCgnZ2xvYmFscy5taW5pbWl6ZScpfSB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgIDxTQ0NBSU1ITWluaW1pemVJY29uPlxuICAgICAgICAgICAgICA8U3RhdHVzIHdpZHRoPXsyNH0gaGVpZ2h0PXsyNH0gLz5cbiAgICAgICAgICAgIDwvU0NDQUlNSE1pbmltaXplSWNvbj5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ0NBSU1IV3JhcHBlckJ1dHRvbj5cbiAgICA8L1NDQ0FJTUhNb2RhbD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxRQUEyQyxPQUFPO0FBQzVHLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsaUNBQWlDO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLHVDQUF1QztBQUN4RSxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsVUFBVSxRQUFRLDhCQUE4QjtBQUN6RCxTQUFTQyxRQUFRLEVBQUVDLHNCQUFzQixRQUFRLHlCQUF5QjtBQUMxRSxTQUFTQyx5QkFBeUIsUUFBUSxtREFBbUQ7QUFDN0YsU0FBU0MsNEJBQTRCLFFBQVEsc0RBQXNEO0FBQ25HLFNBQVNDLDBCQUEwQixRQUFRLG9EQUFvRDtBQUMvRixTQUFTQyxpQkFBaUIsUUFBUSwwQ0FBMEM7QUFDNUUsU0FDRUMsWUFBWSxFQUNaQyxvQkFBb0IsRUFDcEJDLHdCQUF3QixFQUN4QkMsY0FBYyxFQUNkQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsbUJBQW1CLEVBQ25CQywwQkFBMEIsRUFD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