@projectcor/maia-components 2.48.1-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.
- package/README.md +2 -0
- package/lib/App.js +19 -44
- package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.js +37 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -37
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +53 -1
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +28 -52
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +37 -1
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +33 -66
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +227 -1
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +53 -177
- package/lib/components/atoms/ClientSelector/ClientSelector.helpers.js +26 -0
- package/lib/components/atoms/ClientSelector/ClientSelector.js +12 -21
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +29 -1
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +12 -28
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
- package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +74 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +173 -1
- package/lib/components/atoms/MAIAInput/MAIAInput.js +126 -171
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +47 -1
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +40 -61
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.js +101 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +21 -77
- package/lib/components/atoms/TextArea/TextArea.helpers.js +23 -0
- package/lib/components/atoms/TextArea/TextArea.js +11 -20
- package/lib/components/index.js +1 -2
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +30 -1
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +13 -18
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +48 -1
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +17 -26
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
- package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.js +370 -0
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +266 -321
- package/lib/components/molecules/ChatAIHome/styles.js +78 -85
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +345 -1
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +201 -200
- package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +373 -5
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +199 -271
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +20 -1
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +87 -74
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.js +39 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +30 -33
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.js +41 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +9 -35
- package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
- package/lib/components/molecules/Sidebar/Sidebar.helpers.js +43 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +46 -61
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +314 -1
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +261 -480
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.js +37 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +13 -25
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/dev/DevReasoningTimeline.js +37 -68
- package/lib/dev/Providers.js +3 -5
- package/lib/hooks/useAgentModel/useCreateAgent.helpers.js +144 -0
- package/lib/hooks/useAgentModel/useCreateAgent.js +38 -102
- package/lib/hooks/useChatManager/useChatManager.helpers.js +550 -1
- package/lib/hooks/useChatManager/useChatManager.js +245 -429
- package/lib/hooks/useChatMessages/useChatMessages.helpers.js +257 -1
- package/lib/hooks/useChatMessages/useChatMessages.js +50 -206
- package/lib/hooks/useContextMentions.helpers.js +61 -1
- package/lib/hooks/useContextMentions.js +5 -62
- package/lib/hooks/useEntitySearch.helpers.js +49 -1
- package/lib/hooks/useEntitySearch.js +22 -53
- package/lib/hooks/useFrequentlyUsedActions.js +22 -60
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.js +86 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -82
- package/lib/index.js +2 -5
- package/lib/lang/br/index.js +1 -26
- package/lib/lang/en/index.js +1 -26
- package/lib/lang/es/index.js +1 -26
- package/lib/lang/fr/index.js +1 -26
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Agents/getAgents.helpers.js +61 -1
- package/lib/services/maia/Agents/getAgents.js +31 -59
- package/lib/services/utils/mapChatMessages.helpers.js +223 -0
- package/lib/services/utils/mapChatMessages.js +25 -249
- package/lib/store/sessions/sessionStreamManager.helpers.js +134 -0
- package/lib/store/sessions/sessionStreamManager.js +213 -273
- package/lib/styles/cascade.js +3 -29
- package/lib/styles/transitions.js +1 -3
- package/lib/types/global.d.js +1 -1
- package/lib/utils/hoursPlannerQuickActionType.js +1 -74
- package/lib/utils/renderContextMentions.helpers.js +110 -0
- package/lib/utils/renderContextMentions.js +4 -110
- package/lib/utils/streamActivityMessages.helpers.js +222 -0
- package/lib/utils/streamActivityMessages.js +21 -251
- package/package.json +1 -1
- package/lib/components/atoms/ActionableButton.spec.js +0 -111
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
- package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -66
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -211
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -41
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -253
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -33
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -25
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
- package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
- package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
- package/lib/components/atoms/Chip/Chip.spec.js +0 -82
- package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
- package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -88
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -77
- package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -48
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -231
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
- package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
- package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
- package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
- package/lib/components/atoms/Expand/Expand.spec.js +0 -57
- package/lib/components/atoms/Fade/Fade.spec.js +0 -31
- package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
- package/lib/components/atoms/HelpButton.spec.js +0 -87
- package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
- package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
- package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
- package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -26
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -444
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -20
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -53
- package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -22
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
- package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
- package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
- package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
- package/lib/components/atoms/NextPageLoader.spec.js +0 -37
- package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -86
- package/lib/components/atoms/PrimaryButton.spec.js +0 -42
- package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
- package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
- package/lib/components/atoms/Switch/Switch.spec.js +0 -41
- package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
- package/lib/components/atoms/TextArea/TextArea.spec.js +0 -68
- package/lib/components/atoms/ThirdButton.spec.js +0 -29
- package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
- package/lib/components/atoms/WithAppCfg.spec.js +0 -60
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -495
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -57
- package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -227
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -108
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -254
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
- package/lib/components/molecules/AgentInputBlock/index.js +0 -5
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
- package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
- package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -77
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -445
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -471
- package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -659
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -95
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
- package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
- package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -172
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -82
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
- package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
- package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
- package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
- package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -453
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -391
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1204
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -275
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -275
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -195
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
- package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
- package/lib/components/organisms/ChatAIPage/index.js +0 -3
- package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
- package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
- package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
- package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
- package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
- package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
- package/lib/constants/maiaFeatureAccess.spec.js +0 -30
- package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
- package/lib/constants/maiaTaskPanelAccess.spec.js +0 -30
- package/lib/constants/permissions/clientRoleAccess.spec.js +0 -31
- package/lib/constants/permissions/utils.spec.js +0 -128
- package/lib/dev/DevMaiaPage.js +0 -30
- package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
- package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
- package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
- package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -231
- package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -313
- package/lib/hooks/useAgentSuggestions.spec.js +0 -89
- package/lib/hooks/useCaretPosition.spec.js +0 -58
- package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -506
- package/lib/hooks/useChatManager/useChatManager.spec.js +0 -1261
- package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -176
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -379
- package/lib/hooks/useChats/useChats.spec.js +0 -208
- package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
- package/lib/hooks/useClientSearch.spec.js +0 -86
- package/lib/hooks/useContextMentions.helpers.spec.js +0 -143
- package/lib/hooks/useContextMentions.spec.js +0 -239
- package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -115
- package/lib/hooks/useContextPinPopover.spec.js +0 -159
- package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
- package/lib/hooks/useDebounce.spec.js +0 -42
- package/lib/hooks/useEntitySearch.helpers.spec.js +0 -321
- package/lib/hooks/useEntitySearch.spec.js +0 -443
- package/lib/hooks/useEvent.spec.js +0 -45
- package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
- package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -135
- package/lib/hooks/useIsMaiaPageRoute.js +0 -26
- package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
- package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
- package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
- package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
- package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
- package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
- package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
- package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
- package/lib/hooks/useMentionPopover.helpers.spec.js +0 -71
- package/lib/hooks/useMentionPopover.spec.js +0 -215
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -132
- package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
- package/lib/hooks/useModal/useModal.spec.js +0 -73
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -192
- package/lib/hooks/useProjectSearch.helpers.spec.js +0 -70
- package/lib/hooks/useProjectSearch.spec.js +0 -91
- package/lib/hooks/useProjectSummary.spec.js +0 -193
- package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -92
- package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
- package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
- package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
- package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
- package/lib/hooks/useRecentContexts.spec.js +0 -139
- package/lib/hooks/useResize.spec.js +0 -37
- package/lib/hooks/useSkillsCatalog.spec.js +0 -88
- package/lib/hooks/useSlashCommands.spec.js +0 -139
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
- package/lib/hooks/useStreamResponse.spec.js +0 -199
- package/lib/hooks/useT.spec.js +0 -20
- package/lib/hooks/useToggle.spec.js +0 -33
- package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
- package/lib/services/maia/Access/updateAccess.spec.js +0 -137
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
- package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
- package/lib/services/maia/Agents/connectors.spec.js +0 -359
- package/lib/services/maia/Agents/createAgent.spec.js +0 -55
- package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
- package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
- package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
- package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -211
- package/lib/services/maia/Agents/getAgents.spec.js +0 -697
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
- package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
- package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
- package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
- package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
- package/lib/services/maia/Chats/patchChat.spec.js +0 -41
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
- package/lib/services/maia/Knowledge/delete.spec.js +0 -45
- package/lib/services/maia/Knowledge/download.spec.js +0 -78
- package/lib/services/maia/Knowledge/save.spec.js +0 -58
- package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -153
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
- package/lib/services/maia/Skills/createSkill.spec.js +0 -68
- package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
- package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
- package/lib/services/maia/Skills/getSkills.spec.js +0 -152
- package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
- package/lib/services/maia/client.spec.js +0 -56
- package/lib/services/utils/fetchCOR.spec.js +0 -211
- package/lib/services/utils/getCookie.spec.js +0 -20
- package/lib/services/utils/mapChatMessages.spec.js +0 -254
- package/lib/store/chatsSidebarOptimistic.spec.js +0 -112
- package/lib/store/maiaLastChatPersistence.spec.js +0 -22
- package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
- package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
- package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
- package/lib/store/sessions/sessionNotifications.spec.js +0 -106
- package/lib/store/sessions/sessionStreamManager.spec.js +0 -503
- package/lib/store/sessions/sessions.types.spec.js +0 -16
- package/lib/store/sessions/useSessionsStore.spec.js +0 -135
- package/lib/store/useChatsStore.spec.js +0 -619
- package/lib/store/useFaqsStore.spec.js +0 -57
- package/lib/utils/actionCategoryMap.spec.js +0 -18
- package/lib/utils/agentDisplayName.spec.js +0 -44
- package/lib/utils/autoApproveStorage.spec.js +0 -25
- package/lib/utils/chatInputFiles.spec.js +0 -39
- package/lib/utils/contextMentionIcons.spec.js +0 -41
- package/lib/utils/contextMentionLabel.spec.js +0 -13
- package/lib/utils/contextMentionTriggers.spec.js +0 -38
- package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
- package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
- package/lib/utils/entityLinkRender.spec.js +0 -72
- package/lib/utils/fileDownloadHelper.spec.js +0 -67
- package/lib/utils/formatQuickActionMessage.spec.js +0 -27
- package/lib/utils/formatUnreadCount.spec.js +0 -12
- package/lib/utils/getUnitFileSize.spec.js +0 -18
- package/lib/utils/hitlAnalytics.spec.js +0 -100
- package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
- package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
- package/lib/utils/imagePreprocessor.spec.js +0 -112
- package/lib/utils/maiaPageRoute.js +0 -24
- package/lib/utils/maiaPageRoute.spec.js +0 -23
- package/lib/utils/mapBackendLang.spec.js +0 -19
- package/lib/utils/navigateContextEntity.spec.js +0 -50
- package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
- package/lib/utils/orchestratorSubagents.spec.js +0 -32
- package/lib/utils/reasoningMappers.spec.js +0 -103
- package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
- package/lib/utils/renderContextMentions.spec.js +0 -158
- package/lib/utils/retryCompletion.spec.js +0 -99
- package/lib/utils/skillContentSize.spec.js +0 -13
- package/lib/utils/slashCommandMarker.spec.js +0 -43
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
- package/lib/utils/sseStreamContent.spec.js +0 -31
- package/lib/utils/streamActivityMessages.spec.js +0 -253
- package/lib/utils/validateTrimmedFields.spec.js +0 -26
|
@@ -20,6 +20,7 @@ import { useToggleFavorite } from '../../../hooks';
|
|
|
20
20
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
21
21
|
import { SCMABody, SCMACardBody, SCMACardButton, SCMACardFooter, SCMACardHeader, SCMACardTopRow, SCMACardIntroText, SCMACardMenu, SCMACardMenuItem, SCMACardMenuItems, SCMAFavoriteButton, SCMAFavoriteStarWrap, SCMACardFooterDate, SCMACardTitleEmoji, SCMACardTitleName, SCMACardsOuter, SCMACardsRow, SCMAEmptyStateRoot, SCMAEmptyStateColumn, SCMAEmptyStateTitleBlock, SCMAEmptyStateTitle, SCMAEmptyStateSubtitle, SCMAEmptyStateButton, SCMAKebabButton, SCMALoadMoreWrapper, SCMALogoContainer, SCMAMyAgentsContainer, SCMATitle, SCMATitleInner, SCMATitleWrap, SCMACardSkeletonItem, SCMASearchWrapper, SCMASearchInput, SCMASearchHint, SCMASearchNoResults, SCMASearchNoResultsTitle, SCMASearchNoResultsSubtitle } from './ChatAIMyAgents.styles';
|
|
22
22
|
import { MAIAIsologo } from '../../atoms/icons';
|
|
23
|
+
import { buildAgentDeleteModalChat, getAgentCreatedAtLabel, normalizeAgentIntroText, shouldAutoLoadMoreAgents, shouldDebounceAgentSearch, shouldLoadMoreAgentsOnScroll, shouldUseMaiakerEmptyStateAction } from './ChatAIMyAgents.helpers';
|
|
23
24
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
25
|
var AgentSearchInput = /*#__PURE__*/React.memo(function (_ref) {
|
|
25
26
|
var onSearch = _ref.onSearch,
|
|
@@ -36,7 +37,7 @@ var AgentSearchInput = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
36
37
|
setValue(val);
|
|
37
38
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
38
39
|
debounceRef.current = setTimeout(function () {
|
|
39
|
-
if (val
|
|
40
|
+
if (shouldDebounceAgentSearch(val)) onSearch(val);
|
|
40
41
|
}, 350);
|
|
41
42
|
}, [onSearch]);
|
|
42
43
|
useEffect(function () {
|
|
@@ -128,24 +129,18 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
|
|
|
128
129
|
}));
|
|
129
130
|
}, [eventAmplitude]);
|
|
130
131
|
var handleEmptyStatePrimaryAction = useCallback(function () {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
onGoToMaiaker();
|
|
132
|
+
if (shouldUseMaiakerEmptyStateAction(!!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS, onGoToMaiaker)) {
|
|
133
|
+
onGoToMaiaker === null || onGoToMaiaker === void 0 || onGoToMaiaker();
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
openCreateAgentModal();
|
|
137
137
|
}, [onGoToMaiaker, openCreateAgentModal]);
|
|
138
138
|
var handleLoadMore = function handleLoadMore() {
|
|
139
|
-
if (!onLoadMoreAgents
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
139
|
+
if (!onLoadMoreAgents) return;
|
|
142
140
|
onLoadMoreAgents();
|
|
143
141
|
};
|
|
144
142
|
var deleteModalChat = useMemo(function () {
|
|
145
|
-
return agentToDelete
|
|
146
|
-
title: agentToDelete.name,
|
|
147
|
-
id: agentToDelete.id
|
|
148
|
-
} : null;
|
|
143
|
+
return buildAgentDeleteModalChat(agentToDelete);
|
|
149
144
|
}, [agentToDelete]);
|
|
150
145
|
var handleUseAgent = function handleUseAgent(agent) {
|
|
151
146
|
setProject(null);
|
|
@@ -154,23 +149,16 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
|
|
|
154
149
|
selectAgent(agent);
|
|
155
150
|
onBack();
|
|
156
151
|
};
|
|
157
|
-
var normalizeText = function normalizeText(value) {
|
|
158
|
-
if (Array.isArray(value)) return value[0] || '';
|
|
159
|
-
return value || '';
|
|
160
|
-
};
|
|
161
152
|
var getCreatedAtLabel = function getCreatedAtLabel(agent) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return t('marketplace.myAgentsDaysAgo', {
|
|
172
|
-
days: days
|
|
173
|
-
});
|
|
153
|
+
return getAgentCreatedAtLabel(agent, {
|
|
154
|
+
today: t('marketplace.myAgentsToday'),
|
|
155
|
+
oneDayAgo: t('marketplace.myAgentsOneDayAgo'),
|
|
156
|
+
daysAgo: function daysAgo(days) {
|
|
157
|
+
return t('marketplace.myAgentsDaysAgo', {
|
|
158
|
+
days: days
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}, Date.now());
|
|
174
162
|
};
|
|
175
163
|
var handleOpenEditAgent = function handleOpenEditAgent(agent) {
|
|
176
164
|
document.dispatchEvent(new CustomEvent('abm-agent-modal-set-values', {
|
|
@@ -248,12 +236,16 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
|
|
|
248
236
|
return undefined;
|
|
249
237
|
}
|
|
250
238
|
var onScroll = function onScroll() {
|
|
251
|
-
if (!hasMoreAgents || loadingMoreAgents) return;
|
|
252
239
|
var scrollTop = container.scrollTop,
|
|
253
240
|
clientHeight = container.clientHeight,
|
|
254
241
|
scrollHeight = container.scrollHeight;
|
|
255
|
-
|
|
256
|
-
|
|
242
|
+
if (shouldLoadMoreAgentsOnScroll({
|
|
243
|
+
scrollTop: scrollTop,
|
|
244
|
+
clientHeight: clientHeight,
|
|
245
|
+
scrollHeight: scrollHeight,
|
|
246
|
+
hasMoreAgents: hasMoreAgents,
|
|
247
|
+
loadingMoreAgents: loadingMoreAgents
|
|
248
|
+
})) {
|
|
257
249
|
handleLoadMore();
|
|
258
250
|
}
|
|
259
251
|
};
|
|
@@ -267,7 +259,12 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
|
|
|
267
259
|
if (!container || !hasMoreAgents || loadingMoreAgents) {
|
|
268
260
|
return undefined;
|
|
269
261
|
}
|
|
270
|
-
if (
|
|
262
|
+
if (shouldAutoLoadMoreAgents({
|
|
263
|
+
scrollHeight: container.scrollHeight,
|
|
264
|
+
clientHeight: container.clientHeight,
|
|
265
|
+
hasMoreAgents: hasMoreAgents,
|
|
266
|
+
loadingMoreAgents: loadingMoreAgents
|
|
267
|
+
})) {
|
|
271
268
|
handleLoadMore();
|
|
272
269
|
}
|
|
273
270
|
return undefined;
|
|
@@ -361,7 +358,7 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
|
|
|
361
358
|
})]
|
|
362
359
|
}), /*#__PURE__*/_jsxs(SCMACardBody, {
|
|
363
360
|
children: [/*#__PURE__*/_jsx(SCMACardIntroText, {
|
|
364
|
-
children:
|
|
361
|
+
children: normalizeAgentIntroText(agent.introduction)
|
|
365
362
|
}), /*#__PURE__*/_jsxs(SCMACardFooter, {
|
|
366
363
|
children: [/*#__PURE__*/_jsx(SCMACardFooterDate, {
|
|
367
364
|
children: getCreatedAtLabel(agent) || t('marketplace.myAgentsFallbackDate')
|
|
@@ -454,4 +451,4 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
|
|
|
454
451
|
}) : null]
|
|
455
452
|
});
|
|
456
453
|
};
|
|
457
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJTdGFyIiwiVG9vbHRpcCIsInVzZVRyYW5zbGF0aW9uIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJkZWxldGVBZ2VudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTRUNUSU9OUyIsIkxvYWRlciIsIkZhZGUiLCJTa2VsZXRvbiIsInVzZVRvZ2dsZUZhdm9yaXRlIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJTQ01BQm9keSIsIlNDTUFDYXJkQm9keSIsIlNDTUFDYXJkQnV0dG9uIiwiU0NNQUNhcmRGb290ZXIiLCJTQ01BQ2FyZEhlYWRlciIsIlNDTUFDYXJkVG9wUm93IiwiU0NNQUNhcmRJbnRyb1RleHQiLCJTQ01BQ2FyZE1lbnUiLCJTQ01BQ2FyZE1lbnVJdGVtIiwiU0NNQUNhcmRNZW51SXRlbXMiLCJTQ01BRmF2b3JpdGVCdXR0b24iLCJTQ01BRmF2b3JpdGVTdGFyV3JhcCIsIlNDTUFDYXJkRm9vdGVyRGF0ZSIsIlNDTUFDYXJkVGl0bGVFbW9qaSIsIlNDTUFDYXJkVGl0bGVOYW1lIiwiU0NNQUNhcmRzT3V0ZXIiLCJTQ01BQ2FyZHNSb3ciLCJTQ01BRW1wdHlTdGF0ZVJvb3QiLCJTQ01BRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTUFFbXB0eVN0YXRlVGl0bGVCbG9jayIsIlNDTUFFbXB0eVN0YXRlVGl0bGUiLCJTQ01BRW1wdHlTdGF0ZVN1YnRpdGxlIiwiU0NNQUVtcHR5U3RhdGVCdXR0b24iLCJTQ01BS2ViYWJCdXR0b24iLCJTQ01BTG9hZE1vcmVXcmFwcGVyIiwiU0NNQUxvZ29Db250YWluZXIiLCJTQ01BTXlBZ2VudHNDb250YWluZXIiLCJTQ01BVGl0bGUiLCJTQ01BVGl0bGVJbm5lciIsIlNDTUFUaXRsZVdyYXAiLCJTQ01BQ2FyZFNrZWxldG9uSXRlbSIsIlNDTUFTZWFyY2hXcmFwcGVyIiwiU0NNQVNlYXJjaElucHV0IiwiU0NNQVNlYXJjaEhpbnQiLCJTQ01BU2VhcmNoTm9SZXN1bHRzIiwiU0NNQVNlYXJjaE5vUmVzdWx0c1RpdGxlIiwiU0NNQVNlYXJjaE5vUmVzdWx0c1N1YnRpdGxlIiwiTUFJQUlzb2xvZ28iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQWdlbnRTZWFyY2hJbnB1dCIsIm1lbW8iLCJfcmVmIiwib25TZWFyY2giLCJwbGFjZWhvbGRlciIsImhpbnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZSIsInNldFZhbHVlIiwiZGVib3VuY2VSZWYiLCJzaG93SGludCIsImxlbmd0aCIsImhhbmRsZUNoYW5nZSIsImUiLCJ2YWwiLCJ0YXJnZXQiLCJjdXJyZW50IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsInR5cGUiLCJvbkNoYW5nZSIsIkNoYXRBSU15QWdlbnRzIiwiX3JlZjIiLCJfdXNlciRwZXJtaXNzaW9ucyIsIm9uQmFjayIsImFnZW50cyIsIm9uRGVsZXRlQWdlbnQiLCJvbkZhdm9yaXRlQWdlbnRVcGRhdGUiLCJfcmVmMiRoYXNNb3JlQWdlbnRzIiwiaGFzTW9yZUFnZW50cyIsIl9yZWYyJGxvYWRpbmdNb3JlQWdlbiIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvblNlYXJjaEFnZW50cyIsIl9yZWYyJHNlYXJjaExvYWRpbmdBZyIsInNlYXJjaExvYWRpbmdBZ2VudHMiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJjdXN0b21BZ2VudHMiLCJmaWx0ZXIiLCJhZ2VudCIsImlzX2RlbGV0ZWQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIm1lbnVPcGVuRm9yQWdlbnRJZCIsInNldE1lbnVPcGVuRm9yQWdlbnRJZCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiYWdlbnRUb0RlbGV0ZSIsInNldEFnZW50VG9EZWxldGUiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50IiwiY3JlYXRlIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImNhbkVkaXQiLCJlZGl0IiwiY2FuRGVsZXRlIiwiY2FuU2hvd01lbnUiLCJfdXNlVG9nZ2xlRmF2b3JpdGUiLCJ0b2dnbGVGYXZvcml0ZSIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc1NlYXJjaEFjdGl2ZSIsInNldElzU2VhcmNoQWN0aXZlIiwiaGFuZGxlU2VhcmNoQWdlbnRzIiwicXVlcnkiLCJvcGVuQ3JlYXRlQWdlbnRNb2RhbCIsIm9wZW5Nb2RhbCIsIm9wdGlvbiIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iLCJoYW5kbGVFbXB0eVN0YXRlUHJpbWFyeUFjdGlvbiIsInVzZU1hcmtldHBsYWNlIiwiaGFuZGxlTG9hZE1vcmUiLCJkZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsIm5hbWUiLCJpZCIsImhhbmRsZVVzZUFnZW50Iiwibm9ybWFsaXplVGV4dCIsIkFycmF5IiwiaXNBcnJheSIsImdldENyZWF0ZWRBdExhYmVsIiwiY3JlYXRlZEF0IiwiY3JlYXRlZF9hdCIsImNyZWF0ZWRBdERhdGUiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiZGlmZk1zIiwibm93IiwiZGF5TXMiLCJkYXlzIiwiTWF0aCIsIm1heCIsImZsb29yIiwiaGFuZGxlT3BlbkVkaXRBZ2VudCIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsImV2ZW50IiwiaXNGYXZvcml0ZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidXBkYXRlZEFnZW50IiwidW5kZWZpbmVkIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjaGF0IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIm5zIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVDbGlja091dHNpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwib25TY3JvbGwiLCJzY3JvbGxUb3AiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJuZWFyQm90dG9tIiwiJGhhc0FnZW50cyIsIiRjYW5DcmVhdGVBZ2VudCIsImZyb20iLCJtYXAiLCJfIiwiaSIsInZhcmlhbnQiLCJpbmRleCIsIl9hZ2VudCRlbW9qaSIsIiRpbmRleCIsIm9uQ2xpY2siLCJlbW9qaSIsInRyaW0iLCJpbnRyb2R1Y3Rpb24iLCJpc19mYXZvcml0ZSIsIiRhbHdheXNWaXNpYmxlIiwiZmlsbCIsImNsYXNzTmFtZSIsInNpemUiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiYWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU15QWdlbnRzL0NoYXRBSU15QWdlbnRzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1NlYXJjaCdcbmltcG9ydCB7IFN0YXIgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9TdGFyJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBkZWxldGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2RlbGV0ZUFnZW50J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgRmFkZSB9IGZyb20gJy4uLy4uL2F0b21zL0ZhZGUnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uLy4uL2F0b21zL1NrZWxldG9uL1NrZWxldG9uJ1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIFNDTUFCb2R5LFxuICBTQ01BQ2FyZEJvZHksXG4gIFNDTUFDYXJkQnV0dG9uLFxuICBTQ01BQ2FyZEZvb3RlcixcbiAgU0NNQUNhcmRIZWFkZXIsXG4gIFNDTUFDYXJkVG9wUm93LFxuICBTQ01BQ2FyZEludHJvVGV4dCxcbiAgU0NNQUNhcmRNZW51LFxuICBTQ01BQ2FyZE1lbnVJdGVtLFxuICBTQ01BQ2FyZE1lbnVJdGVtcyxcbiAgU0NNQUZhdm9yaXRlQnV0dG9uLFxuICBTQ01BRmF2b3JpdGVTdGFyV3JhcCxcbiAgU0NNQUNhcmRGb290ZXJEYXRlLFxuICBTQ01BQ2FyZFRpdGxlRW1vamksXG4gIFNDTUFDYXJkVGl0bGVOYW1lLFxuICBTQ01BQ2FyZHNPdXRlcixcbiAgU0NNQUNhcmRzUm93LFxuICBTQ01BRW1wdHlTdGF0ZVJvb3QsXG4gIFNDTUFFbXB0eVN0YXRlQ29sdW1uLFxuICBTQ01BRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTUFFbXB0eVN0YXRlVGl0bGUsXG4gIFNDTUFFbXB0eVN0YXRlU3VidGl0bGUsXG4gIFNDTUFFbXB0eVN0YXRlQnV0dG9uLFxuICBTQ01BS2ViYWJCdXR0b24sXG4gIFNDTUFMb2FkTW9yZVdyYXBwZXIsXG4gIFNDTUFMb2dvQ29udGFpbmVyLFxuICBTQ01BTXlBZ2VudHNDb250YWluZXIsXG4gIFNDTUFUaXRsZSxcbiAgU0NNQVRpdGxlSW5uZXIsXG4gIFNDTUFUaXRsZVdyYXAsXG4gIFNDTUFDYXJkU2tlbGV0b25JdGVtLFxuICBTQ01BU2VhcmNoV3JhcHBlcixcbiAgU0NNQVNlYXJjaElucHV0LFxuICBTQ01BU2VhcmNoSGludCxcbiAgU0NNQVNlYXJjaE5vUmVzdWx0cyxcbiAgU0NNQVNlYXJjaE5vUmVzdWx0c1RpdGxlLFxuICBTQ01BU2VhcmNoTm9SZXN1bHRzU3VidGl0bGUsXG59IGZyb20gJy4vQ2hhdEFJTXlBZ2VudHMuc3R5bGVzJ1xuaW1wb3J0IHsgTUFJQUlzb2xvZ28gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcblxuY29uc3QgQWdlbnRTZWFyY2hJbnB1dCA9IFJlYWN0Lm1lbW8oXG4gICh7IG9uU2VhcmNoLCBwbGFjZWhvbGRlciwgaGludCB9OiB7IG9uU2VhcmNoOiAocTogc3RyaW5nKSA9PiB2b2lkOyBwbGFjZWhvbGRlcjogc3RyaW5nOyBoaW50OiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuICAgIGNvbnN0IHNob3dIaW50ID0gdmFsdWUubGVuZ3RoID4gMCAmJiB2YWx1ZS5sZW5ndGggPCAzXG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgICBjb25zdCB7IHZhbHVlOiB2YWwgfSA9IGUudGFyZ2V0XG4gICAgICAgIHNldFZhbHVlKHZhbClcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgICBkZWJvdW5jZVJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsLmxlbmd0aCA+PSAzKSBvblNlYXJjaCh2YWwpXG4gICAgICAgIH0sIDM1MClcbiAgICAgIH0sXG4gICAgICBbb25TZWFyY2hdXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICB9LFxuICAgICAgW11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTUFTZWFyY2hXcmFwcGVyPlxuICAgICAgICA8U2VhcmNoIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9XCIjOTk5XCIgLz5cbiAgICAgICAgPFNDTUFTZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfSAvPlxuICAgICAgICB7c2hvd0hpbnQgPyA8U0NNQVNlYXJjaEhpbnQ+e2hpbnR9PC9TQ01BU2VhcmNoSGludD4gOiBudWxsfVxuICAgICAgPC9TQ01BU2VhcmNoV3JhcHBlcj5cbiAgICApXG4gIH1cbilcblxudHlwZSBDaGF0QUlNeUFnZW50c1Byb3BzID0ge1xuICBvbkJhY2s6ICgpID0+IHZvaWRcbiAgYWdlbnRzOiBBZ2VudFtdXG4gIG9uRGVsZXRlQWdlbnQ/OiAoYWdlbnRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT86IChhZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgaGFzTW9yZUFnZW50cz86IGJvb2xlYW5cbiAgbG9hZGluZ01vcmVBZ2VudHM/OiBib29sZWFuXG4gIG9uTG9hZE1vcmVBZ2VudHM/OiAoKSA9PiB2b2lkXG4gIG9uR29Ub01haWFrZXI/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuICBvblNlYXJjaEFnZW50cz86IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkXG4gIHNlYXJjaExvYWRpbmdBZ2VudHM/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNeUFnZW50cyA9ICh7XG4gIG9uQmFjayxcbiAgYWdlbnRzLFxuICBvbkRlbGV0ZUFnZW50LFxuICBvbkZhdm9yaXRlQWdlbnRVcGRhdGUsXG4gIGhhc01vcmVBZ2VudHMgPSBmYWxzZSxcbiAgbG9hZGluZ01vcmVBZ2VudHMgPSBmYWxzZSxcbiAgb25Mb2FkTW9yZUFnZW50cyxcbiAgb25Hb1RvTWFpYWtlcixcbiAgb25TZWFyY2hBZ2VudHMsXG4gIHNlYXJjaExvYWRpbmdBZ2VudHMgPSBmYWxzZSxcbn06IENoYXRBSU15QWdlbnRzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJLCBTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG4gIGNvbnN0IGN1c3RvbUFnZW50cyA9IGFnZW50cy5maWx0ZXIoYWdlbnQgPT4gYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgJiYgIWFnZW50LmlzX2RlbGV0ZWQpXG4gIGNvbnN0IFttZW51T3BlbkZvckFnZW50SWQsIHNldE1lbnVPcGVuRm9yQWdlbnRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbYWdlbnRUb0RlbGV0ZSwgc2V0QWdlbnRUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnQgPSAhIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgY2FuRWRpdCA9ICEhdXNlclBlcm1pc3Npb25zPy5lZGl0ICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgY2FuRGVsZXRlID0gISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhblNob3dNZW51ID0gY2FuRWRpdCB8fCBjYW5EZWxldGVcbiAgY29uc3QgeyB0b2dnbGVGYXZvcml0ZSB9ID0gdXNlVG9nZ2xlRmF2b3JpdGUoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgW2lzU2VhcmNoQWN0aXZlLCBzZXRJc1NlYXJjaEFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBoYW5kbGVTZWFyY2hBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICAocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgc2V0SXNTZWFyY2hBY3RpdmUocXVlcnkgIT09ICcnKVxuICAgICAgb25TZWFyY2hBZ2VudHM/LihxdWVyeSlcbiAgICB9LFxuICAgIFtvblNlYXJjaEFnZW50c11cbiAgKVxuXG4gIGNvbnN0IG9wZW5DcmVhdGVBZ2VudE1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5vcGVuTW9kYWwsIHsgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgIGlzRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIClcbiAgfSwgW2V2ZW50QW1wbGl0dWRlXSlcblxuICBjb25zdCBoYW5kbGVFbXB0eVN0YXRlUHJpbWFyeUFjdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB1c2VNYXJrZXRwbGFjZSA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgdHlwZW9mIG9uR29Ub01haWFrZXIgPT09ICdmdW5jdGlvbidcbiAgICBpZiAodXNlTWFya2V0cGxhY2UpIHtcbiAgICAgIG9uR29Ub01haWFrZXIoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9wZW5DcmVhdGVBZ2VudE1vZGFsKClcbiAgfSwgW29uR29Ub01haWFrZXIsIG9wZW5DcmVhdGVBZ2VudE1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVMb2FkTW9yZSA9ICgpID0+IHtcbiAgICBpZiAoIW9uTG9hZE1vcmVBZ2VudHMgfHwgIWhhc01vcmVBZ2VudHMgfHwgbG9hZGluZ01vcmVBZ2VudHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvbkxvYWRNb3JlQWdlbnRzKClcbiAgfVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKGFnZW50VG9EZWxldGUgPyB7IHRpdGxlOiBhZ2VudFRvRGVsZXRlLm5hbWUsIGlkOiBhZ2VudFRvRGVsZXRlLmlkIH0gOiBudWxsKSxcbiAgICBbYWdlbnRUb0RlbGV0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVVzZUFnZW50ID0gKGFnZW50OiBBZ2VudCkgPT4ge1xuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2sobnVsbClcbiAgICBzZWxlY3RBZ2VudChhZ2VudClcbiAgICBvbkJhY2soKVxuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplVGV4dCA9ICh2YWx1ZT86IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlWzBdIHx8ICcnXG4gICAgcmV0dXJuIHZhbHVlIHx8ICcnXG4gIH1cblxuICBjb25zdCBnZXRDcmVhdGVkQXRMYWJlbCA9IChhZ2VudDogQWdlbnQpID0+IHtcbiAgICBjb25zdCBjcmVhdGVkQXQgPSAoYWdlbnQgYXMgQWdlbnQgJiB7IGNyZWF0ZWRfYXQ/OiBzdHJpbmcgfSkuY3JlYXRlZF9hdFxuICAgIGlmICghY3JlYXRlZEF0KSByZXR1cm4gJydcblxuICAgIGNvbnN0IGNyZWF0ZWRBdERhdGUgPSBuZXcgRGF0ZShjcmVhdGVkQXQpXG4gICAgaWYgKE51bWJlci5pc05hTihjcmVhdGVkQXREYXRlLmdldFRpbWUoKSkpIHJldHVybiAnJ1xuXG4gICAgY29uc3QgZGlmZk1zID0gRGF0ZS5ub3coKSAtIGNyZWF0ZWRBdERhdGUuZ2V0VGltZSgpXG4gICAgY29uc3QgZGF5TXMgPSAxMDAwICogNjAgKiA2MCAqIDI0XG4gICAgY29uc3QgZGF5cyA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoZGlmZk1zIC8gZGF5TXMpKVxuXG4gICAgaWYgKGRheXMgPT09IDApIHJldHVybiB0KCdtYXJrZXRwbGFjZS5teUFnZW50c1RvZGF5JylcbiAgICBpZiAoZGF5cyA9PT0gMSkgcmV0dXJuIHQoJ21hcmtldHBsYWNlLm15QWdlbnRzT25lRGF5QWdvJylcbiAgICByZXR1cm4gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNEYXlzQWdvJywgeyBkYXlzIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuRWRpdEFnZW50ID0gKGFnZW50OiBBZ2VudCkgPT4ge1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAga25vd2xlZGdlOiBhZ2VudD8ua25vd2xlZGdlIHx8IFtdLFxuICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogYWdlbnQubmFtZSxcbiAgICAgICAgICAgICAgICBpZDogYWdlbnQuaWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIClcbiAgICBzZXRNZW51T3BlbkZvckFnZW50SWQobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PiwgYWdlbnQ6IEFnZW50LCBpc0Zhdm9yaXRlOiBib29sZWFuKSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgIGFnZW50LmlkLFxuICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgb25GYXZvcml0ZUFnZW50VXBkYXRlPy4odXBkYXRlZEFnZW50KVxuICAgICAgfSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGlzRmF2b3JpdGVcbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25maXJtRGVsZXRlID0gYXN5bmMgKGNoYXQ6IHsgaWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZUFnZW50KGNoYXQuaWQpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50RGVsZXRlZCcsIHsgbnM6IFNFQ1RJT05TLmFibUFnZW50IH0pKVxuICAgICAgb25EZWxldGVBZ2VudD8uKGNoYXQuaWQpXG4gICAgICBzZXRBZ2VudFRvRGVsZXRlKG51bGwpXG4gICAgICBzZXRNZW51T3BlbkZvckFnZW50SWQobnVsbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFnZW50Q3JlYXRlZCcsIHsgbnM6IFNFQ1RJT05TLmFibUFnZW50IH0pKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKCkgPT4ge1xuICAgICAgaWYgKG1lbnVPcGVuRm9yQWdlbnRJZCkge1xuICAgICAgICBzZXRNZW51T3BlbkZvckFnZW50SWQobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbbWVudU9wZW5Gb3JBZ2VudElkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1hZ2VudHMtc2Nyb2xsLWNvbnRhaW5lcicpXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBvblNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghaGFzTW9yZUFnZW50cyB8fCBsb2FkaW5nTW9yZUFnZW50cykgcmV0dXJuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgY2xpZW50SGVpZ2h0LCBzY3JvbGxIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgICAgY29uc3QgbmVhckJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSA0MFxuICAgICAgaWYgKG5lYXJCb3R0b20pIHtcbiAgICAgICAgaGFuZGxlTG9hZE1vcmUoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxuICAgIH1cbiAgfSwgW2hhc01vcmVBZ2VudHMsIGxvYWRpbmdNb3JlQWdlbnRzLCBvbkxvYWRNb3JlQWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteS1hZ2VudHMtc2Nyb2xsLWNvbnRhaW5lcicpXG4gICAgaWYgKCFjb250YWluZXIgfHwgIWhhc01vcmVBZ2VudHMgfHwgbG9hZGluZ01vcmVBZ2VudHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbmVyLnNjcm9sbEhlaWdodCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMSkge1xuICAgICAgaGFuZGxlTG9hZE1vcmUoKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFtjdXN0b21BZ2VudHMubGVuZ3RoLCBoYXNNb3JlQWdlbnRzLCBsb2FkaW5nTW9yZUFnZW50cywgb25Mb2FkTW9yZUFnZW50c10pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNQU15QWdlbnRzQ29udGFpbmVyIGlkPVwibXktYWdlbnRzLXNjcm9sbC1jb250YWluZXJcIiAkaGFzQWdlbnRzPXshIWN1c3RvbUFnZW50cy5sZW5ndGggfHwgaXNTZWFyY2hBY3RpdmV9PlxuICAgICAgPFNDTUFMb2dvQ29udGFpbmVyPlxuICAgICAgICA8TUFJQUlzb2xvZ28gLz5cbiAgICAgIDwvU0NNQUxvZ29Db250YWluZXI+XG5cbiAgICAgIDxTQ01BQm9keSAkY2FuQ3JlYXRlQWdlbnQ9e2NhbkNyZWF0ZUFnZW50fT5cbiAgICAgICAge2N1c3RvbUFnZW50cy5sZW5ndGggfHwgaXNTZWFyY2hBY3RpdmUgPyAoXG4gICAgICAgICAgPFNDTUFUaXRsZVdyYXA+XG4gICAgICAgICAgICA8U0NNQVRpdGxlSW5uZXI+XG4gICAgICAgICAgICAgIDxTQ01BVGl0bGU+e3QoJ21hcmtldHBsYWNlLm15QWdlbnRzUmVhZHlUaXRsZScpfTwvU0NNQVRpdGxlPlxuICAgICAgICAgICAgPC9TQ01BVGl0bGVJbm5lcj5cbiAgICAgICAgICAgIHtvblNlYXJjaEFnZW50cyA/IChcbiAgICAgICAgICAgICAgPEFnZW50U2VhcmNoSW5wdXRcbiAgICAgICAgICAgICAgICBvblNlYXJjaD17aGFuZGxlU2VhcmNoQWdlbnRzfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdtYXJrZXRwbGFjZS5zZWFyY2hBZ2VudFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgaGludD17dCgnbWFya2V0cGxhY2Uuc2VhcmNoTWluTGVuZ3RoJyl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDTUFUaXRsZVdyYXA+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHtzZWFyY2hMb2FkaW5nQWdlbnRzID8gKFxuICAgICAgICAgIDxTQ01BQ2FyZHNPdXRlcj5cbiAgICAgICAgICAgIDxTQ01BQ2FyZHNSb3c+XG4gICAgICAgICAgICAgIHtBcnJheS5mcm9tKHsgbGVuZ3RoOiA2IH0pLm1hcCgoXywgaSkgPT4gKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICA8U0NNQUNhcmRTa2VsZXRvbkl0ZW0ga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiY2lyY3VsYXJcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cInRleHRcIiBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgaGVpZ2h0PXsxNH0gd2lkdGg9XCI3NSVcIiAvPlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgaGVpZ2h0PXsxMn0gLz5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwidGV4dFwiIGhlaWdodD17MTJ9IHdpZHRoPVwiODUlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwidGV4dFwiIGhlaWdodD17MTF9IHdpZHRoPVwiNDAlXCIgLz5cbiAgICAgICAgICAgICAgICA8L1NDTUFDYXJkU2tlbGV0b25JdGVtPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NNQUNhcmRzUm93PlxuICAgICAgICAgIDwvU0NNQUNhcmRzT3V0ZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IXNlYXJjaExvYWRpbmdBZ2VudHMgJiYgY3VzdG9tQWdlbnRzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNQUNhcmRzT3V0ZXI+XG4gICAgICAgICAgICA8U0NNQUNhcmRzUm93PlxuICAgICAgICAgICAgICB7Y3VzdG9tQWdlbnRzLm1hcCgoYWdlbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPFNDTUFDYXJkQnV0dG9uIGtleT17YWdlbnQuaWR9ICRpbmRleD17aW5kZXh9IHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVVc2VBZ2VudChhZ2VudCl9PlxuICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkVGl0bGVFbW9qaSBhcmlhLWhpZGRlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHthZ2VudC5lbW9qaT8udHJpbSgpID8gYWdlbnQuZW1vamkgOiAnXFx1MDBhMCd9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZFRpdGxlRW1vamk+XG4gICAgICAgICAgICAgICAgICAgICAge2NhblNob3dNZW51ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTUFLZWJhYkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbWFya2V0cGxhY2UuY2FyZE1lbnVBcmlhTGFiZWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1lbnVPcGVuRm9yQWdlbnRJZChwcmV2ID0+IChwcmV2ID09PSBhZ2VudC5pZCA/IG51bGwgOiBhZ2VudC5pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM5OTlcIiB3aWR0aD17MTV9IGhlaWdodD17MTV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFLZWJhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkVGl0bGVOYW1lPnthZ2VudC5uYW1lfTwvU0NNQUNhcmRUaXRsZU5hbWU+XG4gICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkSW50cm9UZXh0Pntub3JtYWxpemVUZXh0KGFnZW50LmludHJvZHVjdGlvbil9PC9TQ01BQ2FyZEludHJvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZEZvb3RlckRhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q3JlYXRlZEF0TGFiZWwoYWdlbnQpIHx8IHQoJ21hcmtldHBsYWNlLm15QWdlbnRzRmFsbGJhY2tEYXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEZvb3RlckRhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2FnZW50LmlzX2Zhdm9yaXRlID8gdCgnYWdlbnRzLnJlbW92ZUZhdm9yaXRlJykgOiB0KCdhZ2VudHMuYWRkRmF2b3JpdGUnKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUZhdm9yaXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXthZ2VudC5pc19mYXZvcml0ZSA/IHQoJ2FnZW50cy5yZW1vdmVGYXZvcml0ZScpIDogdCgnYWdlbnRzLmFkZEZhdm9yaXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRhbHdheXNWaXNpYmxlPXshIWFnZW50LmlzX2Zhdm9yaXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVUb2dnbGVGYXZvcml0ZShldmVudCwgYWdlbnQsICEhYWdlbnQuaXNfZmF2b3JpdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUZhdm9yaXRlU3RhcldyYXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YWdlbnQuaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnIzk5OSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPXthZ2VudC5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICdub25lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2FnZW50LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFGYXZvcml0ZVN0YXJXcmFwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BRmF2b3JpdGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICB7bWVudU9wZW5Gb3JBZ2VudElkID09PSBhZ2VudC5pZCAmJiBjYW5TaG93TWVudSA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkTWVudVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZE1lbnVJdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5FZGl0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5FZGl0QWdlbnQoYWdlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdlZGl0JywgeyBuczogU0VDVElPTlMuYWJtQWdlbnQgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbkRlbGV0ZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBZ2VudFRvRGVsZXRlKGFnZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnZGVsZXRlJywgeyBuczogU0VDVElPTlMuYWJtQWdlbnQgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51SXRlbXM+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEJ1dHRvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDTUFDYXJkc1Jvdz5cbiAgICAgICAgICA8L1NDTUFDYXJkc091dGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFzZWFyY2hMb2FkaW5nQWdlbnRzICYmICFjdXN0b21BZ2VudHMubGVuZ3RoICYmIGlzU2VhcmNoQWN0aXZlID8gKFxuICAgICAgICAgIDxTQ01BU2VhcmNoTm9SZXN1bHRzPlxuICAgICAgICAgICAgPFNDTUFTZWFyY2hOb1Jlc3VsdHNUaXRsZT57dCgnbWFya2V0cGxhY2Uuc2VhcmNoTm9SZXN1bHRzJyl9PC9TQ01BU2VhcmNoTm9SZXN1bHRzVGl0bGU+XG4gICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnQgPyAoXG4gICAgICAgICAgICAgIDxTQ01BU2VhcmNoTm9SZXN1bHRzU3VidGl0bGU+e3QoJ21hcmtldHBsYWNlLnNlYXJjaE5vUmVzdWx0c1N1YnRpdGxlJyl9PC9TQ01BU2VhcmNoTm9SZXN1bHRzU3VidGl0bGU+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDTUFTZWFyY2hOb1Jlc3VsdHM+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IXNlYXJjaExvYWRpbmdBZ2VudHMgJiYgIWN1c3RvbUFnZW50cy5sZW5ndGggJiYgIWlzU2VhcmNoQWN0aXZlID8gKFxuICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgICA8U0NNQUVtcHR5U3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlVGl0bGU+e3QoJ21hcmtldHBsYWNlLm15QWdlbnRzRW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01BRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAge2NhbkNyZWF0ZUFnZW50XG4gICAgICAgICAgICAgICAgICAgID8gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNFbXB0eVN0YXRlRGVzY3JpcHRpb24nKVxuICAgICAgICAgICAgICAgICAgICA6IHQoJ21hcmtldHBsYWNlLm15QWdlbnRzRW1wdHlTdGF0ZURlc2NyaXB0aW9uTm9QZXJtJyl9XG4gICAgICAgICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L1NDTUFFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgIDwvU0NNQUVtcHR5U3RhdGVDb2x1bW4+XG4gICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnQgPyAoXG4gICAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlRW1wdHlTdGF0ZVByaW1hcnlBY3Rpb259PlxuICAgICAgICAgICAgICAgIHt0KCdtYXJrZXRwbGFjZS5teUFnZW50c0VtcHR5U3RhdGVCdXR0b24nKX1cbiAgICAgICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNQUVtcHR5U3RhdGVSb290PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge2xvYWRpbmdNb3JlQWdlbnRzID8gKFxuICAgICAgICAgIDxTQ01BTG9hZE1vcmVXcmFwcGVyPlxuICAgICAgICAgICAgPEZhZGU+XG4gICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgIDwvRmFkZT5cbiAgICAgICAgICA8L1NDTUFMb2FkTW9yZVdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ01BQm9keT5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QWdlbnRUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBhY3Rpb249XCJhZ2VudFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTUFNeUFnZW50c0NvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEYsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFDbEUsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUVuRCxTQUFTQyxXQUFXLFFBQVEsMkNBQTJDO0FBQ3ZFLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxtQkFBbUIs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cEIsSUFBSSxFQUNQLENBQUNKLG1CQUFtQixJQUFJLENBQUNjLFlBQVksQ0FBQzNDLE1BQU0sSUFBSSxDQUFDdUUsY0FBYyxnQkFDOURyRixLQUFBLENBQUN4QixrQkFBa0I7UUFBQThDLFFBQUEsZ0JBQ2pCeEIsSUFBQSxDQUFDckIsb0JBQW9CO1VBQUE2QyxRQUFBLGVBQ25CdEIsS0FBQSxDQUFDdEIsd0JBQXdCO1lBQUE0QyxRQUFBLGdCQUN2QnhCLElBQUEsQ0FBQ25CLG1CQUFtQjtjQUFBMkMsUUFBQSxFQUFFeUIsQ0FBQyxDQUFDLHFDQUFxQztZQUFDLENBQXNCLENBQUMsZUFDckZqRCxJQUFBLENBQUNsQixzQkFBc0I7Y0FBQTBDLFFBQUEsRUFDcEJrRCxjQUFjLEdBQ1h6QixDQUFDLENBQUMsMkNBQTJDLENBQUMsR0FDOUNBLENBQUMsQ0FBQyxpREFBaUQ7WUFBQyxDQUNsQyxDQUFDO1VBQUEsQ0FDRDtRQUFDLENBQ1AsQ0FBQyxFQUN0QnlCLGNBQWMsZ0JBQ2IxRSxJQUFBLENBQUNqQixvQkFBb0I7VUFBQzZDLElBQUksRUFBQyxRQUFRO1VBQUNtSixPQUFPLEVBQUV6RSw2QkFBOEI7VUFBQTlFLFFBQUEsRUFDeEV5QixDQUFDLENBQUMsc0NBQXNDO1FBQUMsQ0FDdEIsQ0FBQyxHQUNyQixJQUFJO01BQUEsQ0FDVSxDQUFDLEdBQ25CLElBQUksRUFDUFQsaUJBQWlCLGdCQUNoQnhDLElBQUEsQ0FBQ2YsbUJBQW1CO1FBQUF1QyxRQUFBLGVBQ2xCeEIsSUFBQSxDQUFDNUMsSUFBSTtVQUFBb0UsUUFBQSxlQUNIeEIsSUFBQSxDQUFDN0MsTUFBTTtZQUFDb08sSUFBSSxFQUFDO1VBQU8sQ0FBRTtRQUFDLENBQ25CO01BQUMsQ0FDWSxDQUFDLEdBQ3BCLElBQUk7SUFBQSxDQUNBLENBQUMsRUFDVjlFLGVBQWUsZ0JBQ2R6RyxJQUFBLENBQUMvQyxtQkFBbUI7TUFDbEJ1TyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtRQUFBLE9BQVFsSCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFBQSxDQUFDO01BQ3RDbUgsUUFBUSxFQUFFO1FBQ1JDLG1CQUFtQixFQUFFaEQ7TUFDdkIsQ0FBRTtNQUNGTSxJQUFJLEVBQUV2QyxlQUFnQjtNQUN0QmtGLE1BQU0sRUFBQztJQUFPLENBQ2YsQ0FBQyxHQUNBLElBQUk7RUFBQSxDQUNhLENBQUM7QUFFNUIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
454
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJTdGFyIiwiVG9vbHRpcCIsInVzZVRyYW5zbGF0aW9uIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJkZWxldGVBZ2VudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTRUNUSU9OUyIsIkxvYWRlciIsIkZhZGUiLCJTa2VsZXRvbiIsInVzZVRvZ2dsZUZhdm9yaXRlIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJTQ01BQm9keSIsIlNDTUFDYXJkQm9keSIsIlNDTUFDYXJkQnV0dG9uIiwiU0NNQUNhcmRGb290ZXIiLCJTQ01BQ2FyZEhlYWRlciIsIlNDTUFDYXJkVG9wUm93IiwiU0NNQUNhcmRJbnRyb1RleHQiLCJTQ01BQ2FyZE1lbnUiLCJTQ01BQ2FyZE1lbnVJdGVtIiwiU0NNQUNhcmRNZW51SXRlbXMiLCJTQ01BRmF2b3JpdGVCdXR0b24iLCJTQ01BRmF2b3JpdGVTdGFyV3JhcCIsIlNDTUFDYXJkRm9vdGVyRGF0ZSIsIlNDTUFDYXJkVGl0bGVFbW9qaSIsIlNDTUFDYXJkVGl0bGVOYW1lIiwiU0NNQUNhcmRzT3V0ZXIiLCJTQ01BQ2FyZHNSb3ciLCJTQ01BRW1wdHlTdGF0ZVJvb3QiLCJTQ01BRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTUFFbXB0eVN0YXRlVGl0bGVCbG9jayIsIlNDTUFFbXB0eVN0YXRlVGl0bGUiLCJTQ01BRW1wdHlTdGF0ZVN1YnRpdGxlIiwiU0NNQUVtcHR5U3RhdGVCdXR0b24iLCJTQ01BS2ViYWJCdXR0b24iLCJTQ01BTG9hZE1vcmVXcmFwcGVyIiwiU0NNQUxvZ29Db250YWluZXIiLCJTQ01BTXlBZ2VudHNDb250YWluZXIiLCJTQ01BVGl0bGUiLCJTQ01BVGl0bGVJbm5lciIsIlNDTUFUaXRsZVdyYXAiLCJTQ01BQ2FyZFNrZWxldG9uSXRlbSIsIlNDTUFTZWFyY2hXcmFwcGVyIiwiU0NNQVNlYXJjaElucHV0IiwiU0NNQVNlYXJjaEhpbnQiLCJTQ01BU2VhcmNoTm9SZXN1bHRzIiwiU0NNQVNlYXJjaE5vUmVzdWx0c1RpdGxlIiwiU0NNQVNlYXJjaE5vUmVzdWx0c1N1YnRpdGxlIiwiTUFJQUlzb2xvZ28iLCJidWlsZEFnZW50RGVsZXRlTW9kYWxDaGF0IiwiZ2V0QWdlbnRDcmVhdGVkQXRMYWJlbCIsIm5vcm1hbGl6ZUFnZW50SW50cm9UZXh0Iiwic2hvdWxkQXV0b0xvYWRNb3JlQWdlbnRzIiwic2hvdWxkRGVib3VuY2VBZ2VudFNlYXJjaCIsInNob3VsZExvYWRNb3JlQWdlbnRzT25TY3JvbGwiLCJzaG91bGRVc2VNYWlha2VyRW1wdHlTdGF0ZUFjdGlvbiIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBZ2VudFNlYXJjaElucHV0IiwibWVtbyIsIl9yZWYiLCJvblNlYXJjaCIsInBsYWNlaG9sZGVyIiwiaGludCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlIiwic2V0VmFsdWUiLCJkZWJvdW5jZVJlZiIsInNob3dIaW50IiwibGVuZ3RoIiwiaGFuZGxlQ2hhbmdlIiwiZSIsInZhbCIsInRhcmdldCIsImN1cnJlbnQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidHlwZSIsIm9uQ2hhbmdlIiwiQ2hhdEFJTXlBZ2VudHMiLCJfcmVmMiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25CYWNrIiwiYWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsIl9yZWYyJGhhc01vcmVBZ2VudHMiLCJoYXNNb3JlQWdlbnRzIiwiX3JlZjIkbG9hZGluZ01vcmVBZ2VuIiwibG9hZGluZ01vcmVBZ2VudHMiLCJvbkxvYWRNb3JlQWdlbnRzIiwib25Hb1RvTWFpYWtlciIsIm9uU2VhcmNoQWdlbnRzIiwiX3JlZjIkc2VhcmNoTG9hZGluZ0FnIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsImFibUFnZW50IiwidCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImN1c3RvbUFnZW50cyIsImZpbHRlciIsImFnZW50IiwiaXNfZGVsZXRlZCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibWVudU9wZW5Gb3JBZ2VudElkIiwic2V0TWVudU9wZW5Gb3JBZ2VudElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJhZ2VudFRvRGVsZXRlIiwic2V0QWdlbnRUb0RlbGV0ZSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuQ3JlYXRlQWdlbnQiLCJjcmVhdGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuRWRpdCIsImVkaXQiLCJjYW5EZWxldGUiLCJjYW5TaG93TWVudSIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzU2VhcmNoQWN0aXZlIiwic2V0SXNTZWFyY2hBY3RpdmUiLCJoYW5kbGVTZWFyY2hBZ2VudHMiLCJxdWVyeSIsIm9wZW5DcmVhdGVBZ2VudE1vZGFsIiwib3Blbk1vZGFsIiwib3B0aW9uIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJhZ2VudFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImlzT3BlbiIsImhhbmRsZUVtcHR5U3RhdGVQcmltYXJ5QWN0aW9uIiwiaGFuZGxlTG9hZE1vcmUiLCJkZWxldGVNb2RhbENoYXQiLCJoYW5kbGVVc2VBZ2VudCIsImdldENyZWF0ZWRBdExhYmVsIiwidG9kYXkiLCJvbmVEYXlBZ28iLCJkYXlzQWdvIiwiZGF5cyIsIkRhdGUiLCJub3ciLCJoYW5kbGVPcGVuRWRpdEFnZW50Iiwia25vd2xlZGdlIiwiZ2VuZXJhbCIsIm5hbWUiLCJpZCIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlIiwiZXZlbnQiLCJpc0Zhdm9yaXRlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJ1cGRhdGVkQWdlbnQiLCJ1bmRlZmluZWQiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibnMiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJvblNjcm9sbCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsInNjcm9sbEhlaWdodCIsIiRoYXNBZ2VudHMiLCIkY2FuQ3JlYXRlQWdlbnQiLCJBcnJheSIsImZyb20iLCJtYXAiLCJfIiwiaSIsInZhcmlhbnQiLCJpbmRleCIsIl9hZ2VudCRlbW9qaSIsIiRpbmRleCIsIm9uQ2xpY2siLCJlbW9qaSIsInRyaW0iLCJpbnRyb2R1Y3Rpb24iLCJ0aXRsZSIsImlzX2Zhdm9yaXRlIiwiJGFsd2F5c1Zpc2libGUiLCJmaWxsIiwiY2xhc3NOYW1lIiwic2l6ZSIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlBZ2VudHMvQ2hhdEFJTXlBZ2VudHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IGRlbGV0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZGVsZXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBGYWRlIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmFkZSdcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvU2tlbGV0b24vU2tlbGV0b24nXG5pbXBvcnQgeyB1c2VUb2dnbGVGYXZvcml0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHtcbiAgU0NNQUJvZHksXG4gIFNDTUFDYXJkQm9keSxcbiAgU0NNQUNhcmRCdXR0b24sXG4gIFNDTUFDYXJkRm9vdGVyLFxuICBTQ01BQ2FyZEhlYWRlcixcbiAgU0NNQUNhcmRUb3BSb3csXG4gIFNDTUFDYXJkSW50cm9UZXh0LFxuICBTQ01BQ2FyZE1lbnUsXG4gIFNDTUFDYXJkTWVudUl0ZW0sXG4gIFNDTUFDYXJkTWVudUl0ZW1zLFxuICBTQ01BRmF2b3JpdGVCdXR0b24sXG4gIFNDTUFGYXZvcml0ZVN0YXJXcmFwLFxuICBTQ01BQ2FyZEZvb3RlckRhdGUsXG4gIFNDTUFDYXJkVGl0bGVFbW9qaSxcbiAgU0NNQUNhcmRUaXRsZU5hbWUsXG4gIFNDTUFDYXJkc091dGVyLFxuICBTQ01BQ2FyZHNSb3csXG4gIFNDTUFFbXB0eVN0YXRlUm9vdCxcbiAgU0NNQUVtcHR5U3RhdGVDb2x1bW4sXG4gIFNDTUFFbXB0eVN0YXRlVGl0bGVCbG9jayxcbiAgU0NNQUVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNQUVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNQUVtcHR5U3RhdGVCdXR0b24sXG4gIFNDTUFLZWJhYkJ1dHRvbixcbiAgU0NNQUxvYWRNb3JlV3JhcHBlcixcbiAgU0NNQUxvZ29Db250YWluZXIsXG4gIFNDTUFNeUFnZW50c0NvbnRhaW5lcixcbiAgU0NNQVRpdGxlLFxuICBTQ01BVGl0bGVJbm5lcixcbiAgU0NNQVRpdGxlV3JhcCxcbiAgU0NNQUNhcmRTa2VsZXRvbkl0ZW0sXG4gIFNDTUFTZWFyY2hXcmFwcGVyLFxuICBTQ01BU2VhcmNoSW5wdXQsXG4gIFNDTUFTZWFyY2hIaW50LFxuICBTQ01BU2VhcmNoTm9SZXN1bHRzLFxuICBTQ01BU2VhcmNoTm9SZXN1bHRzVGl0bGUsXG4gIFNDTUFTZWFyY2hOb1Jlc3VsdHNTdWJ0aXRsZSxcbn0gZnJvbSAnLi9DaGF0QUlNeUFnZW50cy5zdHlsZXMnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHtcbiAgYnVpbGRBZ2VudERlbGV0ZU1vZGFsQ2hhdCxcbiAgZ2V0QWdlbnRDcmVhdGVkQXRMYWJlbCxcbiAgbm9ybWFsaXplQWdlbnRJbnRyb1RleHQsXG4gIHNob3VsZEF1dG9Mb2FkTW9yZUFnZW50cyxcbiAgc2hvdWxkRGVib3VuY2VBZ2VudFNlYXJjaCxcbiAgc2hvdWxkTG9hZE1vcmVBZ2VudHNPblNjcm9sbCxcbiAgc2hvdWxkVXNlTWFpYWtlckVtcHR5U3RhdGVBY3Rpb24sXG59IGZyb20gJy4vQ2hhdEFJTXlBZ2VudHMuaGVscGVycydcblxuY29uc3QgQWdlbnRTZWFyY2hJbnB1dCA9IFJlYWN0Lm1lbW8oXG4gICh7IG9uU2VhcmNoLCBwbGFjZWhvbGRlciwgaGludCB9OiB7IG9uU2VhcmNoOiAocTogc3RyaW5nKSA9PiB2b2lkOyBwbGFjZWhvbGRlcjogc3RyaW5nOyBoaW50OiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuICAgIGNvbnN0IHNob3dIaW50ID0gdmFsdWUubGVuZ3RoID4gMCAmJiB2YWx1ZS5sZW5ndGggPCAzXG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgICBjb25zdCB7IHZhbHVlOiB2YWwgfSA9IGUudGFyZ2V0XG4gICAgICAgIHNldFZhbHVlKHZhbClcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgICBkZWJvdW5jZVJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHNob3VsZERlYm91bmNlQWdlbnRTZWFyY2godmFsKSkgb25TZWFyY2godmFsKVxuICAgICAgICB9LCAzNTApXG4gICAgICB9LFxuICAgICAgW29uU2VhcmNoXVxuICAgIClcblxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+ICgpID0+IHtcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgfSxcbiAgICAgIFtdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01BU2VhcmNoV3JhcHBlcj5cbiAgICAgICAgPFNlYXJjaCB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IGNvbG9yPVwiIzk5OVwiIC8+XG4gICAgICAgIDxTQ01BU2VhcmNoSW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT17dmFsdWV9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn0gLz5cbiAgICAgICAge3Nob3dIaW50ID8gPFNDTUFTZWFyY2hIaW50PntoaW50fTwvU0NNQVNlYXJjaEhpbnQ+IDogbnVsbH1cbiAgICAgIDwvU0NNQVNlYXJjaFdyYXBwZXI+XG4gICAgKVxuICB9XG4pXG5cbnR5cGUgQ2hhdEFJTXlBZ2VudHNQcm9wcyA9IHtcbiAgb25CYWNrOiAoKSA9PiB2b2lkXG4gIGFnZW50czogQWdlbnRbXVxuICBvbkRlbGV0ZUFnZW50PzogKGFnZW50SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU/OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIGhhc01vcmVBZ2VudHM/OiBib29sZWFuXG4gIGxvYWRpbmdNb3JlQWdlbnRzPzogYm9vbGVhblxuICBvbkxvYWRNb3JlQWdlbnRzPzogKCkgPT4gdm9pZFxuICBvbkdvVG9NYWlha2VyPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgb25TZWFyY2hBZ2VudHM/OiAocXVlcnk6IHN0cmluZykgPT4gdm9pZFxuICBzZWFyY2hMb2FkaW5nQWdlbnRzPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTXlBZ2VudHMgPSAoe1xuICBvbkJhY2ssXG4gIGFnZW50cyxcbiAgb25EZWxldGVBZ2VudCxcbiAgb25GYXZvcml0ZUFnZW50VXBkYXRlLFxuICBoYXNNb3JlQWdlbnRzID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlQWdlbnRzID0gZmFsc2UsXG4gIG9uTG9hZE1vcmVBZ2VudHMsXG4gIG9uR29Ub01haWFrZXIsXG4gIG9uU2VhcmNoQWdlbnRzLFxuICBzZWFyY2hMb2FkaW5nQWdlbnRzID0gZmFsc2UsXG59OiBDaGF0QUlNeUFnZW50c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSSwgU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBjdXN0b21BZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnZW50ID0+IGFnZW50LnR5cGUgPT09ICdjdXN0b20nICYmICFhZ2VudC5pc19kZWxldGVkKVxuICBjb25zdCBbbWVudU9wZW5Gb3JBZ2VudElkLCBzZXRNZW51T3BlbkZvckFnZW50SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FnZW50VG9EZWxldGUsIHNldEFnZW50VG9EZWxldGVdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IGNhbkNyZWF0ZUFnZW50ID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZSAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhbkVkaXQgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZWRpdCAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhbkRlbGV0ZSA9ICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGUgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5TaG93TWVudSA9IGNhbkVkaXQgfHwgY2FuRGVsZXRlXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IFtpc1NlYXJjaEFjdGl2ZSwgc2V0SXNTZWFyY2hBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoQWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgIHNldElzU2VhcmNoQWN0aXZlKHF1ZXJ5ICE9PSAnJylcbiAgICAgIG9uU2VhcmNoQWdlbnRzPy4ocXVlcnkpXG4gICAgfSxcbiAgICBbb25TZWFyY2hBZ2VudHNdXG4gIClcblxuICBjb25zdCBvcGVuQ3JlYXRlQWdlbnRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gIH0sIFtldmVudEFtcGxpdHVkZV0pXG5cbiAgY29uc3QgaGFuZGxlRW1wdHlTdGF0ZVByaW1hcnlBY3Rpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNob3VsZFVzZU1haWFrZXJFbXB0eVN0YXRlQWN0aW9uKCEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMsIG9uR29Ub01haWFrZXIpKSB7XG4gICAgICBvbkdvVG9NYWlha2VyPy4oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9wZW5DcmVhdGVBZ2VudE1vZGFsKClcbiAgfSwgW29uR29Ub01haWFrZXIsIG9wZW5DcmVhdGVBZ2VudE1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVMb2FkTW9yZSA9ICgpID0+IHtcbiAgICBpZiAoIW9uTG9hZE1vcmVBZ2VudHMpIHJldHVyblxuICAgIG9uTG9hZE1vcmVBZ2VudHMoKVxuICB9XG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gdXNlTWVtbygoKSA9PiBidWlsZEFnZW50RGVsZXRlTW9kYWxDaGF0KGFnZW50VG9EZWxldGUpLCBbYWdlbnRUb0RlbGV0ZV0pXG5cbiAgY29uc3QgaGFuZGxlVXNlQWdlbnQgPSAoYWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzayhudWxsKVxuICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgIG9uQmFjaygpXG4gIH1cblxuICBjb25zdCBnZXRDcmVhdGVkQXRMYWJlbCA9IChhZ2VudDogQWdlbnQpID0+XG4gICAgZ2V0QWdlbnRDcmVhdGVkQXRMYWJlbChcbiAgICAgIGFnZW50LFxuICAgICAge1xuICAgICAgICB0b2RheTogdCgnbWFya2V0cGxhY2UubXlBZ2VudHNUb2RheScpLFxuICAgICAgICBvbmVEYXlBZ286IHQoJ21hcmtldHBsYWNlLm15QWdlbnRzT25lRGF5QWdvJyksXG4gICAgICAgIGRheXNBZ286IGRheXMgPT4gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNEYXlzQWdvJywgeyBkYXlzIH0pLFxuICAgICAgfSxcbiAgICAgIERhdGUubm93KClcbiAgICApXG5cbiAgY29uc3QgaGFuZGxlT3BlbkVkaXRBZ2VudCA9IChhZ2VudDogQWdlbnQpID0+IHtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICAgIGtub3dsZWRnZTogYWdlbnQ/Lmtub3dsZWRnZSB8fCBbXSxcbiAgICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IGFnZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgaWQ6IGFnZW50LmlkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZSA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4sIGFnZW50OiBBZ2VudCwgaXNGYXZvcml0ZTogYm9vbGVhbikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICBhZ2VudC5pZCxcbiAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT8uKHVwZGF0ZWRBZ2VudClcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBpc0Zhdm9yaXRlXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybURlbGV0ZSA9IGFzeW5jIChjaGF0OiB7IGlkOiBzdHJpbmcgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVBZ2VudChjaGF0LmlkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudERlbGV0ZWQnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KSlcbiAgICAgIG9uRGVsZXRlQWdlbnQ/LihjaGF0LmlkKVxuICAgICAgc2V0QWdlbnRUb0RlbGV0ZShudWxsKVxuICAgICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKG51bGwpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBZ2VudENyZWF0ZWQnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9ICgpID0+IHtcbiAgICAgIGlmIChtZW51T3BlbkZvckFnZW50SWQpIHtcbiAgICAgICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW21lbnVPcGVuRm9yQWdlbnRJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXktYWdlbnRzLXNjcm9sbC1jb250YWluZXInKVxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgY2xpZW50SGVpZ2h0LCBzY3JvbGxIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgICAgaWYgKFxuICAgICAgICBzaG91bGRMb2FkTW9yZUFnZW50c09uU2Nyb2xsKHtcbiAgICAgICAgICBzY3JvbGxUb3AsXG4gICAgICAgICAgY2xpZW50SGVpZ2h0LFxuICAgICAgICAgIHNjcm9sbEhlaWdodCxcbiAgICAgICAgICBoYXNNb3JlQWdlbnRzLFxuICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzLFxuICAgICAgICB9KVxuICAgICAgKSB7XG4gICAgICAgIGhhbmRsZUxvYWRNb3JlKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbClcbiAgICB9XG4gIH0sIFtoYXNNb3JlQWdlbnRzLCBsb2FkaW5nTW9yZUFnZW50cywgb25Mb2FkTW9yZUFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXktYWdlbnRzLXNjcm9sbC1jb250YWluZXInKVxuICAgIGlmICghY29udGFpbmVyIHx8ICFoYXNNb3JlQWdlbnRzIHx8IGxvYWRpbmdNb3JlQWdlbnRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgc2hvdWxkQXV0b0xvYWRNb3JlQWdlbnRzKHtcbiAgICAgICAgc2Nyb2xsSGVpZ2h0OiBjb250YWluZXIuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBjbGllbnRIZWlnaHQ6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQsXG4gICAgICAgIGhhc01vcmVBZ2VudHMsXG4gICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGhhbmRsZUxvYWRNb3JlKClcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbY3VzdG9tQWdlbnRzLmxlbmd0aCwgaGFzTW9yZUFnZW50cywgbG9hZGluZ01vcmVBZ2VudHMsIG9uTG9hZE1vcmVBZ2VudHNdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTUFNeUFnZW50c0NvbnRhaW5lciBpZD1cIm15LWFnZW50cy1zY3JvbGwtY29udGFpbmVyXCIgJGhhc0FnZW50cz17ISFjdXN0b21BZ2VudHMubGVuZ3RoIHx8IGlzU2VhcmNoQWN0aXZlfT5cbiAgICAgIDxTQ01BTG9nb0NvbnRhaW5lcj5cbiAgICAgICAgPE1BSUFJc29sb2dvIC8+XG4gICAgICA8L1NDTUFMb2dvQ29udGFpbmVyPlxuXG4gICAgICA8U0NNQUJvZHkgJGNhbkNyZWF0ZUFnZW50PXtjYW5DcmVhdGVBZ2VudH0+XG4gICAgICAgIHtjdXN0b21BZ2VudHMubGVuZ3RoIHx8IGlzU2VhcmNoQWN0aXZlID8gKFxuICAgICAgICAgIDxTQ01BVGl0bGVXcmFwPlxuICAgICAgICAgICAgPFNDTUFUaXRsZUlubmVyPlxuICAgICAgICAgICAgICA8U0NNQVRpdGxlPnt0KCdtYXJrZXRwbGFjZS5teUFnZW50c1JlYWR5VGl0bGUnKX08L1NDTUFUaXRsZT5cbiAgICAgICAgICAgIDwvU0NNQVRpdGxlSW5uZXI+XG4gICAgICAgICAgICB7b25TZWFyY2hBZ2VudHMgPyAoXG4gICAgICAgICAgICAgIDxBZ2VudFNlYXJjaElucHV0XG4gICAgICAgICAgICAgICAgb25TZWFyY2g9e2hhbmRsZVNlYXJjaEFnZW50c31cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbWFya2V0cGxhY2Uuc2VhcmNoQWdlbnRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIGhpbnQ9e3QoJ21hcmtldHBsYWNlLnNlYXJjaE1pbkxlbmd0aCcpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01BVGl0bGVXcmFwPlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7c2VhcmNoTG9hZGluZ0FnZW50cyA/IChcbiAgICAgICAgICA8U0NNQUNhcmRzT3V0ZXI+XG4gICAgICAgICAgICA8U0NNQUNhcmRzUm93PlxuICAgICAgICAgICAgICB7QXJyYXkuZnJvbSh7IGxlbmd0aDogNiB9KS5tYXAoKF8sIGkpID0+IChcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgICAgICAgPFNDTUFDYXJkU2tlbGV0b25JdGVtIGtleT17aX0+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImNpcmN1bGFyXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwidGV4dFwiIGhlaWdodD17MTR9IHdpZHRoPVwiNzUlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwidGV4dFwiIGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cInRleHRcIiBoZWlnaHQ9ezEyfSB3aWR0aD1cIjg1JVwiIC8+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cInRleHRcIiBoZWlnaHQ9ezExfSB3aWR0aD1cIjQwJVwiIC8+XG4gICAgICAgICAgICAgICAgPC9TQ01BQ2FyZFNrZWxldG9uSXRlbT5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDTUFDYXJkc1Jvdz5cbiAgICAgICAgICA8L1NDTUFDYXJkc091dGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFzZWFyY2hMb2FkaW5nQWdlbnRzICYmIGN1c3RvbUFnZW50cy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTUFDYXJkc091dGVyPlxuICAgICAgICAgICAgPFNDTUFDYXJkc1Jvdz5cbiAgICAgICAgICAgICAge2N1c3RvbUFnZW50cy5tYXAoKGFnZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgIDxTQ01BQ2FyZEJ1dHRvbiBrZXk9e2FnZW50LmlkfSAkaW5kZXg9e2luZGV4fSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gaGFuZGxlVXNlQWdlbnQoYWdlbnQpfT5cbiAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZFRpdGxlRW1vamkgYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7YWdlbnQuZW1vamk/LnRyaW0oKSA/IGFnZW50LmVtb2ppIDogJ1xcdTAwYTAnfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRUaXRsZUVtb2ppPlxuICAgICAgICAgICAgICAgICAgICAgIHtjYW5TaG93TWVudSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ21hcmtldHBsYWNlLmNhcmRNZW51QXJpYUxhYmVsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51T3BlbkZvckFnZW50SWQocHJldiA9PiAocHJldiA9PT0gYWdlbnQuaWQgPyBudWxsIDogYWdlbnQuaWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjOTk5XCIgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BS2ViYWJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZFRpdGxlTmFtZT57YWdlbnQubmFtZX08L1NDTUFDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZEludHJvVGV4dD57bm9ybWFsaXplQWdlbnRJbnRyb1RleHQoYWdlbnQuaW50cm9kdWN0aW9uKX08L1NDTUFDYXJkSW50cm9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkRm9vdGVyRGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnZXRDcmVhdGVkQXRMYWJlbChhZ2VudCkgfHwgdCgnbWFya2V0cGxhY2UubXlBZ2VudHNGYWxsYmFja0RhdGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkRm9vdGVyRGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YWdlbnQuaXNfZmF2b3JpdGUgPyB0KCdhZ2VudHMucmVtb3ZlRmF2b3JpdGUnKSA6IHQoJ2FnZW50cy5hZGRGYXZvcml0ZScpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BRmF2b3JpdGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2FnZW50LmlzX2Zhdm9yaXRlID8gdCgnYWdlbnRzLnJlbW92ZUZhdm9yaXRlJykgOiB0KCdhZ2VudHMuYWRkRmF2b3JpdGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsd2F5c1Zpc2libGU9eyEhYWdlbnQuaXNfZmF2b3JpdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZVRvZ2dsZUZhdm9yaXRlKGV2ZW50LCBhZ2VudCwgISFhZ2VudC5pc19mYXZvcml0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BRmF2b3JpdGVTdGFyV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXthZ2VudC5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICcjOTk5J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9e2FnZW50LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YWdlbnQuaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUZhdm9yaXRlU3RhcldyYXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFGYXZvcml0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvckFnZW50SWQgPT09IGFnZW50LmlkICYmIGNhblNob3dNZW51ID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRNZW51XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbkVkaXQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkVkaXRBZ2VudChhZ2VudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2VkaXQnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2FuRGVsZXRlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFnZW50VG9EZWxldGUoYWdlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGUnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnVJdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnU+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDTUFDYXJkQnV0dG9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NNQUNhcmRzUm93PlxuICAgICAgICAgIDwvU0NNQUNhcmRzT3V0ZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IXNlYXJjaExvYWRpbmdBZ2VudHMgJiYgIWN1c3RvbUFnZW50cy5sZW5ndGggJiYgaXNTZWFyY2hBY3RpdmUgPyAoXG4gICAgICAgICAgPFNDTUFTZWFyY2hOb1Jlc3VsdHM+XG4gICAgICAgICAgICA8U0NNQVNlYXJjaE5vUmVzdWx0c1RpdGxlPnt0KCdtYXJrZXRwbGFjZS5zZWFyY2hOb1Jlc3VsdHMnKX08L1NDTUFTZWFyY2hOb1Jlc3VsdHNUaXRsZT5cbiAgICAgICAgICAgIHtjYW5DcmVhdGVBZ2VudCA/IChcbiAgICAgICAgICAgICAgPFNDTUFTZWFyY2hOb1Jlc3VsdHNTdWJ0aXRsZT57dCgnbWFya2V0cGxhY2Uuc2VhcmNoTm9SZXN1bHRzU3VidGl0bGUnKX08L1NDTUFTZWFyY2hOb1Jlc3VsdHNTdWJ0aXRsZT5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNQVNlYXJjaE5vUmVzdWx0cz5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshc2VhcmNoTG9hZGluZ0FnZW50cyAmJiAhY3VzdG9tQWdlbnRzLmxlbmd0aCAmJiAhaXNTZWFyY2hBY3RpdmUgPyAoXG4gICAgICAgICAgPFNDTUFFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgICAgICA8U0NNQUVtcHR5U3RhdGVUaXRsZT57dCgnbWFya2V0cGxhY2UubXlBZ2VudHNFbXB0eVN0YXRlVGl0bGUnKX08L1NDTUFFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnRcbiAgICAgICAgICAgICAgICAgICAgPyB0KCdtYXJrZXRwbGFjZS5teUFnZW50c0VtcHR5U3RhdGVEZXNjcmlwdGlvbicpXG4gICAgICAgICAgICAgICAgICAgIDogdCgnbWFya2V0cGxhY2UubXlBZ2VudHNFbXB0eVN0YXRlRGVzY3JpcHRpb25Ob1Blcm0nKX1cbiAgICAgICAgICAgICAgICA8L1NDTUFFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvU0NNQUVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgIHtjYW5DcmVhdGVBZ2VudCA/IChcbiAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVFbXB0eVN0YXRlUHJpbWFyeUFjdGlvbn0+XG4gICAgICAgICAgICAgICAge3QoJ21hcmtldHBsYWNlLm15QWdlbnRzRW1wdHlTdGF0ZUJ1dHRvbicpfVxuICAgICAgICAgICAgICA8L1NDTUFFbXB0eVN0YXRlQnV0dG9uPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7bG9hZGluZ01vcmVBZ2VudHMgPyAoXG4gICAgICAgICAgPFNDTUFMb2FkTW9yZVdyYXBwZXI+XG4gICAgICAgICAgICA8RmFkZT5cbiAgICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgPC9GYWRlPlxuICAgICAgICAgIDwvU0NNQUxvYWRNb3JlV3JhcHBlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDTUFCb2R5PlxuICAgICAge2RlbGV0ZU1vZGFsQ2hhdCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBZ2VudFRvRGVsZXRlKG51bGwpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIGFjdGlvbj1cImFnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NNQU15QWdlbnRzQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRixTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUNsRSxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBRW5ELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLG1CQUFtQixRQUFRLHlEQUF5RDtBQUM3RixTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNB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
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
export var DROPDOWN_GAP_PX = 6;
|
|
3
|
+
export var CARD_MENU_ITEM_HEIGHT_PX = 40;
|
|
4
|
+
export var resolveDropdownPlacement = function resolveDropdownPlacement(anchorRect, dropdownHeight) {
|
|
5
|
+
var viewportHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window.innerHeight;
|
|
6
|
+
var spaceBelow = viewportHeight - anchorRect.bottom - DROPDOWN_GAP_PX;
|
|
7
|
+
var spaceAbove = anchorRect.top - DROPDOWN_GAP_PX;
|
|
8
|
+
if (spaceBelow >= dropdownHeight) return 'bottom';
|
|
9
|
+
if (spaceAbove >= dropdownHeight) return 'top';
|
|
10
|
+
return spaceBelow >= spaceAbove ? 'bottom' : 'top';
|
|
11
|
+
};
|
|
12
|
+
export var formatSkillDisplayName = function formatSkillDisplayName(name) {
|
|
13
|
+
var normalized = name.replace(/^(@\/|#)/, '');
|
|
14
|
+
return "#".concat(normalized);
|
|
15
|
+
};
|
|
16
|
+
export var filterAndSortSkills = function filterAndSortSkills(skills, searchQuery) {
|
|
17
|
+
var normalizedQuery = searchQuery.toLowerCase();
|
|
18
|
+
var matched = normalizedQuery ? skills.filter(function (skill) {
|
|
19
|
+
return skill.name.toLowerCase().includes(normalizedQuery);
|
|
20
|
+
}) : skills;
|
|
21
|
+
return _toConsumableArray(matched).sort(function (a, b) {
|
|
22
|
+
return a.name.localeCompare(b.name);
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export var resolveSkillsCardMenuHeightPx = function resolveSkillsCardMenuHeightPx(isMineTab) {
|
|
26
|
+
return isMineTab ? CARD_MENU_ITEM_HEIGHT_PX * 3 : CARD_MENU_ITEM_HEIGHT_PX;
|
|
27
|
+
};
|
|
28
|
+
export var buildSkillDeleteModalChat = function buildSkillDeleteModalChat(skill) {
|
|
29
|
+
return skill ? {
|
|
30
|
+
title: skill.name,
|
|
31
|
+
id: skill.id
|
|
32
|
+
} : null;
|
|
33
|
+
};
|
|
34
|
+
export var resolveSkillCreateAnalyticsSource = function resolveSkillCreateAnalyticsSource(activeTab, loading, mySkillsCount, searchQuery) {
|
|
35
|
+
var fromEmpty = activeTab === 'mine' && !loading && mySkillsCount === 0 && !searchQuery;
|
|
36
|
+
return fromEmpty ? 'empty' : 'catalog';
|
|
37
|
+
};
|
|
38
|
+
export var shouldShowSkillsToolbar = function shouldShowSkillsToolbar(isMineTab, isMineEmpty, tabSkillsCount, searchQuery) {
|
|
39
|
+
return isMineTab ? !isMineEmpty : tabSkillsCount > 0 || !!searchQuery;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUk9QRE9XTl9HQVBfUFgiLCJDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFgiLCJyZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQiLCJhbmNob3JSZWN0IiwiZHJvcGRvd25IZWlnaHQiLCJ2aWV3cG9ydEhlaWdodCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic3BhY2VCZWxvdyIsImJvdHRvbSIsInNwYWNlQWJvdmUiLCJ0b3AiLCJmb3JtYXRTa2lsbERpc3BsYXlOYW1lIiwibmFtZSIsIm5vcm1hbGl6ZWQiLCJyZXBsYWNlIiwiY29uY2F0IiwiZmlsdGVyQW5kU29ydFNraWxscyIsInNraWxscyIsInNlYXJjaFF1ZXJ5Iiwibm9ybWFsaXplZFF1ZXJ5IiwidG9Mb3dlckNhc2UiLCJtYXRjaGVkIiwiZmlsdGVyIiwic2tpbGwiLCJpbmNsdWRlcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJyZXNvbHZlU2tpbGxzQ2FyZE1lbnVIZWlnaHRQeCIsImlzTWluZVRhYiIsImJ1aWxkU2tpbGxEZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsImlkIiwicmVzb2x2ZVNraWxsQ3JlYXRlQW5hbHl0aWNzU291cmNlIiwiYWN0aXZlVGFiIiwibG9hZGluZyIsIm15U2tpbGxzQ291bnQiLCJmcm9tRW1wdHkiLCJzaG91bGRTaG93U2tpbGxzVG9vbGJhciIsImlzTWluZUVtcHR5IiwidGFiU2tpbGxzQ291bnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUGxhY2VtZW50ID0gJ3RvcCcgfCAnYm90dG9tJ1xuXG5leHBvcnQgY29uc3QgRFJPUERPV05fR0FQX1BYID0gNlxuZXhwb3J0IGNvbnN0IENBUkRfTUVOVV9JVEVNX0hFSUdIVF9QWCA9IDQwXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQgPSAoXG4gIGFuY2hvclJlY3Q6IFBpY2s8RE9NUmVjdCwgJ3RvcCcgfCAnYm90dG9tJz4sXG4gIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIsXG4gIHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0XG4pOiBEcm9wZG93blBsYWNlbWVudCA9PiB7XG4gIGNvbnN0IHNwYWNlQmVsb3cgPSB2aWV3cG9ydEhlaWdodCAtIGFuY2hvclJlY3QuYm90dG9tIC0gRFJPUERPV05fR0FQX1BYXG4gIGNvbnN0IHNwYWNlQWJvdmUgPSBhbmNob3JSZWN0LnRvcCAtIERST1BET1dOX0dBUF9QWFxuXG4gIGlmIChzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0KSByZXR1cm4gJ2JvdHRvbSdcbiAgaWYgKHNwYWNlQWJvdmUgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAndG9wJ1xuICByZXR1cm4gc3BhY2VCZWxvdyA+PSBzcGFjZUFib3ZlID8gJ2JvdHRvbScgOiAndG9wJ1xufVxuXG5leHBvcnQgY29uc3QgZm9ybWF0U2tpbGxEaXNwbGF5TmFtZSA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgcmV0dXJuIGAjJHtub3JtYWxpemVkfWBcbn1cblxuZXhwb3J0IGNvbnN0IGZpbHRlckFuZFNvcnRTa2lsbHMgPSAoc2tpbGxzOiBTa2lsbFtdLCBzZWFyY2hRdWVyeTogc3RyaW5nKTogU2tpbGxbXSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgY29uc3QgbWF0Y2hlZCA9IG5vcm1hbGl6ZWRRdWVyeSA/IHNraWxscy5maWx0ZXIoc2tpbGwgPT4gc2tpbGwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSkpIDogc2tpbGxzXG4gIHJldHVybiBbLi4ubWF0Y2hlZF0uc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTa2lsbHNDYXJkTWVudUhlaWdodFB4ID0gKGlzTWluZVRhYjogYm9vbGVhbik6IG51bWJlciA9PlxuICBpc01pbmVUYWIgPyBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggKiAzIDogQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYXG5cbmV4cG9ydCBjb25zdCBidWlsZFNraWxsRGVsZXRlTW9kYWxDaGF0ID0gKHNraWxsOiBTa2lsbCB8IG51bGwpOiB7IHRpdGxlOiBzdHJpbmc7IGlkOiBzdHJpbmcgfSB8IG51bGwgPT5cbiAgc2tpbGwgPyB7IHRpdGxlOiBza2lsbC5uYW1lLCBpZDogc2tpbGwuaWQgfSA6IG51bGxcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTa2lsbENyZWF0ZUFuYWx5dGljc1NvdXJjZSA9IChcbiAgYWN0aXZlVGFiOiAnbWluZScgfCAnc2hhcmVkJyxcbiAgbG9hZGluZzogYm9vbGVhbixcbiAgbXlTa2lsbHNDb3VudDogbnVtYmVyLFxuICBzZWFyY2hRdWVyeTogc3RyaW5nXG4pOiAnY2F0YWxvZycgfCAnZW1wdHknID0+IHtcbiAgY29uc3QgZnJvbUVtcHR5ID0gYWN0aXZlVGFiID09PSAnbWluZScgJiYgIWxvYWRpbmcgJiYgbXlTa2lsbHNDb3VudCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgcmV0dXJuIGZyb21FbXB0eSA/ICdlbXB0eScgOiAnY2F0YWxvZydcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dTa2lsbHNUb29sYmFyID0gKFxuICBpc01pbmVUYWI6IGJvb2xlYW4sXG4gIGlzTWluZUVtcHR5OiBib29sZWFuLFxuICB0YWJTa2lsbHNDb3VudDogbnVtYmVyLFxuICBzZWFyY2hRdWVyeTogc3RyaW5nXG4pOiBib29sZWFuID0+IChpc01pbmVUYWIgPyAhaXNNaW5lRW1wdHkgOiB0YWJTa2lsbHNDb3VudCA+IDAgfHwgISFzZWFyY2hRdWVyeSlcbiJdLCJtYXBwaW5ncyI6IjtBQUlBLE9BQU8sSUFBTUEsZUFBZSxHQUFHLENBQUM7QUFDaEMsT0FBTyxJQUFNQyx3QkFBd0IsR0FBRyxFQUFFO0FBRTFDLE9BQU8sSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FDbkNDLFVBQTJDLEVBQzNDQyxjQUFzQixFQUVBO0VBQUEsSUFEdEJDLGNBQWMsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUdHLE1BQU0sQ0FBQ0MsV0FBVztFQUVuQyxJQUFNQyxVQUFVLEdBQUdOLGNBQWMsR0FBR0YsVUFBVSxDQUFDUyxNQUFNLEdBQUdaLGVBQWU7RUFDdkUsSUFBTWEsVUFBVSxHQUFHVixVQUFVLENBQUNXLEdBQUcsR0FBR2QsZUFBZTtFQUVuRCxJQUFJVyxVQUFVLElBQUlQLGNBQWMsRUFBRSxPQUFPLFFBQVE7RUFDakQsSUFBSVMsVUFBVSxJQUFJVCxjQUFjLEVBQUUsT0FBTyxLQUFLO0VBQzlDLE9BQU9PLFVBQVUsSUFBSUUsVUFBVSxHQUFHLFFBQVEsR0FBRyxLQUFLO0FBQ3BELENBQUM7QUFFRCxPQUFPLElBQU1FLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlDLElBQVksRUFBYTtFQUM5RCxJQUFNQyxVQUFVLEdBQUdELElBQUksQ0FBQ0UsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7RUFDL0MsV0FBQUMsTUFBQSxDQUFXRixVQUFVO0FBQ3ZCLENBQUM7QUFFRCxPQUFPLElBQU1HLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLE1BQWUsRUFBRUMsV0FBbUIsRUFBYztFQUNwRixJQUFNQyxlQUFlLEdBQUdELFdBQVcsQ0FBQ0UsV0FBVyxDQUFDLENBQUM7RUFDakQsSUFBTUMsT0FBTyxHQUFHRixlQUFlLEdBQUdGLE1BQU0sQ0FBQ0ssTUFBTSxDQUFDLFVBQUFDLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNYLElBQUksQ0FBQ1EsV0FBVyxDQUFDLENBQUMsQ0FBQ0ksUUFBUSxDQUFDTCxlQUFlLENBQUM7RUFBQSxFQUFDLEdBQUdGLE1BQU07RUFDckgsT0FBT1Esa0JBQUEsQ0FBSUosT0FBTyxFQUFFSyxJQUFJLENBQUMsVUFBQ0MsQ0FBQyxFQUFFQyxDQUFDO0lBQUEsT0FBS0QsQ0FBQyxDQUFDZixJQUFJLENBQUNpQixhQUFhLENBQUNELENBQUMsQ0FBQ2hCLElBQUksQ0FBQztFQUFBLEVBQUM7QUFDbEUsQ0FBQztBQUVELE9BQU8sSUFBTWtCLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBNkJBLENBQUlDLFNBQWtCO0VBQUEsT0FDOURBLFNBQVMsR0FBR2xDLHdCQUF3QixHQUFHLENBQUMsR0FBR0Esd0JBQXdCO0FBQUE7QUFFckUsT0FBTyxJQUFNbUMseUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSVQsS0FBbUI7RUFBQSxPQUMzREEsS0FBSyxHQUFHO0lBQUVVLEtBQUssRUFBRVYsS0FBSyxDQUFDWCxJQUFJO0lBQUVzQixFQUFFLEVBQUVYLEtBQUssQ0FBQ1c7RUFBRyxDQUFDLEdBQUcsSUFBSTtBQUFBO0FBRXBELE9BQU8sSUFBTUMsaUNBQWlDLEdBQUcsU0FBcENBLGlDQUFpQ0EsQ0FDNUNDLFNBQTRCLEVBQzVCQyxPQUFnQixFQUNoQkMsYUFBcUIsRUFDckJwQixXQUFtQixFQUNLO0VBQ3hCLElBQU1xQixTQUFTLEdBQUdILFNBQVMsS0FBSyxNQUFNLElBQUksQ0FBQ0MsT0FBTyxJQUFJQyxhQUFhLEtBQUssQ0FBQyxJQUFJLENBQUNwQixXQUFXO0VBQ3pGLE9BQU9xQixTQUFTLEdBQUcsT0FBTyxHQUFHLFNBQVM7QUFDeEMsQ0FBQztBQUVELE9BQU8sSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FDbENULFNBQWtCLEVBQ2xCVSxXQUFvQixFQUNwQkMsY0FBc0IsRUFDdEJ4QixXQUFtQjtFQUFBLE9BQ05hLFNBQVMsR0FBRyxDQUFDVSxXQUFXLEdBQUdDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDeEIsV0FBVztBQUFBLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|