mumucc 0.4.2 → 0.4.4
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/AGENTS.md +297 -0
- package/bin/mumucc +3 -8
- package/bun.lock +44 -141
- package/defaults/mcp-servers.json +0 -6
- package/mumucc-0.4.3.tgz +0 -0
- package/package.json +3 -3
- package/shims/bun-bundle.ts +0 -3
- package/shims/globals.d.ts +15 -0
- package/shims/globals.ts +1 -1
- package/src/QueryEngine.ts +1 -0
- package/src/assistant/gate.ts +4 -1
- package/src/assistant/index.ts +29 -1
- package/src/assistant/sessionDiscovery.ts +10 -1
- package/src/bootstrap/state.ts +6 -1
- package/src/buddy/CompanionSprite.tsx +1 -0
- package/src/buddy/observer.ts +6 -0
- package/src/buddy/useBuddyNotification.tsx +1 -0
- package/src/cli/handlers/util.tsx +1 -0
- package/src/cli/print.ts +4 -1
- package/src/cli/structuredIO.ts +6 -1
- package/src/commands/add-dir/add-dir.tsx +1 -0
- package/src/commands/branch/branch.ts +1 -0
- package/src/commands/bridge/bridge.tsx +2 -1
- package/src/commands/btw/btw.tsx +1 -0
- package/src/commands/buddy/index.ts +2 -1
- package/src/commands/chrome/chrome.tsx +1 -0
- package/src/commands/clear/caches.ts +1 -0
- package/src/commands/compact/compact.ts +1 -0
- package/src/commands/context/context-noninteractive.ts +1 -0
- package/src/commands/context/context.tsx +1 -0
- package/src/commands/copy/copy.tsx +2 -1
- package/src/commands/effort/effort.tsx +1 -0
- package/src/commands/extra-usage/extra-usage.tsx +1 -0
- package/src/commands/fast/fast.tsx +1 -0
- package/src/commands/fork/index.ts +2 -1
- package/src/commands/ide/ide.tsx +2 -1
- package/src/commands/insights.ts +1 -0
- package/src/commands/install-github-app/ApiKeyStep.tsx +1 -0
- package/src/commands/install-github-app/CheckExistingSecretStep.tsx +1 -0
- package/src/commands/install-github-app/ChooseRepoStep.tsx +1 -0
- package/src/commands/install-github-app/CreatingStep.tsx +1 -0
- package/src/commands/install-github-app/ErrorStep.tsx +1 -0
- package/src/commands/install-github-app/ExistingWorkflowStep.tsx +1 -0
- package/src/commands/install-github-app/InstallAppStep.tsx +1 -0
- package/src/commands/install-github-app/OAuthFlowStep.tsx +1 -0
- package/src/commands/install-github-app/SuccessStep.tsx +1 -0
- package/src/commands/install-github-app/WarningsStep.tsx +1 -0
- package/src/commands/install-github-app/install-github-app.tsx +2 -1
- package/src/commands/install.tsx +1 -0
- package/src/commands/login/CodexLogin.tsx +39 -12
- package/src/commands/login/CustomProviderLogin.tsx +45 -9
- package/src/commands/login/ThirdPartyLogin.tsx +24 -6
- package/src/commands/login/login.tsx +37 -10
- package/src/commands/login/profileDefaults.ts +25 -0
- package/src/commands/mcp/mcp.tsx +1 -0
- package/src/commands/mobile/mobile.tsx +1 -0
- package/src/commands/model/model.tsx +14 -3
- package/src/commands/peers/index.ts +2 -1
- package/src/commands/permissions/permissions.tsx +1 -0
- package/src/commands/plan/plan.tsx +1 -0
- package/src/commands/plugin/DiscoverPlugins.tsx +1 -0
- package/src/commands/plugin/ManageMarketplaces.tsx +1 -0
- package/src/commands/plugin/ManagePlugins.tsx +1 -0
- package/src/commands/plugin/PluginOptionsDialog.tsx +1 -0
- package/src/commands/plugin/PluginSettings.tsx +2 -1
- package/src/commands/plugin/UnifiedInstalledCell.tsx +1 -0
- package/src/commands/plugin/ValidatePlugin.tsx +1 -0
- package/src/commands/plugin/pluginDetailsHelpers.tsx +1 -0
- package/src/commands/rate-limit-options/rate-limit-options.tsx +1 -0
- package/src/commands/remote-setup/remote-setup.tsx +1 -0
- package/src/commands/resume/resume.tsx +1 -0
- package/src/commands/review/UltrareviewOverageDialog.tsx +1 -0
- package/src/commands/review/ultrareviewCommand.tsx +1 -0
- package/src/commands/session/session.tsx +1 -0
- package/src/commands/tag/tag.tsx +1 -0
- package/src/commands/terminalSetup/terminalSetup.tsx +1 -0
- package/src/commands/theme/theme.tsx +1 -0
- package/src/commands/thinkback/thinkback.tsx +2 -1
- package/src/commands/ultraplan.tsx +11 -1
- package/src/commands/upgrade/upgrade.tsx +1 -0
- package/src/commands/workflows/index.ts +2 -1
- package/src/components/AgentProgressLine.tsx +1 -0
- package/src/components/App.tsx +1 -0
- package/src/components/ApproveApiKey.tsx +1 -0
- package/src/components/AutoModeOptInDialog.tsx +1 -0
- package/src/components/AutoUpdater.tsx +1 -0
- package/src/components/AutoUpdaterWrapper.tsx +1 -0
- package/src/components/AwsAuthStatusBox.tsx +1 -0
- package/src/components/BaseTextInput.tsx +1 -0
- package/src/components/BashModeProgress.tsx +1 -0
- package/src/components/BridgeDialog.tsx +2 -1
- package/src/components/BypassPermissionsModeDialog.tsx +1 -0
- package/src/components/ChannelDowngradeDialog.tsx +1 -0
- package/src/components/ClaudeInChromeOnboarding.tsx +1 -0
- package/src/components/ClaudeMdExternalIncludesDialog.tsx +1 -0
- package/src/components/ClickableImageRef.tsx +1 -0
- package/src/components/CompactSummary.tsx +1 -0
- package/src/components/ConfigurableShortcutHint.tsx +1 -0
- package/src/components/ConsoleOAuthFlow.tsx +1 -0
- package/src/components/ContextSuggestions.tsx +1 -0
- package/src/components/ContextVisualization.tsx +2 -1
- package/src/components/CoordinatorAgentStatus.tsx +3 -4
- package/src/components/CostThresholdDialog.tsx +1 -0
- package/src/components/CtrlOToExpand.tsx +1 -0
- package/src/components/CustomSelect/SelectMulti.tsx +1 -0
- package/src/components/CustomSelect/select-input-option.tsx +1 -0
- package/src/components/CustomSelect/select-option.tsx +1 -0
- package/src/components/CustomSelect/select.tsx +2 -1
- package/src/components/CustomSelect/use-multi-select-state.ts +1 -0
- package/src/components/DesktopHandoff.tsx +1 -0
- package/src/components/DesktopUpsell/DesktopUpsellStartup.tsx +1 -0
- package/src/components/DevBar.tsx +1 -0
- package/src/components/DevChannelsDialog.tsx +1 -0
- package/src/components/DiagnosticsDisplay.tsx +1 -0
- package/src/components/EffortCallout.tsx +1 -0
- package/src/components/ExitFlow.tsx +1 -0
- package/src/components/FallbackToolUseErrorMessage.tsx +1 -0
- package/src/components/FastIcon.tsx +1 -0
- package/src/components/Feedback.tsx +1 -0
- package/src/components/FeedbackSurvey/FeedbackSurvey.tsx +1 -0
- package/src/components/FeedbackSurvey/FeedbackSurveyView.tsx +1 -0
- package/src/components/FeedbackSurvey/TranscriptSharePrompt.tsx +1 -0
- package/src/components/FeedbackSurvey/useFrustrationDetection.ts +6 -1
- package/src/components/FeedbackSurvey/useMemorySurvey.tsx +1 -0
- package/src/components/FeedbackSurvey/usePostCompactSurvey.tsx +2 -1
- package/src/components/FileEditToolDiff.tsx +1 -0
- package/src/components/FileEditToolUpdatedMessage.tsx +1 -0
- package/src/components/FileEditToolUseRejectedMessage.tsx +1 -0
- package/src/components/FilePathLink.tsx +1 -0
- package/src/components/FullscreenLayout.tsx +1 -0
- package/src/components/GlobalSearchDialog.tsx +2 -1
- package/src/components/HelpV2/Commands.tsx +1 -0
- package/src/components/HelpV2/HelpV2.tsx +1 -0
- package/src/components/HighlightedCode/Fallback.tsx +1 -0
- package/src/components/HighlightedCode.tsx +1 -0
- package/src/components/HistorySearchDialog.tsx +1 -0
- package/src/components/IdeAutoConnectDialog.tsx +1 -0
- package/src/components/IdeOnboardingDialog.tsx +1 -0
- package/src/components/IdeStatusIndicator.tsx +1 -0
- package/src/components/IdleReturnDialog.tsx +1 -0
- package/src/components/InvalidConfigDialog.tsx +1 -0
- package/src/components/InvalidSettingsDialog.tsx +1 -0
- package/src/components/KeybindingWarnings.tsx +1 -0
- package/src/components/LanguagePicker.tsx +1 -0
- package/src/components/LogSelector.tsx +2 -1
- package/src/components/LogoV2/ChannelsNotice.tsx +6 -5
- package/src/components/LogoV2/Clawd.tsx +1 -0
- package/src/components/LogoV2/CondensedLogo.tsx +1 -0
- package/src/components/LogoV2/Feed.tsx +1 -0
- package/src/components/LogoV2/FeedColumn.tsx +1 -0
- package/src/components/LogoV2/LogoV2.tsx +2 -1
- package/src/components/LogoV2/OverageCreditUpsell.tsx +1 -0
- package/src/components/LogoV2/WelcomeV2.tsx +1 -0
- package/src/components/LogoV2/feedConfigs.tsx +1 -0
- package/src/components/MCPServerApprovalDialog.tsx +1 -0
- package/src/components/MCPServerDesktopImportDialog.tsx +1 -0
- package/src/components/MCPServerMultiselectDialog.tsx +1 -0
- package/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx +1 -0
- package/src/components/Markdown.tsx +1 -0
- package/src/components/MemoryUsageIndicator.tsx +1 -0
- package/src/components/Message.tsx +2 -1
- package/src/components/MessageModel.tsx +1 -0
- package/src/components/MessageResponse.tsx +1 -0
- package/src/components/MessageRow.tsx +1 -0
- package/src/components/MessageSelector.tsx +2 -1
- package/src/components/MessageTimestamp.tsx +1 -0
- package/src/components/Messages.tsx +1 -0
- package/src/components/ModelPicker.tsx +4 -3
- package/src/components/NativeAutoUpdater.tsx +1 -0
- package/src/components/NotebookEditToolUseRejectedMessage.tsx +1 -0
- package/src/components/Onboarding.tsx +1 -0
- package/src/components/OutputStylePicker.tsx +1 -0
- package/src/components/PackageManagerAutoUpdater.tsx +1 -0
- package/src/components/PrBadge.tsx +1 -0
- package/src/components/PromptInput/HistorySearchInput.tsx +1 -0
- package/src/components/PromptInput/Notifications.tsx +1 -0
- package/src/components/PromptInput/PromptInput.tsx +10 -8
- package/src/components/PromptInput/PromptInputFooter.tsx +1 -0
- package/src/components/PromptInput/PromptInputFooterLeftSide.tsx +1 -0
- package/src/components/PromptInput/PromptInputFooterSuggestions.tsx +1 -0
- package/src/components/PromptInput/PromptInputHelpMenu.tsx +1 -0
- package/src/components/PromptInput/PromptInputModeIndicator.tsx +1 -0
- package/src/components/PromptInput/PromptInputStashNotice.tsx +1 -0
- package/src/components/PromptInput/SandboxPromptFooterHint.tsx +1 -0
- package/src/components/PromptInput/ShimmeredInput.tsx +1 -0
- package/src/components/PromptInput/VoiceIndicator.tsx +1 -0
- package/src/components/QuickOpenDialog.tsx +2 -1
- package/src/components/RemoteEnvironmentDialog.tsx +2 -1
- package/src/components/ResumeTask.tsx +1 -0
- package/src/components/SandboxViolationExpandedView.tsx +1 -0
- package/src/components/SearchBox.tsx +1 -0
- package/src/components/SessionBackgroundHint.tsx +1 -0
- package/src/components/SessionPreview.tsx +1 -0
- package/src/components/Settings/Config.tsx +1 -0
- package/src/components/Settings/Settings.tsx +1 -0
- package/src/components/Settings/Status.tsx +2 -1
- package/src/components/Settings/Usage.tsx +1 -0
- package/src/components/ShowInIDEPrompt.tsx +1 -0
- package/src/components/SkillImprovementSurvey.tsx +1 -0
- package/src/components/Spinner/FlashingChar.tsx +1 -0
- package/src/components/Spinner/GlimmerMessage.tsx +1 -0
- package/src/components/Spinner/ShimmerChar.tsx +1 -0
- package/src/components/Spinner/SpinnerAnimationRow.tsx +1 -0
- package/src/components/Spinner/SpinnerGlyph.tsx +1 -0
- package/src/components/Spinner/TeammateSpinnerTree.tsx +1 -0
- package/src/components/Spinner/utils.ts +1 -0
- package/src/components/Spinner.tsx +2 -1
- package/src/components/Stats.tsx +2 -1
- package/src/components/StatusNotices.tsx +1 -0
- package/src/components/StructuredDiff/Fallback.tsx +1 -0
- package/src/components/StructuredDiff.tsx +2 -1
- package/src/components/StructuredDiffList.tsx +1 -0
- package/src/components/TaskListV2.tsx +1 -0
- package/src/components/TeammateViewHeader.tsx +1 -0
- package/src/components/TeleportError.tsx +1 -0
- package/src/components/TeleportProgress.tsx +1 -0
- package/src/components/TeleportRepoMismatchDialog.tsx +1 -0
- package/src/components/TeleportResumeWrapper.tsx +1 -0
- package/src/components/TextInput.tsx +1 -0
- package/src/components/ThemePicker.tsx +1 -0
- package/src/components/ThinkingToggle.tsx +1 -0
- package/src/components/TokenWarning.tsx +1 -0
- package/src/components/ToolUseLoader.tsx +1 -0
- package/src/components/TrustDialog/TrustDialog.tsx +1 -0
- package/src/components/ValidationErrorsList.tsx +1 -0
- package/src/components/VimTextInput.tsx +1 -0
- package/src/components/VirtualMessageList.tsx +1 -0
- package/src/components/WorkflowMultiselectDialog.tsx +1 -0
- package/src/components/agents/AgentDetail.tsx +1 -0
- package/src/components/agents/AgentEditor.tsx +1 -0
- package/src/components/agents/AgentNavigationFooter.tsx +1 -0
- package/src/components/agents/AgentsList.tsx +2 -1
- package/src/components/agents/AgentsMenu.tsx +2 -1
- package/src/components/agents/ColorPicker.tsx +1 -0
- package/src/components/agents/ModelSelector.tsx +1 -0
- package/src/components/agents/ToolSelector.tsx +2 -1
- package/src/components/agents/generateAgent.ts +1 -0
- package/src/components/agents/new-agent-creation/CreateAgentWizard.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ColorStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/LocationStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ModelStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/PromptStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.tsx +1 -0
- package/src/components/agents/new-agent-creation/wizard-steps/TypeStep.tsx +1 -0
- package/src/components/design-system/Byline.tsx +1 -0
- package/src/components/design-system/Dialog.tsx +1 -0
- package/src/components/design-system/Divider.tsx +1 -0
- package/src/components/design-system/FuzzyPicker.tsx +1 -0
- package/src/components/design-system/KeyboardShortcutHint.tsx +1 -0
- package/src/components/design-system/ListItem.tsx +1 -0
- package/src/components/design-system/LoadingState.tsx +1 -0
- package/src/components/design-system/Pane.tsx +1 -0
- package/src/components/design-system/ProgressBar.tsx +1 -0
- package/src/components/design-system/Ratchet.tsx +1 -0
- package/src/components/design-system/StatusIcon.tsx +1 -0
- package/src/components/design-system/Tabs.tsx +2 -1
- package/src/components/design-system/ThemeProvider.tsx +1 -0
- package/src/components/design-system/ThemedBox.tsx +1 -0
- package/src/components/design-system/ThemedText.tsx +1 -0
- package/src/components/diff/DiffDetailView.tsx +1 -0
- package/src/components/diff/DiffDialog.tsx +1 -0
- package/src/components/diff/DiffFileList.tsx +1 -0
- package/src/components/grove/Grove.tsx +2 -1
- package/src/components/hooks/HooksConfigMenu.tsx +2 -1
- package/src/components/hooks/PromptDialog.tsx +1 -0
- package/src/components/hooks/SelectEventMode.tsx +1 -0
- package/src/components/hooks/SelectHookMode.tsx +1 -0
- package/src/components/hooks/SelectMatcherMode.tsx +1 -0
- package/src/components/hooks/ViewHookMode.tsx +1 -0
- package/src/components/mcp/CapabilitiesSection.tsx +1 -0
- package/src/components/mcp/ElicitationDialog.tsx +1 -0
- package/src/components/mcp/MCPAgentServerMenu.tsx +1 -0
- package/src/components/mcp/MCPListPanel.tsx +2 -1
- package/src/components/mcp/MCPReconnect.tsx +1 -0
- package/src/components/mcp/MCPRemoteServerMenu.tsx +1 -0
- package/src/components/mcp/MCPSettings.tsx +2 -1
- package/src/components/mcp/MCPStdioServerMenu.tsx +1 -0
- package/src/components/mcp/MCPToolDetailView.tsx +1 -0
- package/src/components/mcp/MCPToolListView.tsx +1 -0
- package/src/components/mcp/McpParsingWarnings.tsx +1 -0
- package/src/components/memory/MemoryFileSelector.tsx +2 -1
- package/src/components/memory/MemoryUpdateNotification.tsx +1 -0
- package/src/components/messageActions.tsx +1 -0
- package/src/components/messages/AdvisorMessage.tsx +1 -0
- package/src/components/messages/AssistantRedactedThinkingMessage.tsx +1 -0
- package/src/components/messages/AssistantTextMessage.tsx +1 -0
- package/src/components/messages/AssistantThinkingMessage.tsx +1 -0
- package/src/components/messages/AssistantToolUseMessage.tsx +1 -0
- package/src/components/messages/AttachmentMessage.tsx +2 -1
- package/src/components/messages/CollapsedReadSearchContent.tsx +2 -1
- package/src/components/messages/GroupedToolUseContent.tsx +1 -0
- package/src/components/messages/HighlightedThinkingText.tsx +1 -0
- package/src/components/messages/HookProgressMessage.tsx +1 -0
- package/src/components/messages/PlanApprovalMessage.tsx +1 -0
- package/src/components/messages/RateLimitMessage.tsx +1 -0
- package/src/components/messages/ShutdownMessage.tsx +1 -0
- package/src/components/messages/SystemAPIErrorMessage.tsx +1 -0
- package/src/components/messages/SystemTextMessage.tsx +2 -1
- package/src/components/messages/TaskAssignmentMessage.tsx +1 -0
- package/src/components/messages/UserAgentNotificationMessage.tsx +1 -0
- package/src/components/messages/UserBashInputMessage.tsx +1 -0
- package/src/components/messages/UserBashOutputMessage.tsx +1 -0
- package/src/components/messages/UserChannelMessage.tsx +1 -0
- package/src/components/messages/UserCommandMessage.tsx +1 -0
- package/src/components/messages/UserImageMessage.tsx +1 -0
- package/src/components/messages/UserLocalCommandOutputMessage.tsx +1 -0
- package/src/components/messages/UserMemoryInputMessage.tsx +1 -0
- package/src/components/messages/UserPlanMessage.tsx +1 -0
- package/src/components/messages/UserResourceUpdateMessage.tsx +1 -0
- package/src/components/messages/UserTeammateMessage.tsx +1 -0
- package/src/components/messages/UserTextMessage.tsx +1 -0
- package/src/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx +1 -0
- package/src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +1 -0
- package/src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +1 -0
- package/src/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +1 -0
- package/src/components/messages/UserToolResultMessage/utils.tsx +1 -0
- package/src/components/messages/nullRenderingAttachments.ts +1 -0
- package/src/components/messages/teamMemCollapsed.tsx +1 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +2 -1
- package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.tsx +1 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.tsx +2 -1
- package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.tsx +2 -1
- package/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.tsx +1 -0
- package/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +1 -0
- package/src/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx +1 -0
- package/src/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx +2 -1
- package/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +1 -0
- package/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +1 -0
- package/src/components/permissions/FallbackPermissionRequest.tsx +1 -0
- package/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +1 -0
- package/src/components/permissions/FilePermissionDialog/FilePermissionDialog.tsx +1 -0
- package/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +1 -0
- package/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +1 -0
- package/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +1 -0
- package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.tsx +1 -0
- package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.tsx +2 -1
- package/src/components/permissions/PermissionDecisionDebugInfo.tsx +2 -1
- package/src/components/permissions/PermissionDialog.tsx +1 -0
- package/src/components/permissions/PermissionExplanation.tsx +2 -1
- package/src/components/permissions/PermissionPrompt.tsx +2 -1
- package/src/components/permissions/PermissionRequest.tsx +1 -0
- package/src/components/permissions/PermissionRequestTitle.tsx +1 -0
- package/src/components/permissions/PermissionRuleExplanation.tsx +1 -0
- package/src/components/permissions/SandboxPermissionRequest.tsx +1 -0
- package/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx +1 -0
- package/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +1 -0
- package/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx +1 -0
- package/src/components/permissions/WorkerBadge.tsx +1 -0
- package/src/components/permissions/WorkerPendingPermission.tsx +1 -0
- package/src/components/permissions/rules/AddPermissionRules.tsx +1 -0
- package/src/components/permissions/rules/AddWorkspaceDirectory.tsx +2 -1
- package/src/components/permissions/rules/PermissionRuleDescription.tsx +1 -0
- package/src/components/permissions/rules/PermissionRuleInput.tsx +1 -0
- package/src/components/permissions/rules/PermissionRuleList.tsx +2 -1
- package/src/components/permissions/rules/RecentDenialsTab.tsx +1 -0
- package/src/components/permissions/rules/RemoveWorkspaceDirectory.tsx +1 -0
- package/src/components/permissions/rules/WorkspaceTab.tsx +1 -0
- package/src/components/sandbox/SandboxConfigTab.tsx +1 -0
- package/src/components/sandbox/SandboxDependenciesTab.tsx +1 -0
- package/src/components/sandbox/SandboxDoctorSection.tsx +1 -0
- package/src/components/sandbox/SandboxOverridesTab.tsx +1 -0
- package/src/components/sandbox/SandboxSettings.tsx +1 -0
- package/src/components/shell/ExpandShellOutputContext.tsx +1 -0
- package/src/components/shell/OutputLine.tsx +1 -0
- package/src/components/shell/ShellProgressMessage.tsx +1 -0
- package/src/components/shell/ShellTimeDisplay.tsx +1 -0
- package/src/components/skills/SkillsMenu.tsx +1 -0
- package/src/components/tasks/AsyncAgentDetailDialog.tsx +1 -0
- package/src/components/tasks/BackgroundTask.tsx +1 -0
- package/src/components/tasks/BackgroundTaskStatus.tsx +2 -1
- package/src/components/tasks/BackgroundTasksDialog.tsx +2 -1
- package/src/components/tasks/DreamDetailDialog.tsx +1 -0
- package/src/components/tasks/InProcessTeammateDetailDialog.tsx +1 -0
- package/src/components/tasks/RemoteSessionDetailDialog.tsx +2 -1
- package/src/components/tasks/RemoteSessionProgress.tsx +1 -0
- package/src/components/tasks/ShellDetailDialog.tsx +2 -1
- package/src/components/tasks/ShellProgress.tsx +1 -0
- package/src/components/tasks/taskStatusUtils.tsx +1 -0
- package/src/components/teams/TeamStatus.tsx +1 -0
- package/src/components/teams/TeamsDialog.tsx +2 -1
- package/src/components/ui/OrderedList.tsx +1 -0
- package/src/components/ui/OrderedListItem.tsx +1 -0
- package/src/components/ui/TreeSelect.tsx +2 -1
- package/src/components/wizard/WizardDialogLayout.tsx +1 -0
- package/src/components/wizard/WizardProvider.tsx +2 -1
- package/src/components/wizard/useWizard.ts +1 -0
- package/src/constants/betas.ts +1 -0
- package/src/constants/prompts.ts +1 -0
- package/src/context/QueuedMessageContext.tsx +1 -0
- package/src/context/fpsMetrics.tsx +1 -0
- package/src/context/mailbox.tsx +1 -0
- package/src/context/modalContext.tsx +1 -0
- package/src/context/overlayContext.tsx +1 -0
- package/src/context/promptOverlayContext.tsx +1 -0
- package/src/context/stats.tsx +1 -0
- package/src/context/voice.tsx +1 -0
- package/src/cost-tracker.ts +1 -0
- package/src/dialogLaunchers.tsx +1 -0
- package/src/entrypoints/agentSdkTypes.ts +4 -17
- package/src/entrypoints/cli.tsx +1 -0
- package/src/entrypoints/sdk/controlTypes.ts +86 -10
- package/src/entrypoints/sdk/coreTypes.generated.ts +99 -2
- package/src/entrypoints/sdk/runtimeTypes.ts +53 -18
- package/src/entrypoints/sdk/settingsTypes.generated.ts +2 -1
- package/src/hooks/notifs/useAntOrgWarningNotification.ts +1 -1
- package/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx +1 -0
- package/src/hooks/notifs/useDeprecationWarningNotification.tsx +1 -0
- package/src/hooks/notifs/useFastModeNotification.tsx +1 -0
- package/src/hooks/notifs/useIDEStatusIndicator.tsx +1 -0
- package/src/hooks/notifs/useInstallMessages.tsx +1 -0
- package/src/hooks/notifs/useLspInitializationNotification.tsx +1 -0
- package/src/hooks/notifs/useMcpConnectivityStatus.tsx +1 -0
- package/src/hooks/notifs/useNpmDeprecationNotification.tsx +1 -0
- package/src/hooks/notifs/usePluginAutoupdateNotification.tsx +1 -0
- package/src/hooks/notifs/usePluginInstallationStatus.tsx +1 -0
- package/src/hooks/notifs/useRateLimitWarningNotification.tsx +1 -0
- package/src/hooks/useCanUseTool.tsx +2 -1
- package/src/hooks/useChromeExtensionNotification.tsx +1 -0
- package/src/hooks/useClaudeCodeHintRecommendation.tsx +1 -0
- package/src/hooks/useCommandKeybindings.tsx +1 -0
- package/src/hooks/useDiffData.ts +1 -0
- package/src/hooks/useIDEIntegration.tsx +1 -0
- package/src/hooks/useLspPluginRecommendation.tsx +1 -0
- package/src/hooks/useOfficialMarketplaceNotification.tsx +1 -0
- package/src/hooks/usePluginRecommendationBase.tsx +1 -0
- package/src/hooks/usePromptsFromClaudeInChrome.tsx +1 -0
- package/src/hooks/useRemoteSession.ts +1 -0
- package/src/hooks/useReplBridge.tsx +1 -0
- package/src/hooks/useSSHSession.ts +1 -0
- package/src/hooks/useTeleportResume.tsx +1 -0
- package/src/hooks/useTurnDiffs.ts +1 -0
- package/src/hooks/useTypeahead.tsx +1 -0
- package/src/hooks/useVoiceIntegration.tsx +1 -0
- package/src/ink/Ansi.tsx +1 -0
- package/src/ink/bidi.ts +1 -0
- package/src/ink/components/AlternateScreen.tsx +1 -0
- package/src/ink/components/Box.tsx +1 -0
- package/src/ink/components/Button.tsx +1 -0
- package/src/ink/components/ClockContext.tsx +1 -0
- package/src/ink/components/Link.tsx +1 -0
- package/src/ink/components/Newline.tsx +1 -0
- package/src/ink/components/NoSelect.tsx +1 -0
- package/src/ink/components/RawAnsi.tsx +1 -0
- package/src/ink/components/ScrollBox.tsx +1 -0
- package/src/ink/components/TerminalFocusContext.tsx +1 -0
- package/src/ink/components/Text.tsx +1 -0
- package/src/ink/ink.tsx +1 -0
- package/src/ink/reconciler.ts +1 -0
- package/src/ink/render-to-screen.ts +1 -0
- package/src/interactiveHelpers.tsx +4 -4
- package/src/keybindings/KeybindingContext.tsx +2 -1
- package/src/keybindings/KeybindingProviderSetup.tsx +1 -0
- package/src/keybindings/parser.ts +1 -0
- package/src/keybindings/template.ts +1 -0
- package/src/keybindings/validate.ts +1 -0
- package/src/main.tsx +5 -7
- package/src/memdir/findRelevantMemories.ts +1 -0
- package/src/native-ts/color-diff/index.ts +1 -0
- package/src/proactive/index.ts +26 -1
- package/src/proactive/useProactive.ts +13 -1
- package/src/query/stopHooks.ts +1 -0
- package/src/query.ts +1 -0
- package/src/remote/SessionsWebSocket.ts +1 -0
- package/src/screens/Doctor.tsx +2 -1
- package/src/screens/REPL.tsx +13 -6
- package/src/screens/ResumeConversation.tsx +1 -0
- package/src/services/AgentSummary/agentSummary.ts +1 -0
- package/src/services/PromptSuggestion/promptSuggestion.ts +1 -0
- package/src/services/api/claude.ts +33 -31
- package/src/services/api/client.ts +34 -31
- package/src/services/api/errors.ts +1 -0
- package/src/services/api/logging.ts +1 -0
- package/src/services/api/openaiShim.ts +35 -8
- package/src/services/api/withRetry.ts +1 -0
- package/src/services/autoDream/autoDream.ts +1 -0
- package/src/services/claudeAiLimits.ts +1 -0
- package/src/services/compact/autoCompact.ts +1 -0
- package/src/services/compact/cachedMicrocompact.ts +56 -4
- package/src/services/compact/compact.ts +1 -0
- package/src/services/compact/microCompact.ts +1 -0
- package/src/services/compact/postCompactCleanup.ts +1 -0
- package/src/services/compact/reactiveCompact.ts +16 -1
- package/src/services/compact/sessionMemoryCompact.ts +1 -0
- package/src/services/compact/snipCompact.ts +18 -1
- package/src/services/compact/snipProjection.ts +6 -1
- package/src/services/contextCollapse/index.ts +33 -1
- package/src/services/extractMemories/extractMemories.ts +1 -0
- package/src/services/mcp/MCPConnectionManager.tsx +1 -0
- package/src/services/mcp/channelAllowlist.ts +1 -1
- package/src/services/mcp/channelNotification.ts +90 -4
- package/src/services/mcp/channelPermissions.ts +1 -1
- package/src/services/mcp/client.ts +1 -0
- package/src/services/mcp/useManageMCPConnections.ts +5 -3
- package/src/services/notifier.ts +1 -0
- package/src/services/rateLimitMocking.ts +1 -0
- package/src/services/skillSearch/localSearch.ts +1 -1
- package/src/services/skillSearch/prefetch.ts +10 -1
- package/src/services/tips/tipRegistry.ts +1 -0
- package/src/services/toolUseSummary/toolUseSummaryGenerator.ts +1 -0
- package/src/services/tools/StreamingToolExecutor.ts +1 -0
- package/src/services/tools/toolOrchestration.ts +1 -0
- package/src/services/vcr.ts +1 -0
- package/src/services/voice.ts +1 -0
- package/src/setup.ts +1 -0
- package/src/skills/bundled/claudeInChrome.ts +1 -0
- package/src/skills/bundled/keybindings.ts +1 -0
- package/src/skills/bundled/skillify.ts +1 -0
- package/src/state/AppState.tsx +10 -7
- package/src/tasks/LocalMainSessionTask.ts +1 -0
- package/src/tasks/LocalShellTask/LocalShellTask.tsx +1 -0
- package/src/tasks/LocalShellTask/killShellTasks.ts +1 -0
- package/src/tasks/RemoteAgentTask/RemoteAgentTask.tsx +1 -0
- package/src/tools/AgentTool/AgentTool.tsx +30 -3
- package/src/tools/AgentTool/UI.tsx +2 -1
- package/src/tools/AgentTool/agentToolUtils.ts +1 -0
- package/src/tools/AgentTool/builtInAgents.ts +1 -0
- package/src/tools/AgentTool/forkSubagent.ts +1 -0
- package/src/tools/AgentTool/loadAgentsDir.ts +9 -0
- package/src/tools/AgentTool/runAgent.ts +2 -0
- package/src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +1 -0
- package/src/tools/BashTool/BashTool.tsx +1 -0
- package/src/tools/BashTool/BashToolResultMessage.tsx +1 -0
- package/src/tools/BashTool/UI.tsx +1 -0
- package/src/tools/BriefTool/UI.tsx +1 -0
- package/src/tools/FileEditTool/UI.tsx +1 -0
- package/src/tools/FileEditTool/utils.ts +1 -0
- package/src/tools/FileReadTool/FileReadTool.ts +1 -0
- package/src/tools/FileReadTool/imageProcessor.ts +1 -0
- package/src/tools/FileWriteTool/UI.tsx +2 -1
- package/src/tools/GrepTool/UI.tsx +1 -0
- package/src/tools/LSPTool/UI.tsx +1 -0
- package/src/tools/MCPTool/UI.tsx +1 -0
- package/src/tools/NotebookEditTool/NotebookEditTool.ts +1 -0
- package/src/tools/NotebookEditTool/UI.tsx +1 -0
- package/src/tools/PowerShellTool/PowerShellTool.tsx +1 -0
- package/src/tools/SendMessageTool/SendMessageTool.ts +1 -0
- package/src/tools/SkillTool/SkillTool.ts +1 -0
- package/src/tools/TaskOutputTool/TaskOutputTool.tsx +1 -0
- package/src/tools/TaskStopTool/UI.tsx +1 -0
- package/src/tools/ToolSearchTool/prompt.ts +1 -0
- package/src/tools/TungstenTool/TungstenLiveMonitor.ts +3 -0
- package/src/tools/WebBrowserTool/WebBrowserPanel.ts +3 -1
- package/src/tools/WebFetchTool/utils.ts +1 -0
- package/src/tools/WebSearchTool/WebSearchTool.ts +1 -0
- package/src/tools/WorkflowTool/createWorkflowCommand.ts +3 -1
- package/src/tools/testing/TestingPermissionTool.tsx +1 -0
- package/src/tools/utils.ts +1 -0
- package/src/types/commands-js.d.ts +13 -0
- package/src/types/diff.d.ts +1 -0
- package/src/types/hooks.ts +1 -0
- package/src/types/macro.d.ts +15 -0
- package/src/types/markdown.d.ts +4 -0
- package/src/types/message.ts +56 -107
- package/src/types/react-compiler-runtime.d.ts +4 -0
- package/src/types/utils.ts +3 -3
- package/src/utils/advisor.ts +1 -0
- package/src/utils/asciicast.ts +1 -0
- package/src/utils/attachments.ts +1 -0
- package/src/utils/attribution.ts +1 -0
- package/src/utils/autoRunIssue.tsx +1 -0
- package/src/utils/claudeInChrome/mcpServer.ts +1 -0
- package/src/utils/claudeInChrome/setup.ts +1 -0
- package/src/utils/claudemd.ts +1 -0
- package/src/utils/cleanup.ts +1 -0
- package/src/utils/cliHighlight.ts +1 -0
- package/src/utils/collapseReadSearch.ts +1 -0
- package/src/utils/computerUse/executor.ts +1 -0
- package/src/utils/computerUse/gates.ts +1 -0
- package/src/utils/computerUse/hostAdapter.ts +1 -0
- package/src/utils/computerUse/inputLoader.ts +1 -0
- package/src/utils/computerUse/mcpServer.ts +1 -0
- package/src/utils/computerUse/setup.ts +1 -0
- package/src/utils/computerUse/swiftLoader.ts +1 -0
- package/src/utils/computerUse/wrapper.tsx +2 -1
- package/src/utils/context.ts +1 -0
- package/src/utils/contextAnalysis.ts +1 -0
- package/src/utils/conversationRecovery.ts +1 -0
- package/src/utils/deepLink/protocolHandler.ts +1 -0
- package/src/utils/diff.ts +1 -0
- package/src/utils/effort.ts +1 -0
- package/src/utils/envUtils.ts +1 -0
- package/src/utils/execFileNoThrowPortable.ts +1 -0
- package/src/utils/fileHistory.ts +1 -0
- package/src/utils/filePersistence/filePersistence.ts +1 -0
- package/src/utils/filePersistence/outputsScanner.ts +1 -0
- package/src/utils/gitDiff.ts +1 -0
- package/src/utils/groupToolUses.ts +1 -0
- package/src/utils/hooks/hooksConfigManager.ts +1 -0
- package/src/utils/hooks/skillImprovement.ts +1 -0
- package/src/utils/hooks.ts +1 -0
- package/src/utils/imagePaste.ts +1 -0
- package/src/utils/log.ts +1 -0
- package/src/utils/logoV2Utils.ts +6 -6
- package/src/utils/messageQueueManager.ts +1 -0
- package/src/utils/messages.ts +122 -100
- package/src/utils/model/agent.ts +43 -2
- package/src/utils/model/configs.ts +1 -1
- package/src/utils/model/deprecation.ts +1 -0
- package/src/utils/model/fetchModels.ts +11 -1
- package/src/utils/model/model.ts +31 -0
- package/src/utils/model/modelCapabilities.ts +1 -0
- package/src/utils/model/modelOptions.ts +68 -14
- package/src/utils/model/modelStrings.ts +1 -0
- package/src/utils/model/platformProfiles.ts +524 -0
- package/src/utils/model/thirdPartyProviders.ts +158 -15
- package/src/utils/modelCost.ts +1 -0
- package/src/utils/notebook.ts +1 -0
- package/src/utils/permissions/classifierDecision.ts +1 -0
- package/src/utils/permissions/pathValidation.ts +1 -0
- package/src/utils/permissions/permissionExplainer.ts +1 -0
- package/src/utils/plugins/loadPluginHooks.ts +1 -0
- package/src/utils/plugins/lspPluginIntegration.ts +1 -0
- package/src/utils/plugins/pluginLoader.ts +1 -0
- package/src/utils/preflightChecks.tsx +2 -1
- package/src/utils/processUserInput/processSlashCommand.tsx +13 -3
- package/src/utils/queryHelpers.ts +1 -0
- package/src/utils/readFileInRange.ts +1 -0
- package/src/utils/sandbox/sandbox-adapter.ts +24 -22
- package/src/utils/sessionFileAccessHooks.ts +1 -0
- package/src/utils/sessionRestore.ts +1 -0
- package/src/utils/sessionStorage.ts +84 -46
- package/src/utils/settings/types.ts +72 -0
- package/src/utils/shell/prefix.ts +1 -0
- package/src/utils/sideQuery.ts +1 -0
- package/src/utils/sliceAnsi.ts +1 -0
- package/src/utils/staticRender.tsx +1 -0
- package/src/utils/stats.ts +1 -0
- package/src/utils/status.tsx +1 -0
- package/src/utils/swarm/It2SetupPrompt.tsx +2 -1
- package/src/utils/swarm/teammateModel.ts +1 -0
- package/src/utils/taskSummary.ts +6 -1
- package/src/utils/textHighlighting.ts +1 -0
- package/src/utils/thinking.ts +1 -0
- package/src/utils/toolResultStorage.ts +1 -0
- package/src/utils/transcriptSearch.ts +1 -0
- package/src/utils/worktree.ts +1 -0
- package/stubs/@anthropic-ai/mcpb/index.d.ts +23 -1
- package/stubs/@anthropic-ai/sandbox-runtime/index.d.ts +39 -1
- package/.gitignore.bak +0 -11
- package/bin/mumuclaw +0 -154
- package/bin/opencc +0 -50
- package/src/channels/heartbeat-channel.mjs +0 -280
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mumucc",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "Open-source AI coding assistant CLI with multi-model support (Anthropic, OpenAI/GPT, DeepSeek, GLM, Ollama, etc.), MCP integration, agent swarms, and out-of-the-box developer experience.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,8 +27,7 @@
|
|
|
27
27
|
"src/*": "./src/*"
|
|
28
28
|
},
|
|
29
29
|
"bin": {
|
|
30
|
-
"mumucc": "./bin/mumucc"
|
|
31
|
-
"mumuclaw": "./bin/mumuclaw"
|
|
30
|
+
"mumucc": "./bin/mumucc"
|
|
32
31
|
},
|
|
33
32
|
"scripts": {
|
|
34
33
|
"start": "bun run --preload ./shims/globals.ts src/main.tsx",
|
|
@@ -102,6 +101,7 @@
|
|
|
102
101
|
"lodash-es": "^4",
|
|
103
102
|
"lru-cache": "^11",
|
|
104
103
|
"marked": "^15",
|
|
104
|
+
"modifiers-napi": "file:./stubs/modifiers-napi",
|
|
105
105
|
"p-map": "^7",
|
|
106
106
|
"picomatch": "^4",
|
|
107
107
|
"proper-lockfile": "^4",
|
package/shims/bun-bundle.ts
CHANGED
|
@@ -28,9 +28,6 @@ const DEFAULT_ENABLED: Set<string> = new Set([
|
|
|
28
28
|
'HOOK_PROMPTS',
|
|
29
29
|
'DOWNLOAD_USER_SETTINGS',
|
|
30
30
|
'UPLOAD_USER_SETTINGS',
|
|
31
|
-
'KAIROS', // mumucc: 启用 channels/proactive 功能
|
|
32
|
-
'KAIROS_CHANNELS', // mumucc: 启用 channels 支持
|
|
33
|
-
'PROACTIVE', // mumucc: 启用 proactive 功能
|
|
34
31
|
])
|
|
35
32
|
|
|
36
33
|
// Parse env override
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type MacroShape = {
|
|
2
|
+
VERSION: string
|
|
3
|
+
BUILD_TIME: string
|
|
4
|
+
VERSION_CHANGELOG: string
|
|
5
|
+
PACKAGE_URL: string
|
|
6
|
+
NATIVE_PACKAGE_URL: string
|
|
7
|
+
FEEDBACK_CHANNEL: string
|
|
8
|
+
ISSUES_EXPLAINER: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
declare global {
|
|
12
|
+
var MACRO: MacroShape
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export {}
|
package/shims/globals.ts
CHANGED
package/src/QueryEngine.ts
CHANGED
package/src/assistant/gate.ts
CHANGED
package/src/assistant/index.ts
CHANGED
|
@@ -1,2 +1,30 @@
|
|
|
1
1
|
// AUTO-GENERATED STUB — module missing from leaked source
|
|
2
|
-
|
|
2
|
+
// Keep a minimal runtime-safe surface so feature-gated call sites typecheck.
|
|
3
|
+
|
|
4
|
+
let forcedAssistantMode = false
|
|
5
|
+
|
|
6
|
+
export function markAssistantForced(): void {
|
|
7
|
+
forcedAssistantMode = true
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function isAssistantForced(): boolean {
|
|
11
|
+
return forcedAssistantMode
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function isAssistantMode(): boolean {
|
|
15
|
+
return forcedAssistantMode
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export async function initializeAssistantTeam(): Promise<{
|
|
19
|
+
teamName: string
|
|
20
|
+
createdAt: number
|
|
21
|
+
}> {
|
|
22
|
+
return {
|
|
23
|
+
teamName: 'assistant',
|
|
24
|
+
createdAt: Date.now(),
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function getAssistantSystemPromptAddendum(): string {
|
|
29
|
+
return ''
|
|
30
|
+
}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
// AUTO-GENERATED STUB — module missing from leaked source
|
|
2
2
|
// Exports inferred from import analysis across the codebase
|
|
3
3
|
|
|
4
|
-
export type AssistantSession =
|
|
4
|
+
export type AssistantSession = {
|
|
5
|
+
id: string
|
|
6
|
+
title?: string
|
|
7
|
+
updatedAt?: number
|
|
8
|
+
[key: string]: unknown
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export async function discoverAssistantSessions(): Promise<AssistantSession[]> {
|
|
12
|
+
return []
|
|
13
|
+
}
|
package/src/bootstrap/state.ts
CHANGED
|
@@ -1425,6 +1425,9 @@ export function registerHookCallbacks(
|
|
|
1425
1425
|
|
|
1426
1426
|
// `registerHookCallbacks` may be called multiple times, so we need to merge (not overwrite)
|
|
1427
1427
|
for (const [event, matchers] of Object.entries(hooks)) {
|
|
1428
|
+
if (!matchers || matchers.length === 0) {
|
|
1429
|
+
continue
|
|
1430
|
+
}
|
|
1428
1431
|
const eventKey = event as HookEvent
|
|
1429
1432
|
if (!STATE.registeredHooks[eventKey]) {
|
|
1430
1433
|
STATE.registeredHooks[eventKey] = []
|
|
@@ -1450,6 +1453,9 @@ export function clearRegisteredPluginHooks(): void {
|
|
|
1450
1453
|
|
|
1451
1454
|
const filtered: Partial<Record<HookEvent, RegisteredHookMatcher[]>> = {}
|
|
1452
1455
|
for (const [event, matchers] of Object.entries(STATE.registeredHooks)) {
|
|
1456
|
+
if (!matchers) {
|
|
1457
|
+
continue
|
|
1458
|
+
}
|
|
1453
1459
|
// Keep only callback hooks (those without pluginRoot)
|
|
1454
1460
|
const callbackHooks = matchers.filter(m => !('pluginRoot' in m))
|
|
1455
1461
|
if (callbackHooks.length > 0) {
|
|
@@ -1755,4 +1761,3 @@ export function getPromptId(): string | null {
|
|
|
1755
1761
|
export function setPromptId(id: string | null): void {
|
|
1756
1762
|
STATE.promptId = id
|
|
1757
1763
|
}
|
|
1758
|
-
|
package/src/cli/print.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
// biome-ignore-all assist/source/organizeImports: ANT-ONLY import markers must not be reordered
|
|
2
3
|
import { feature } from 'bun:bundle'
|
|
3
4
|
import { readFile, stat } from 'fs/promises'
|
|
@@ -4671,7 +4672,9 @@ function handleChannelEnable(
|
|
|
4671
4672
|
response: { subtype: 'error', request_id: requestId, error },
|
|
4672
4673
|
})
|
|
4673
4674
|
|
|
4674
|
-
|
|
4675
|
+
if (!(feature('KAIROS') || feature('KAIROS_CHANNELS'))) {
|
|
4676
|
+
return respondError('channels feature not available in this build')
|
|
4677
|
+
}
|
|
4675
4678
|
|
|
4676
4679
|
// Only a 'connected' client has .capabilities and .client to register the
|
|
4677
4680
|
// handler on. The pool spread at the call site matches mcp_status.
|
package/src/cli/structuredIO.ts
CHANGED
|
@@ -352,7 +352,12 @@ export class StructuredIO {
|
|
|
352
352
|
// by the REPL process itself, not just child Bash commands.
|
|
353
353
|
const keys = Object.keys(message.variables)
|
|
354
354
|
for (const [key, value] of Object.entries(message.variables)) {
|
|
355
|
-
process.env[key] =
|
|
355
|
+
process.env[key] =
|
|
356
|
+
typeof value === 'string'
|
|
357
|
+
? value
|
|
358
|
+
: value == null
|
|
359
|
+
? ''
|
|
360
|
+
: String(value)
|
|
356
361
|
}
|
|
357
362
|
logForDebugging(
|
|
358
363
|
`[structuredIO] applied update_environment_variables: ${keys.join(', ')}`,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
import { c as _c } from "react/compiler-runtime";
|
|
2
3
|
import { feature } from 'bun:bundle';
|
|
3
4
|
import { toString as qrToString } from 'qrcode';
|
|
@@ -506,4 +507,4 @@ export async function call(onDone: LocalJSXCommandOnDone, _context: ToolUseConte
|
|
|
506
507
|
const name = args.trim() || undefined;
|
|
507
508
|
return <BridgeToggle onDone={onDone} name={name} />;
|
|
508
509
|
}
|
|
509
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZWF0dXJlIiwidG9TdHJpbmciLCJxclRvU3RyaW5nIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsImdldEJyaWRnZUFjY2Vzc1Rva2VuIiwiY2hlY2tCcmlkZ2VNaW5WZXJzaW9uIiwiZ2V0QnJpZGdlRGlzYWJsZWRSZWFzb24iLCJpc0Vudkxlc3NCcmlkZ2VFbmFibGVkIiwiY2hlY2tFbnZMZXNzQnJpZGdlTWluVmVyc2lvbiIsIkJSSURHRV9MT0dJTl9JTlNUUlVDVElPTiIsIlJFTU9URV9DT05UUk9MX0RJU0NPTk5FQ1RFRF9NU0ciLCJEaWFsb2ciLCJMaXN0SXRlbSIsInNob3VsZFNob3dSZW1vdGVDYWxsb3V0IiwidXNlUmVnaXN0ZXJPdmVybGF5IiwiQm94IiwiVGV4dCIsInVzZUtleWJpbmRpbmdzIiwiQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyIsImxvZ0V2ZW50IiwidXNlQXBwU3RhdGUiLCJ1c2VTZXRBcHBTdGF0ZSIsIlRvb2xVc2VDb250ZXh0IiwiTG9jYWxKU1hDb21tYW5kQ29udGV4dCIsIkxvY2FsSlNYQ29tbWFuZE9uRG9uZSIsImxvZ0ZvckRlYnVnZ2luZyIsIlByb3BzIiwib25Eb25lIiwibmFtZSIsIkJyaWRnZVRvZ2dsZSIsInQwIiwiJCIsIl9jIiwic2V0QXBwU3RhdGUiLCJyZXBsQnJpZGdlQ29ubmVjdGVkIiwiX3RlbXAiLCJyZXBsQnJpZGdlRW5hYmxlZCIsIl90ZW1wMiIsInJlcGxCcmlkZ2VPdXRib3VuZE9ubHkiLCJfdGVtcDMiLCJzaG93RGlzY29ubmVjdERpYWxvZyIsInNldFNob3dEaXNjb25uZWN0RGlhbG9nIiwidDEiLCJjYW5jZWxsZWQiLCJlcnJvciIsImNoZWNrQnJpZGdlUHJlcmVxdWlzaXRlcyIsImFjdGlvbiIsImRpc3BsYXkiLCJwcmV2Iiwic2hvd1JlbW90ZUNhbGxvdXQiLCJyZXBsQnJpZGdlSW5pdGlhbE5hbWUiLCJwcmV2XzAiLCJyZXBsQnJpZGdlRXhwbGljaXQiLCJ0MiIsIlN5bWJvbCIsImZvciIsInQzIiwic18xIiwicyIsInNfMCIsIkJyaWRnZURpc2Nvbm5lY3REaWFsb2ciLCJzZXNzaW9uVXJsIiwiX3RlbXA0IiwiY29ubmVjdFVybCIsIl90ZW1wNSIsInNlc3Npb25BY3RpdmUiLCJfdGVtcDYiLCJmb2N1c0luZGV4Iiwic2V0Rm9jdXNJbmRleCIsInNob3dRUiIsInNldFNob3dRUiIsInFyVGV4dCIsInNldFFyVGV4dCIsImRpc3BsYXlVcmwiLCJ0eXBlIiwiZXJyb3JDb3JyZWN0aW9uTGV2ZWwiLCJzbWFsbCIsInRoZW4iLCJjYXRjaCIsImhhbmRsZURpc2Nvbm5lY3QiLCJfdGVtcDciLCJ0NCIsImhhbmRsZVNob3dRUiIsIl90ZW1wOCIsInQ1IiwiaGFuZGxlQ29udGludWUiLCJ1bmRlZmluZWQiLCJ0NiIsInQ3IiwiX3RlbXA5IiwiX3RlbXAwIiwidDgiLCJzZWxlY3Q6YWNjZXB0IiwidDkiLCJjb250ZXh0IiwiVDAiLCJUMSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInQxNSIsInQxNiIsInFyTGluZXMiLCJzcGxpdCIsImZpbHRlciIsIl90ZW1wMSIsInQxNyIsImxlbmd0aCIsIm1hcCIsIl90ZW1wMTAiLCJ0MTgiLCJ0MTkiLCJ0MjAiLCJ0MjEiLCJ0MjIiLCJ0MjMiLCJ0MjQiLCJ0MjUiLCJ0MjYiLCJ0MjciLCJ0MjgiLCJ0MjkiLCJ0MzAiLCJsaW5lIiwiaV8xIiwiaSIsImwiLCJpXzAiLCJyZXBsQnJpZGdlU2Vzc2lvbkFjdGl2ZSIsInJlcGxCcmlkZ2VDb25uZWN0VXJsIiwicmVwbEJyaWRnZVNlc3Npb25VcmwiLCJQcm9taXNlIiwid2FpdEZvclBvbGljeUxpbWl0c1RvTG9hZCIsImlzUG9saWN5QWxsb3dlZCIsImRpc2FibGVkUmVhc29uIiwidXNlVjIiLCJpc0Fzc2lzdGFudE1vZGUiLCJ2ZXJzaW9uRXJyb3IiLCJjYWxsIiwiX2NvbnRleHQiLCJhcmdzIiwiUmVhY3ROb2RlIiwidHJpbSJdLCJzb3VyY2VzIjpbImJyaWRnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmVhdHVyZSB9IGZyb20gJ2J1bjpidW5kbGUnXG5pbXBvcnQgeyB0b1N0cmluZyBhcyBxclRvU3RyaW5nIH0gZnJvbSAncXJjb2RlJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBnZXRCcmlkZ2VBY2Nlc3NUb2tlbiB9IGZyb20gJy4uLy4uL2JyaWRnZS9icmlkZ2VDb25maWcuanMnXG5pbXBvcnQge1xuICBjaGVja0JyaWRnZU1pblZlcnNpb24sXG4gIGdldEJyaWRnZURpc2FibGVkUmVhc29uLFxuICBpc0Vudkxlc3NCcmlkZ2VFbmFibGVkLFxufSBmcm9tICcuLi8uLi9icmlkZ2UvYnJpZGdlRW5hYmxlZC5qcydcbmltcG9ydCB7IGNoZWNrRW52TGVzc0JyaWRnZU1pblZlcnNpb24gfSBmcm9tICcuLi8uLi9icmlkZ2UvZW52TGVzc0JyaWRnZUNvbmZpZy5qcydcbmltcG9ydCB7XG4gIEJSSURHRV9MT0dJTl9JTlNUUlVDVElPTixcbiAgUkVNT1RFX0NPTlRST0xfRElTQ09OTkVDVEVEX01TRyxcbn0gZnJvbSAnLi4vLi4vYnJpZGdlL3R5cGVzLmpzJ1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0RpYWxvZy5qcydcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0xpc3RJdGVtLmpzJ1xuaW1wb3J0IHsgc2hvdWxkU2hvd1JlbW90ZUNhbGxvdXQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1JlbW90ZUNhbGxvdXQuanMnXG5pbXBvcnQgeyB1c2VSZWdpc3Rlck92ZXJsYXkgfSBmcm9tICcuLi8uLi9jb250ZXh0L292ZXJsYXlDb250ZXh0LmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdXNlS2V5YmluZGluZ3MgfSBmcm9tICcuLi8uLi9rZXliaW5kaW5ncy91c2VLZXliaW5kaW5nLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICBsb2dFdmVudCxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvYW5hbHl0aWNzL2luZGV4LmpzJ1xuaW1wb3J0IHsgdXNlQXBwU3RhdGUsIHVzZVNldEFwcFN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvQXBwU3RhdGUuanMnXG5pbXBvcnQgdHlwZSB7IFRvb2xVc2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vVG9vbC5qcydcbmltcG9ydCB0eXBlIHtcbiAgTG9jYWxKU1hDb21tYW5kQ29udGV4dCxcbiAgTG9jYWxKU1hDb21tYW5kT25Eb25lLFxufSBmcm9tICcuLi8uLi90eXBlcy9jb21tYW5kLmpzJ1xuaW1wb3J0IHsgbG9nRm9yRGVidWdnaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVidWcuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIG9uRG9uZTogTG9jYWxKU1hDb21tYW5kT25Eb25lXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiAvcmVtb3RlLWNvbnRyb2wgY29tbWFuZCDigJQgbWFuYWdlcyB0aGUgYmlkaXJlY3Rpb25hbCBicmlkZ2UgY29ubmVjdGlvbi5cbiAqXG4gKiBXaGVuIGVuYWJsZWQsIHNldHMgcmVwbEJyaWRnZUVuYWJsZWQgaW4gQXBwU3RhdGUsIHdoaWNoIHRyaWdnZXJzXG4gKiB1c2VSZXBsQnJpZGdlIGluIFJFUEwudHN4IHRvIGluaXRpYWxpemUgdGhlIGJyaWRnZSBjb25uZWN0aW9uLlxuICogVGhlIGJyaWRnZSByZWdpc3RlcnMgYW4gZW52aXJvbm1lbnQsIGNyZWF0ZXMgYSBzZXNzaW9uIHdpdGggdGhlIGN1cnJlbnRcbiAqIGNvbnZlcnNhdGlvbiwgcG9sbHMgZm9yIHdvcmssIGFuZCBjb25uZWN0cyBhbiBpbmdyZXNzIFdlYlNvY2tldCBmb3JcbiAqIGJpZGlyZWN0aW9uYWwgbWVzc2FnaW5nIGJldHdlZW4gdGhlIENMSSBhbmQgY2xhdWRlLmFpLlxuICpcbiAqIFJ1bm5pbmcgL3JlbW90ZS1jb250cm9sIHdoZW4gYWxyZWFkeSBjb25uZWN0ZWQgc2hvd3MgYSBkaWFsb2cgd2l0aCB0aGUgc2Vzc2lvblxuICogVVJMIGFuZCBvcHRpb25zIHRvIGRpc2Nvbm5lY3Qgb3IgY29udGludWUuXG4gKi9cbmZ1bmN0aW9uIEJyaWRnZVRvZ2dsZSh7IG9uRG9uZSwgbmFtZSB9OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHNldEFwcFN0YXRlID0gdXNlU2V0QXBwU3RhdGUoKVxuICBjb25zdCByZXBsQnJpZGdlQ29ubmVjdGVkID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlcGxCcmlkZ2VDb25uZWN0ZWQpXG4gIGNvbnN0IHJlcGxCcmlkZ2VFbmFibGVkID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlcGxCcmlkZ2VFbmFibGVkKVxuICBjb25zdCByZXBsQnJpZGdlT3V0Ym91bmRPbmx5ID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlcGxCcmlkZ2VPdXRib3VuZE9ubHkpXG4gIGNvbnN0IFtzaG93RGlzY29ubmVjdERpYWxvZywgc2V0U2hvd0Rpc2Nvbm5lY3REaWFsb2ddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogYnJpZGdlIHN0YXJ0cyBvbmNlLCBzaG91bGQgbm90IHJlc3RhcnQgb24gc3RhdGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIElmIGFscmVhZHkgY29ubmVjdGVkIG9yIGVuYWJsZWQgaW4gZnVsbCBiaWRpcmVjdGlvbmFsIG1vZGUsIHNob3dcbiAgICAvLyBkaXNjb25uZWN0IGNvbmZpcm1hdGlvbi4gT3V0Ym91bmQtb25seSAoQ0NSIG1pcnJvcikgZG9lc24ndCBjb3VudCDigJRcbiAgICAvLyAvcmVtb3RlLWNvbnRyb2wgdXBncmFkZXMgaXQgdG8gZnVsbCBSQyBpbnN0ZWFkLlxuICAgIGlmICgocmVwbEJyaWRnZUNvbm5lY3RlZCB8fCByZXBsQnJpZGdlRW5hYmxlZCkgJiYgIXJlcGxCcmlkZ2VPdXRib3VuZE9ubHkpIHtcbiAgICAgIHNldFNob3dEaXNjb25uZWN0RGlhbG9nKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2VcbiAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBQcmUtZmxpZ2h0IGNoZWNrcyBiZWZvcmUgZW5hYmxpbmcgKGF3YWl0cyBHcm93dGhCb29rIGluaXQgaWYgZGlza1xuICAgICAgLy8gY2FjaGUgaXMgc3RhbGUg4oCUIHNvIE1heCB1c2VycyBkb24ndCBnZXQgYSBmYWxzZSBcIm5vdCBlbmFibGVkXCIgZXJyb3IpXG4gICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGNoZWNrQnJpZGdlUHJlcmVxdWlzaXRlcygpXG4gICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBsb2dFdmVudCgndGVuZ3VfYnJpZGdlX2NvbW1hbmQnLCB7XG4gICAgICAgICAgYWN0aW9uOlxuICAgICAgICAgICAgJ3ByZWZsaWdodF9mYWlsZWQnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICAgIG9uRG9uZShlcnJvciwgeyBkaXNwbGF5OiAnc3lzdGVtJyB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU2hvdyBmaXJzdC10aW1lIHJlbW90ZSBkaWFsb2cgaWYgbm90IHlldCBzZWVuLlxuICAgICAgLy8gU3RvcmUgdGhlIG5hbWUgbm93IHNvIGl0J3MgaW4gQXBwU3RhdGUgd2hlbiB0aGUgY2FsbG91dCBoYW5kbGVyIGxhdGVyXG4gICAgICAvLyBlbmFibGVzIHRoZSBicmlkZ2UgKHRoZSBoYW5kbGVyIG9ubHkgc2V0cyByZXBsQnJpZGdlRW5hYmxlZCwgbm90IHRoZSBuYW1lKS5cbiAgICAgIGlmIChzaG91bGRTaG93UmVtb3RlQ2FsbG91dCgpKSB7XG4gICAgICAgIHNldEFwcFN0YXRlKHByZXYgPT4ge1xuICAgICAgICAgIGlmIChwcmV2LnNob3dSZW1vdGVDYWxsb3V0KSByZXR1cm4gcHJldlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc2hvd1JlbW90ZUNhbGxvdXQ6IHRydWUsXG4gICAgICAgICAgICByZXBsQnJpZGdlSW5pdGlhbE5hbWU6IG5hbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBvbkRvbmUoJycsIHsgZGlzcGxheTogJ3N5c3RlbScgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEVuYWJsZSB0aGUgYnJpZGdlIOKAlCB1c2VSZXBsQnJpZGdlIGluIFJFUEwudHN4IGhhbmRsZXMgdGhlIHJlc3Q6XG4gICAgICAvLyByZWdpc3RlcnMgZW52aXJvbm1lbnQsIGNyZWF0ZXMgc2Vzc2lvbiB3aXRoIGNvbnZlcnNhdGlvbiwgY29ubmVjdHMgV2ViU29ja2V0XG4gICAgICBsb2dFdmVudCgndGVuZ3VfYnJpZGdlX2NvbW1hbmQnLCB7XG4gICAgICAgIGFjdGlvbjpcbiAgICAgICAgICAnY29ubmVjdCcgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgIH0pXG4gICAgICBzZXRBcHBTdGF0ZShwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYucmVwbEJyaWRnZUVuYWJsZWQgJiYgIXByZXYucmVwbEJyaWRnZU91dGJvdW5kT25seSkgcmV0dXJuIHByZXZcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIHJlcGxCcmlkZ2VFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHJlcGxCcmlkZ2VFeHBsaWNpdDogdHJ1ZSxcbiAgICAgICAgICByZXBsQnJpZGdlT3V0Ym91bmRPbmx5OiBmYWxzZSxcbiAgICAgICAgICByZXBsQnJpZGdlSW5pdGlhbE5hbWU6IG5hbWUsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBvbkRvbmUoJ1JlbW90ZSBDb250cm9sIGNvbm5lY3RpbmdcXHUyMDI2Jywge1xuICAgICAgICBkaXNwbGF5OiAnc3lzdGVtJyxcbiAgICAgIH0pXG4gICAgfSkoKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbGxlZCA9IHRydWVcbiAgICB9XG4gIH0sIFtdKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBydW4gb25jZSBvbiBtb3VudFxuXG4gIGlmIChzaG93RGlzY29ubmVjdERpYWxvZykge1xuICAgIHJldHVybiA8QnJpZGdlRGlzY29ubmVjdERpYWxvZyBvbkRvbmU9e29uRG9uZX0gLz5cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogRGlhbG9nIHNob3duIHdoZW4gL3JlbW90ZS1jb250cm9sIGlzIHVzZWQgd2hpbGUgdGhlIGJyaWRnZSBpcyBhbHJlYWR5IGNvbm5lY3RlZC5cbiAqIFNob3dzIHRoZSBzZXNzaW9uIFVSTCBhbmQgbGV0cyB0aGUgdXNlciBkaXNjb25uZWN0IG9yIGNvbnRpbnVlLlxuICovXG5mdW5jdGlvbiBCcmlkZ2VEaXNjb25uZWN0RGlhbG9nKHsgb25Eb25lIH06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgdXNlUmVnaXN0ZXJPdmVybGF5KCdicmlkZ2UtZGlzY29ubmVjdC1kaWFsb2cnKVxuICBjb25zdCBzZXRBcHBTdGF0ZSA9IHVzZVNldEFwcFN0YXRlKClcbiAgY29uc3Qgc2Vzc2lvblVybCA9IHVzZUFwcFN0YXRlKHMgPT4gcy5yZXBsQnJpZGdlU2Vzc2lvblVybClcbiAgY29uc3QgY29ubmVjdFVybCA9IHVzZUFwcFN0YXRlKHMgPT4gcy5yZXBsQnJpZGdlQ29ubmVjdFVybClcbiAgY29uc3Qgc2Vzc2lvbkFjdGl2ZSA9IHVzZUFwcFN0YXRlKHMgPT4gcy5yZXBsQnJpZGdlU2Vzc2lvbkFjdGl2ZSlcbiAgY29uc3QgW2ZvY3VzSW5kZXgsIHNldEZvY3VzSW5kZXhdID0gdXNlU3RhdGUoMilcbiAgY29uc3QgW3Nob3dRUiwgc2V0U2hvd1FSXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcXJUZXh0LCBzZXRRclRleHRdID0gdXNlU3RhdGUoJycpXG5cbiAgY29uc3QgZGlzcGxheVVybCA9IHNlc3Npb25BY3RpdmUgPyBzZXNzaW9uVXJsIDogY29ubmVjdFVybFxuXG4gIC8vIEdlbmVyYXRlIFFSIGNvZGUgd2hlbiBVUkwgY2hhbmdlcyBvciBRUiBpcyB0b2dnbGVkIG9uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93UVIgfHwgIWRpc3BsYXlVcmwpIHtcbiAgICAgIHNldFFyVGV4dCgnJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBxclRvU3RyaW5nKGRpc3BsYXlVcmwsIHtcbiAgICAgIHR5cGU6ICd1dGY4JyxcbiAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiAnTCcsXG4gICAgICBzbWFsbDogdHJ1ZSxcbiAgICB9KVxuICAgICAgLnRoZW4oc2V0UXJUZXh0KVxuICAgICAgLmNhdGNoKCgpID0+IHNldFFyVGV4dCgnJykpXG4gIH0sIFtzaG93UVIsIGRpc3BsYXlVcmxdKVxuXG4gIGZ1bmN0aW9uIGhhbmRsZURpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgc2V0QXBwU3RhdGUocHJldiA9PiB7XG4gICAgICBpZiAoIXByZXYucmVwbEJyaWRnZUVuYWJsZWQpIHJldHVybiBwcmV2XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICByZXBsQnJpZGdlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHJlcGxCcmlkZ2VFeHBsaWNpdDogZmFsc2UsXG4gICAgICAgIHJlcGxCcmlkZ2VPdXRib3VuZE9ubHk6IGZhbHNlLFxuICAgICAgfVxuICAgIH0pXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2JyaWRnZV9jb21tYW5kJywge1xuICAgICAgYWN0aW9uOlxuICAgICAgICAnZGlzY29ubmVjdCcgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICB9KVxuICAgIG9uRG9uZShSRU1PVEVfQ09OVFJPTF9ESVNDT05ORUNURURfTVNHLCB7IGRpc3BsYXk6ICdzeXN0ZW0nIH0pXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTaG93UVIoKTogdm9pZCB7XG4gICAgc2V0U2hvd1FSKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDb250aW51ZSgpOiB2b2lkIHtcbiAgICBvbkRvbmUodW5kZWZpbmVkLCB7IGRpc3BsYXk6ICdza2lwJyB9KVxuICB9XG5cbiAgY29uc3QgSVRFTV9DT1VOVCA9IDNcblxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnc2VsZWN0Om5leHQnOiAoKSA9PiBzZXRGb2N1c0luZGV4KGkgPT4gKGkgKyAxKSAlIElURU1fQ09VTlQpLFxuICAgICAgJ3NlbGVjdDpwcmV2aW91cyc6ICgpID0+XG4gICAgICAgIHNldEZvY3VzSW5kZXgoaSA9PiAoaSAtIDEgKyBJVEVNX0NPVU5UKSAlIElURU1fQ09VTlQpLFxuICAgICAgJ3NlbGVjdDphY2NlcHQnOiAoKSA9PiB7XG4gICAgICAgIGlmIChmb2N1c0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgaGFuZGxlRGlzY29ubmVjdCgpXG4gICAgICAgIH0gZWxzZSBpZiAoZm9jdXNJbmRleCA9PT0gMSkge1xuICAgICAgICAgIGhhbmRsZVNob3dRUigpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGFuZGxlQ29udGludWUoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBjb250ZXh0OiAnU2VsZWN0JyB9LFxuICApXG5cbiAgY29uc3QgcXJMaW5lcyA9IHFyVGV4dCA/IHFyVGV4dC5zcGxpdCgnXFxuJykuZmlsdGVyKGwgPT4gbC5sZW5ndGggPiAwKSA6IFtdXG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nIHRpdGxlPVwiUmVtb3RlIENvbnRyb2xcIiBvbkNhbmNlbD17aGFuZGxlQ29udGludWV9IGhpZGVJbnB1dEd1aWRlPlxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgZ2FwPXsxfT5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgVGhpcyBzZXNzaW9uIGlzIGF2YWlsYWJsZSB2aWEgUmVtb3RlIENvbnRyb2xcbiAgICAgICAgICB7ZGlzcGxheVVybCA/IGAgYXQgJHtkaXNwbGF5VXJsfWAgOiAnJ30uXG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAge3Nob3dRUiAmJiBxckxpbmVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAge3FyTGluZXMubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxUZXh0IGtleT17aX0+e2xpbmV9PC9UZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIDxMaXN0SXRlbSBpc0ZvY3VzZWQ9e2ZvY3VzSW5kZXggPT09IDB9PlxuICAgICAgICAgICAgPFRleHQ+RGlzY29ubmVjdCB0aGlzIHNlc3Npb248L1RleHQ+XG4gICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgICA8TGlzdEl0ZW0gaXNGb2N1c2VkPXtmb2N1c0luZGV4ID09PSAxfT5cbiAgICAgICAgICAgIDxUZXh0PntzaG93UVIgPyAnSGlkZSBRUiBjb2RlJyA6ICdTaG93IFFSIGNvZGUnfTwvVGV4dD5cbiAgICAgICAgICA8L0xpc3RJdGVtPlxuICAgICAgICAgIDxMaXN0SXRlbSBpc0ZvY3VzZWQ9e2ZvY3VzSW5kZXggPT09IDJ9PlxuICAgICAgICAgICAgPFRleHQ+Q29udGludWU8L1RleHQ+XG4gICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPkVudGVyIHRvIHNlbGVjdCDCtyBFc2MgdG8gY29udGludWU8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICA8L0RpYWxvZz5cbiAgKVxufVxuXG4vKipcbiAqIENoZWNrIGJyaWRnZSBwcmVyZXF1aXNpdGVzLiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgaWYgYSBwcmVjb25kaXRpb25cbiAqIGZhaWxzLCBvciBudWxsIGlmIGFsbCBjaGVja3MgcGFzcy4gQXdhaXRzIEdyb3d0aEJvb2sgaW5pdCBpZiB0aGUgZGlza1xuICogY2FjaGUgaXMgc3RhbGUsIHNvIGEgdXNlciB3aG8ganVzdCBiZWNhbWUgZW50aXRsZWQgKGUuZy4gdXBncmFkZWQgdG8gTWF4LFxuICogb3IgdGhlIGZsYWcganVzdCBsYXVuY2hlZCkgZ2V0cyBhbiBhY2N1cmF0ZSByZXN1bHQgb24gdGhlIGZpcnN0IHRyeS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tCcmlkZ2VQcmVyZXF1aXNpdGVzKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAvLyBDaGVjayBvcmdhbml6YXRpb24gcG9saWN5IOKAlCByZW1vdGUgY29udHJvbCBtYXkgYmUgZGlzYWJsZWRcbiAgY29uc3QgeyB3YWl0Rm9yUG9saWN5TGltaXRzVG9Mb2FkLCBpc1BvbGljeUFsbG93ZWQgfSA9IGF3YWl0IGltcG9ydChcbiAgICAnLi4vLi4vc2VydmljZXMvcG9saWN5TGltaXRzL2luZGV4LmpzJ1xuICApXG4gIGF3YWl0IHdhaXRGb3JQb2xpY3lMaW1pdHNUb0xvYWQoKVxuICBpZiAoIWlzUG9saWN5QWxsb3dlZCgnYWxsb3dfcmVtb3RlX2NvbnRyb2wnKSkge1xuICAgIHJldHVybiBcIlJlbW90ZSBDb250cm9sIGlzIGRpc2FibGVkIGJ5IHlvdXIgb3JnYW5pemF0aW9uJ3MgcG9saWN5LlwiXG4gIH1cblxuICBjb25zdCBkaXNhYmxlZFJlYXNvbiA9IGF3YWl0IGdldEJyaWRnZURpc2FibGVkUmVhc29uKClcbiAgaWYgKGRpc2FibGVkUmVhc29uKSB7XG4gICAgcmV0dXJuIGRpc2FibGVkUmVhc29uXG4gIH1cblxuICAvLyBNaXJyb3IgdGhlIHYxL3YyIGJyYW5jaGluZyBsb2dpYyBpbiBpbml0UmVwbEJyaWRnZTogZW52LWxlc3MgKHYyKSBpcyB1c2VkXG4gIC8vIG9ubHkgd2hlbiB0aGUgZmxhZyBpcyBvbiBBTkQgdGhlIHNlc3Npb24gaXMgbm90IHBlcnBldHVhbC4gIEluIGFzc2lzdGFudFxuICAvLyBtb2RlIChLQUlST1MpIHVzZVJlcGxCcmlkZ2Ugc2V0cyBwZXJwZXR1YWw9dHJ1ZSwgd2hpY2ggZm9yY2VzXG4gIC8vIGluaXRSZXBsQnJpZGdlIG9udG8gdGhlIHYxIHBhdGgg4oCUIHNvIHRoZSBwcmVyZXF1aXNpdGUgY2hlY2sgbXVzdCBtYXRjaC5cbiAgbGV0IHVzZVYyID0gaXNFbnZMZXNzQnJpZGdlRW5hYmxlZCgpXG4gIGlmIChmZWF0dXJlKCdLQUlST1MnKSAmJiB1c2VWMikge1xuICAgIGNvbnN0IHsgaXNBc3Npc3RhbnRNb2RlIH0gPSBhd2FpdCBpbXBvcnQoJy4uLy4uL2Fzc2lzdGFudC9pbmRleC5qcycpXG4gICAgaWYgKGlzQXNzaXN0YW50TW9kZSgpKSB7XG4gICAgICB1c2VWMiA9IGZhbHNlXG4gICAgfVxuICB9XG4gIGNvbnN0IHZlcnNpb25FcnJvciA9IHVzZVYyXG4gICAgPyBhd2FpdCBjaGVja0Vudkxlc3NCcmlkZ2VNaW5WZXJzaW9uKClcbiAgICA6IGNoZWNrQnJpZGdlTWluVmVyc2lvbigpXG4gIGlmICh2ZXJzaW9uRXJyb3IpIHtcbiAgICByZXR1cm4gdmVyc2lvbkVycm9yXG4gIH1cblxuICBpZiAoIWdldEJyaWRnZUFjY2Vzc1Rva2VuKCkpIHtcbiAgICByZXR1cm4gQlJJREdFX0xPR0lOX0lOU1RSVUNUSU9OXG4gIH1cblxuICBsb2dGb3JEZWJ1Z2dpbmcoJ1ticmlkZ2VdIFByZXJlcXVpc2l0ZXMgcGFzc2VkLCBlbmFibGluZyBicmlkZ2UnKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbChcbiAgb25Eb25lOiBMb2NhbEpTWENvbW1hbmRPbkRvbmUsXG4gIF9jb250ZXh0OiBUb29sVXNlQ29udGV4dCAmIExvY2FsSlNYQ29tbWFuZENvbnRleHQsXG4gIGFyZ3M6IHN0cmluZyxcbik6IFByb21pc2U8UmVhY3QuUmVhY3ROb2RlPiB7XG4gIGNvbnN0IG5hbWUgPSBhcmdzLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgcmV0dXJuIDxCcmlkZ2VUb2dnbGUgb25Eb25lPXtvbkRvbmV9IG5hbWU9e25hbWV9IC8+XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxRQUFRLElBQUlDLFVBQVUsUUFBUSxRQUFRO0FBQy9DLE9BQU8sS0FBS0MsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzQyxTQUFTQyxvQkFBb0IsUUFBUSw4QkFBOEI7QUFDbkUsU0FDRUMscUJBQXFCLEVBQ3JCQyx1QkFBdUIsRUFDdkJDLHNCQUFzQixRQUNqQiwrQkFBK0I7QUFDdEMsU0FBU0MsNEJBQTRCLFFBQVEscUNBQXFDO0FBQ2xGLFNBQ0VDLHdCQUF3QixFQUN4QkMsK0JBQStCLFFBQzFCLHVCQUF1QjtBQUM5QixTQUFTQyxNQUFNLFFBQVEsMENBQTBDO0FBQ2pFLFNBQVNDLFFBQVEsUUFBUSw0Q0FBNEM7QUFDckUsU0FBU0MsdUJBQXVCLFFBQVEsbUNBQW1DO0FBQzNFLFNBQVNDLGtCQUFrQixRQUFRLGlD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
|
|
510
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZWF0dXJlIiwidG9TdHJpbmciLCJxclRvU3RyaW5nIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsImdldEJyaWRnZUFjY2Vzc1Rva2VuIiwiY2hlY2tCcmlkZ2VNaW5WZXJzaW9uIiwiZ2V0QnJpZGdlRGlzYWJsZWRSZWFzb24iLCJpc0Vudkxlc3NCcmlkZ2VFbmFibGVkIiwiY2hlY2tFbnZMZXNzQnJpZGdlTWluVmVyc2lvbiIsIkJSSURHRV9MT0dJTl9JTlNUUlVDVElPTiIsIlJFTU9URV9DT05UUk9MX0RJU0NPTk5FQ1RFRF9NU0ciLCJEaWFsb2ciLCJMaXN0SXRlbSIsInNob3VsZFNob3dSZW1vdGVDYWxsb3V0IiwidXNlUmVnaXN0ZXJPdmVybGF5IiwiQm94IiwiVGV4dCIsInVzZUtleWJpbmRpbmdzIiwiQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyIsImxvZ0V2ZW50IiwidXNlQXBwU3RhdGUiLCJ1c2VTZXRBcHBTdGF0ZSIsIlRvb2xVc2VDb250ZXh0IiwiTG9jYWxKU1hDb21tYW5kQ29udGV4dCIsIkxvY2FsSlNYQ29tbWFuZE9uRG9uZSIsImxvZ0ZvckRlYnVnZ2luZyIsIlByb3BzIiwib25Eb25lIiwibmFtZSIsIkJyaWRnZVRvZ2dsZSIsInQwIiwiJCIsIl9jIiwic2V0QXBwU3RhdGUiLCJyZXBsQnJpZGdlQ29ubmVjdGVkIiwiX3RlbXAiLCJyZXBsQnJpZGdlRW5hYmxlZCIsIl90ZW1wMiIsInJlcGxCcmlkZ2VPdXRib3VuZE9ubHkiLCJfdGVtcDMiLCJzaG93RGlzY29ubmVjdERpYWxvZyIsInNldFNob3dEaXNjb25uZWN0RGlhbG9nIiwidDEiLCJjYW5jZWxsZWQiLCJlcnJvciIsImNoZWNrQnJpZGdlUHJlcmVxdWlzaXRlcyIsImFjdGlvbiIsImRpc3BsYXkiLCJwcmV2Iiwic2hvd1JlbW90ZUNhbGxvdXQiLCJyZXBsQnJpZGdlSW5pdGlhbE5hbWUiLCJwcmV2XzAiLCJyZXBsQnJpZGdlRXhwbGljaXQiLCJ0MiIsIlN5bWJvbCIsImZvciIsInQzIiwic18xIiwicyIsInNfMCIsIkJyaWRnZURpc2Nvbm5lY3REaWFsb2ciLCJzZXNzaW9uVXJsIiwiX3RlbXA0IiwiY29ubmVjdFVybCIsIl90ZW1wNSIsInNlc3Npb25BY3RpdmUiLCJfdGVtcDYiLCJmb2N1c0luZGV4Iiwic2V0Rm9jdXNJbmRleCIsInNob3dRUiIsInNldFNob3dRUiIsInFyVGV4dCIsInNldFFyVGV4dCIsImRpc3BsYXlVcmwiLCJ0eXBlIiwiZXJyb3JDb3JyZWN0aW9uTGV2ZWwiLCJzbWFsbCIsInRoZW4iLCJjYXRjaCIsImhhbmRsZURpc2Nvbm5lY3QiLCJfdGVtcDciLCJ0NCIsImhhbmRsZVNob3dRUiIsIl90ZW1wOCIsInQ1IiwiaGFuZGxlQ29udGludWUiLCJ1bmRlZmluZWQiLCJ0NiIsInQ3IiwiX3RlbXA5IiwiX3RlbXAwIiwidDgiLCJzZWxlY3Q6YWNjZXB0IiwidDkiLCJjb250ZXh0IiwiVDAiLCJUMSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInQxNSIsInQxNiIsInFyTGluZXMiLCJzcGxpdCIsImZpbHRlciIsIl90ZW1wMSIsInQxNyIsImxlbmd0aCIsIm1hcCIsIl90ZW1wMTAiLCJ0MTgiLCJ0MTkiLCJ0MjAiLCJ0MjEiLCJ0MjIiLCJ0MjMiLCJ0MjQiLCJ0MjUiLCJ0MjYiLCJ0MjciLCJ0MjgiLCJ0MjkiLCJ0MzAiLCJsaW5lIiwiaV8xIiwiaSIsImwiLCJpXzAiLCJyZXBsQnJpZGdlU2Vzc2lvbkFjdGl2ZSIsInJlcGxCcmlkZ2VDb25uZWN0VXJsIiwicmVwbEJyaWRnZVNlc3Npb25VcmwiLCJQcm9taXNlIiwid2FpdEZvclBvbGljeUxpbWl0c1RvTG9hZCIsImlzUG9saWN5QWxsb3dlZCIsImRpc2FibGVkUmVhc29uIiwidXNlVjIiLCJpc0Fzc2lzdGFudE1vZGUiLCJ2ZXJzaW9uRXJyb3IiLCJjYWxsIiwiX2NvbnRleHQiLCJhcmdzIiwiUmVhY3ROb2RlIiwidHJpbSJdLCJzb3VyY2VzIjpbImJyaWRnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmVhdHVyZSB9IGZyb20gJ2J1bjpidW5kbGUnXG5pbXBvcnQgeyB0b1N0cmluZyBhcyBxclRvU3RyaW5nIH0gZnJvbSAncXJjb2RlJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBnZXRCcmlkZ2VBY2Nlc3NUb2tlbiB9IGZyb20gJy4uLy4uL2JyaWRnZS9icmlkZ2VDb25maWcuanMnXG5pbXBvcnQge1xuICBjaGVja0JyaWRnZU1pblZlcnNpb24sXG4gIGdldEJyaWRnZURpc2FibGVkUmVhc29uLFxuICBpc0Vudkxlc3NCcmlkZ2VFbmFibGVkLFxufSBmcm9tICcuLi8uLi9icmlkZ2UvYnJpZGdlRW5hYmxlZC5qcydcbmltcG9ydCB7IGNoZWNrRW52TGVzc0JyaWRnZU1pblZlcnNpb24gfSBmcm9tICcuLi8uLi9icmlkZ2UvZW52TGVzc0JyaWRnZUNvbmZpZy5qcydcbmltcG9ydCB7XG4gIEJSSURHRV9MT0dJTl9JTlNUUlVDVElPTixcbiAgUkVNT1RFX0NPTlRST0xfRElTQ09OTkVDVEVEX01TRyxcbn0gZnJvbSAnLi4vLi4vYnJpZGdlL3R5cGVzLmpzJ1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0RpYWxvZy5qcydcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0xpc3RJdGVtLmpzJ1xuaW1wb3J0IHsgc2hvdWxkU2hvd1JlbW90ZUNhbGxvdXQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1JlbW90ZUNhbGxvdXQuanMnXG5pbXBvcnQgeyB1c2VSZWdpc3Rlck92ZXJsYXkgfSBmcm9tICcuLi8uLi9jb250ZXh0L292ZXJsYXlDb250ZXh0LmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdXNlS2V5YmluZGluZ3MgfSBmcm9tICcuLi8uLi9rZXliaW5kaW5ncy91c2VLZXliaW5kaW5nLmpzJ1xuaW1wb3J0IHtcbiAgdHlwZSBBbmFseXRpY3NNZXRhZGF0YV9JX1ZFUklGSUVEX1RISVNfSVNfTk9UX0NPREVfT1JfRklMRVBBVEhTLFxuICBsb2dFdmVudCxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvYW5hbHl0aWNzL2luZGV4LmpzJ1xuaW1wb3J0IHsgdXNlQXBwU3RhdGUsIHVzZVNldEFwcFN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvQXBwU3RhdGUuanMnXG5pbXBvcnQgdHlwZSB7IFRvb2xVc2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vVG9vbC5qcydcbmltcG9ydCB0eXBlIHtcbiAgTG9jYWxKU1hDb21tYW5kQ29udGV4dCxcbiAgTG9jYWxKU1hDb21tYW5kT25Eb25lLFxufSBmcm9tICcuLi8uLi90eXBlcy9jb21tYW5kLmpzJ1xuaW1wb3J0IHsgbG9nRm9yRGVidWdnaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVidWcuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIG9uRG9uZTogTG9jYWxKU1hDb21tYW5kT25Eb25lXG4gIG5hbWU/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiAvcmVtb3RlLWNvbnRyb2wgY29tbWFuZCDigJQgbWFuYWdlcyB0aGUgYmlkaXJlY3Rpb25hbCBicmlkZ2UgY29ubmVjdGlvbi5cbiAqXG4gKiBXaGVuIGVuYWJsZWQsIHNldHMgcmVwbEJyaWRnZUVuYWJsZWQgaW4gQXBwU3RhdGUsIHdoaWNoIHRyaWdnZXJzXG4gKiB1c2VSZXBsQnJpZGdlIGluIFJFUEwudHN4IHRvIGluaXRpYWxpemUgdGhlIGJyaWRnZSBjb25uZWN0aW9uLlxuICogVGhlIGJyaWRnZSByZWdpc3RlcnMgYW4gZW52aXJvbm1lbnQsIGNyZWF0ZXMgYSBzZXNzaW9uIHdpdGggdGhlIGN1cnJlbnRcbiAqIGNvbnZlcnNhdGlvbiwgcG9sbHMgZm9yIHdvcmssIGFuZCBjb25uZWN0cyBhbiBpbmdyZXNzIFdlYlNvY2tldCBmb3JcbiAqIGJpZGlyZWN0aW9uYWwgbWVzc2FnaW5nIGJldHdlZW4gdGhlIENMSSBhbmQgY2xhdWRlLmFpLlxuICpcbiAqIFJ1bm5pbmcgL3JlbW90ZS1jb250cm9sIHdoZW4gYWxyZWFkeSBjb25uZWN0ZWQgc2hvd3MgYSBkaWFsb2cgd2l0aCB0aGUgc2Vzc2lvblxuICogVVJMIGFuZCBvcHRpb25zIHRvIGRpc2Nvbm5lY3Qgb3IgY29udGludWUuXG4gKi9cbmZ1bmN0aW9uIEJyaWRnZVRvZ2dsZSh7IG9uRG9uZSwgbmFtZSB9OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHNldEFwcFN0YXRlID0gdXNlU2V0QXBwU3RhdGUoKVxuICBjb25zdCByZXBsQnJpZGdlQ29ubmVjdGVkID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlcGxCcmlkZ2VDb25uZWN0ZWQpXG4gIGNvbnN0IHJlcGxCcmlkZ2VFbmFibGVkID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlcGxCcmlkZ2VFbmFibGVkKVxuICBjb25zdCByZXBsQnJpZGdlT3V0Ym91bmRPbmx5ID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlcGxCcmlkZ2VPdXRib3VuZE9ubHkpXG4gIGNvbnN0IFtzaG93RGlzY29ubmVjdERpYWxvZywgc2V0U2hvd0Rpc2Nvbm5lY3REaWFsb2ddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogYnJpZGdlIHN0YXJ0cyBvbmNlLCBzaG91bGQgbm90IHJlc3RhcnQgb24gc3RhdGUgY2hhbmdlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIElmIGFscmVhZHkgY29ubmVjdGVkIG9yIGVuYWJsZWQgaW4gZnVsbCBiaWRpcmVjdGlvbmFsIG1vZGUsIHNob3dcbiAgICAvLyBkaXNjb25uZWN0IGNvbmZpcm1hdGlvbi4gT3V0Ym91bmQtb25seSAoQ0NSIG1pcnJvcikgZG9lc24ndCBjb3VudCDigJRcbiAgICAvLyAvcmVtb3RlLWNvbnRyb2wgdXBncmFkZXMgaXQgdG8gZnVsbCBSQyBpbnN0ZWFkLlxuICAgIGlmICgocmVwbEJyaWRnZUNvbm5lY3RlZCB8fCByZXBsQnJpZGdlRW5hYmxlZCkgJiYgIXJlcGxCcmlkZ2VPdXRib3VuZE9ubHkpIHtcbiAgICAgIHNldFNob3dEaXNjb25uZWN0RGlhbG9nKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2VcbiAgICB2b2lkIChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBQcmUtZmxpZ2h0IGNoZWNrcyBiZWZvcmUgZW5hYmxpbmcgKGF3YWl0cyBHcm93dGhCb29rIGluaXQgaWYgZGlza1xuICAgICAgLy8gY2FjaGUgaXMgc3RhbGUg4oCUIHNvIE1heCB1c2VycyBkb24ndCBnZXQgYSBmYWxzZSBcIm5vdCBlbmFibGVkXCIgZXJyb3IpXG4gICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGNoZWNrQnJpZGdlUHJlcmVxdWlzaXRlcygpXG4gICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBsb2dFdmVudCgndGVuZ3VfYnJpZGdlX2NvbW1hbmQnLCB7XG4gICAgICAgICAgYWN0aW9uOlxuICAgICAgICAgICAgJ3ByZWZsaWdodF9mYWlsZWQnIGFzIEFuYWx5dGljc01ldGFkYXRhX0lfVkVSSUZJRURfVEhJU19JU19OT1RfQ09ERV9PUl9GSUxFUEFUSFMsXG4gICAgICAgIH0pXG4gICAgICAgIG9uRG9uZShlcnJvciwgeyBkaXNwbGF5OiAnc3lzdGVtJyB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU2hvdyBmaXJzdC10aW1lIHJlbW90ZSBkaWFsb2cgaWYgbm90IHlldCBzZWVuLlxuICAgICAgLy8gU3RvcmUgdGhlIG5hbWUgbm93IHNvIGl0J3MgaW4gQXBwU3RhdGUgd2hlbiB0aGUgY2FsbG91dCBoYW5kbGVyIGxhdGVyXG4gICAgICAvLyBlbmFibGVzIHRoZSBicmlkZ2UgKHRoZSBoYW5kbGVyIG9ubHkgc2V0cyByZXBsQnJpZGdlRW5hYmxlZCwgbm90IHRoZSBuYW1lKS5cbiAgICAgIGlmIChzaG91bGRTaG93UmVtb3RlQ2FsbG91dCgpKSB7XG4gICAgICAgIHNldEFwcFN0YXRlKHByZXYgPT4ge1xuICAgICAgICAgIGlmIChwcmV2LnNob3dSZW1vdGVDYWxsb3V0KSByZXR1cm4gcHJldlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgc2hvd1JlbW90ZUNhbGxvdXQ6IHRydWUsXG4gICAgICAgICAgICByZXBsQnJpZGdlSW5pdGlhbE5hbWU6IG5hbWUsXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBvbkRvbmUoJycsIHsgZGlzcGxheTogJ3N5c3RlbScgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEVuYWJsZSB0aGUgYnJpZGdlIOKAlCB1c2VSZXBsQnJpZGdlIGluIFJFUEwudHN4IGhhbmRsZXMgdGhlIHJlc3Q6XG4gICAgICAvLyByZWdpc3RlcnMgZW52aXJvbm1lbnQsIGNyZWF0ZXMgc2Vzc2lvbiB3aXRoIGNvbnZlcnNhdGlvbiwgY29ubmVjdHMgV2ViU29ja2V0XG4gICAgICBsb2dFdmVudCgndGVuZ3VfYnJpZGdlX2NvbW1hbmQnLCB7XG4gICAgICAgIGFjdGlvbjpcbiAgICAgICAgICAnY29ubmVjdCcgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICAgIH0pXG4gICAgICBzZXRBcHBTdGF0ZShwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYucmVwbEJyaWRnZUVuYWJsZWQgJiYgIXByZXYucmVwbEJyaWRnZU91dGJvdW5kT25seSkgcmV0dXJuIHByZXZcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIHJlcGxCcmlkZ2VFbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHJlcGxCcmlkZ2VFeHBsaWNpdDogdHJ1ZSxcbiAgICAgICAgICByZXBsQnJpZGdlT3V0Ym91bmRPbmx5OiBmYWxzZSxcbiAgICAgICAgICByZXBsQnJpZGdlSW5pdGlhbE5hbWU6IG5hbWUsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBvbkRvbmUoJ1JlbW90ZSBDb250cm9sIGNvbm5lY3RpbmdcXHUyMDI2Jywge1xuICAgICAgICBkaXNwbGF5OiAnc3lzdGVtJyxcbiAgICAgIH0pXG4gICAgfSkoKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbGxlZCA9IHRydWVcbiAgICB9XG4gIH0sIFtdKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBydW4gb25jZSBvbiBtb3VudFxuXG4gIGlmIChzaG93RGlzY29ubmVjdERpYWxvZykge1xuICAgIHJldHVybiA8QnJpZGdlRGlzY29ubmVjdERpYWxvZyBvbkRvbmU9e29uRG9uZX0gLz5cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogRGlhbG9nIHNob3duIHdoZW4gL3JlbW90ZS1jb250cm9sIGlzIHVzZWQgd2hpbGUgdGhlIGJyaWRnZSBpcyBhbHJlYWR5IGNvbm5lY3RlZC5cbiAqIFNob3dzIHRoZSBzZXNzaW9uIFVSTCBhbmQgbGV0cyB0aGUgdXNlciBkaXNjb25uZWN0IG9yIGNvbnRpbnVlLlxuICovXG5mdW5jdGlvbiBCcmlkZ2VEaXNjb25uZWN0RGlhbG9nKHsgb25Eb25lIH06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgdXNlUmVnaXN0ZXJPdmVybGF5KCdicmlkZ2UtZGlzY29ubmVjdC1kaWFsb2cnKVxuICBjb25zdCBzZXRBcHBTdGF0ZSA9IHVzZVNldEFwcFN0YXRlKClcbiAgY29uc3Qgc2Vzc2lvblVybCA9IHVzZUFwcFN0YXRlKHMgPT4gcy5yZXBsQnJpZGdlU2Vzc2lvblVybClcbiAgY29uc3QgY29ubmVjdFVybCA9IHVzZUFwcFN0YXRlKHMgPT4gcy5yZXBsQnJpZGdlQ29ubmVjdFVybClcbiAgY29uc3Qgc2Vzc2lvbkFjdGl2ZSA9IHVzZUFwcFN0YXRlKHMgPT4gcy5yZXBsQnJpZGdlU2Vzc2lvbkFjdGl2ZSlcbiAgY29uc3QgW2ZvY3VzSW5kZXgsIHNldEZvY3VzSW5kZXhdID0gdXNlU3RhdGUoMilcbiAgY29uc3QgW3Nob3dRUiwgc2V0U2hvd1FSXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcXJUZXh0LCBzZXRRclRleHRdID0gdXNlU3RhdGUoJycpXG5cbiAgY29uc3QgZGlzcGxheVVybCA9IHNlc3Npb25BY3RpdmUgPyBzZXNzaW9uVXJsIDogY29ubmVjdFVybFxuXG4gIC8vIEdlbmVyYXRlIFFSIGNvZGUgd2hlbiBVUkwgY2hhbmdlcyBvciBRUiBpcyB0b2dnbGVkIG9uXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93UVIgfHwgIWRpc3BsYXlVcmwpIHtcbiAgICAgIHNldFFyVGV4dCgnJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBxclRvU3RyaW5nKGRpc3BsYXlVcmwsIHtcbiAgICAgIHR5cGU6ICd1dGY4JyxcbiAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiAnTCcsXG4gICAgICBzbWFsbDogdHJ1ZSxcbiAgICB9KVxuICAgICAgLnRoZW4oc2V0UXJUZXh0KVxuICAgICAgLmNhdGNoKCgpID0+IHNldFFyVGV4dCgnJykpXG4gIH0sIFtzaG93UVIsIGRpc3BsYXlVcmxdKVxuXG4gIGZ1bmN0aW9uIGhhbmRsZURpc2Nvbm5lY3QoKTogdm9pZCB7XG4gICAgc2V0QXBwU3RhdGUocHJldiA9PiB7XG4gICAgICBpZiAoIXByZXYucmVwbEJyaWRnZUVuYWJsZWQpIHJldHVybiBwcmV2XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICByZXBsQnJpZGdlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHJlcGxCcmlkZ2VFeHBsaWNpdDogZmFsc2UsXG4gICAgICAgIHJlcGxCcmlkZ2VPdXRib3VuZE9ubHk6IGZhbHNlLFxuICAgICAgfVxuICAgIH0pXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2JyaWRnZV9jb21tYW5kJywge1xuICAgICAgYWN0aW9uOlxuICAgICAgICAnZGlzY29ubmVjdCcgYXMgQW5hbHl0aWNzTWV0YWRhdGFfSV9WRVJJRklFRF9USElTX0lTX05PVF9DT0RFX09SX0ZJTEVQQVRIUyxcbiAgICB9KVxuICAgIG9uRG9uZShSRU1PVEVfQ09OVFJPTF9ESVNDT05ORUNURURfTVNHLCB7IGRpc3BsYXk6ICdzeXN0ZW0nIH0pXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTaG93UVIoKTogdm9pZCB7XG4gICAgc2V0U2hvd1FSKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDb250aW51ZSgpOiB2b2lkIHtcbiAgICBvbkRvbmUodW5kZWZpbmVkLCB7IGRpc3BsYXk6ICdza2lwJyB9KVxuICB9XG5cbiAgY29uc3QgSVRFTV9DT1VOVCA9IDNcblxuICB1c2VLZXliaW5kaW5ncyhcbiAgICB7XG4gICAgICAnc2VsZWN0Om5leHQnOiAoKSA9PiBzZXRGb2N1c0luZGV4KGkgPT4gKGkgKyAxKSAlIElURU1fQ09VTlQpLFxuICAgICAgJ3NlbGVjdDpwcmV2aW91cyc6ICgpID0+XG4gICAgICAgIHNldEZvY3VzSW5kZXgoaSA9PiAoaSAtIDEgKyBJVEVNX0NPVU5UKSAlIElURU1fQ09VTlQpLFxuICAgICAgJ3NlbGVjdDphY2NlcHQnOiAoKSA9PiB7XG4gICAgICAgIGlmIChmb2N1c0luZGV4ID09PSAwKSB7XG4gICAgICAgICAgaGFuZGxlRGlzY29ubmVjdCgpXG4gICAgICAgIH0gZWxzZSBpZiAoZm9jdXNJbmRleCA9PT0gMSkge1xuICAgICAgICAgIGhhbmRsZVNob3dRUigpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGFuZGxlQ29udGludWUoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBjb250ZXh0OiAnU2VsZWN0JyB9LFxuICApXG5cbiAgY29uc3QgcXJMaW5lcyA9IHFyVGV4dCA/IHFyVGV4dC5zcGxpdCgnXFxuJykuZmlsdGVyKGwgPT4gbC5sZW5ndGggPiAwKSA6IFtdXG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nIHRpdGxlPVwiUmVtb3RlIENvbnRyb2xcIiBvbkNhbmNlbD17aGFuZGxlQ29udGludWV9IGhpZGVJbnB1dEd1aWRlPlxuICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCIgZ2FwPXsxfT5cbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgVGhpcyBzZXNzaW9uIGlzIGF2YWlsYWJsZSB2aWEgUmVtb3RlIENvbnRyb2xcbiAgICAgICAgICB7ZGlzcGxheVVybCA/IGAgYXQgJHtkaXNwbGF5VXJsfWAgOiAnJ30uXG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAge3Nob3dRUiAmJiBxckxpbmVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAge3FyTGluZXMubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxUZXh0IGtleT17aX0+e2xpbmV9PC9UZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIDxMaXN0SXRlbSBpc0ZvY3VzZWQ9e2ZvY3VzSW5kZXggPT09IDB9PlxuICAgICAgICAgICAgPFRleHQ+RGlzY29ubmVjdCB0aGlzIHNlc3Npb248L1RleHQ+XG4gICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgICA8TGlzdEl0ZW0gaXNGb2N1c2VkPXtmb2N1c0luZGV4ID09PSAxfT5cbiAgICAgICAgICAgIDxUZXh0PntzaG93UVIgPyAnSGlkZSBRUiBjb2RlJyA6ICdTaG93IFFSIGNvZGUnfTwvVGV4dD5cbiAgICAgICAgICA8L0xpc3RJdGVtPlxuICAgICAgICAgIDxMaXN0SXRlbSBpc0ZvY3VzZWQ9e2ZvY3VzSW5kZXggPT09IDJ9PlxuICAgICAgICAgICAgPFRleHQ+Q29udGludWU8L1RleHQ+XG4gICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPkVudGVyIHRvIHNlbGVjdCDCtyBFc2MgdG8gY29udGludWU8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICA8L0RpYWxvZz5cbiAgKVxufVxuXG4vKipcbiAqIENoZWNrIGJyaWRnZSBwcmVyZXF1aXNpdGVzLiBSZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UgaWYgYSBwcmVjb25kaXRpb25cbiAqIGZhaWxzLCBvciBudWxsIGlmIGFsbCBjaGVja3MgcGFzcy4gQXdhaXRzIEdyb3d0aEJvb2sgaW5pdCBpZiB0aGUgZGlza1xuICogY2FjaGUgaXMgc3RhbGUsIHNvIGEgdXNlciB3aG8ganVzdCBiZWNhbWUgZW50aXRsZWQgKGUuZy4gdXBncmFkZWQgdG8gTWF4LFxuICogb3IgdGhlIGZsYWcganVzdCBsYXVuY2hlZCkgZ2V0cyBhbiBhY2N1cmF0ZSByZXN1bHQgb24gdGhlIGZpcnN0IHRyeS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tCcmlkZ2VQcmVyZXF1aXNpdGVzKCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAvLyBDaGVjayBvcmdhbml6YXRpb24gcG9saWN5IOKAlCByZW1vdGUgY29udHJvbCBtYXkgYmUgZGlzYWJsZWRcbiAgY29uc3QgeyB3YWl0Rm9yUG9saWN5TGltaXRzVG9Mb2FkLCBpc1BvbGljeUFsbG93ZWQgfSA9IGF3YWl0IGltcG9ydChcbiAgICAnLi4vLi4vc2VydmljZXMvcG9saWN5TGltaXRzL2luZGV4LmpzJ1xuICApXG4gIGF3YWl0IHdhaXRGb3JQb2xpY3lMaW1pdHNUb0xvYWQoKVxuICBpZiAoIWlzUG9saWN5QWxsb3dlZCgnYWxsb3dfcmVtb3RlX2NvbnRyb2wnKSkge1xuICAgIHJldHVybiBcIlJlbW90ZSBDb250cm9sIGlzIGRpc2FibGVkIGJ5IHlvdXIgb3JnYW5pemF0aW9uJ3MgcG9saWN5LlwiXG4gIH1cblxuICBjb25zdCBkaXNhYmxlZFJlYXNvbiA9IGF3YWl0IGdldEJyaWRnZURpc2FibGVkUmVhc29uKClcbiAgaWYgKGRpc2FibGVkUmVhc29uKSB7XG4gICAgcmV0dXJuIGRpc2FibGVkUmVhc29uXG4gIH1cblxuICAvLyBNaXJyb3IgdGhlIHYxL3YyIGJyYW5jaGluZyBsb2dpYyBpbiBpbml0UmVwbEJyaWRnZTogZW52LWxlc3MgKHYyKSBpcyB1c2VkXG4gIC8vIG9ubHkgd2hlbiB0aGUgZmxhZyBpcyBvbiBBTkQgdGhlIHNlc3Npb24gaXMgbm90IHBlcnBldHVhbC4gIEluIGFzc2lzdGFudFxuICAvLyBtb2RlIChLQUlST1MpIHVzZVJlcGxCcmlkZ2Ugc2V0cyBwZXJwZXR1YWw9dHJ1ZSwgd2hpY2ggZm9yY2VzXG4gIC8vIGluaXRSZXBsQnJpZGdlIG9udG8gdGhlIHYxIHBhdGgg4oCUIHNvIHRoZSBwcmVyZXF1aXNpdGUgY2hlY2sgbXVzdCBtYXRjaC5cbiAgbGV0IHVzZVYyID0gaXNFbnZMZXNzQnJpZGdlRW5hYmxlZCgpXG4gIGlmIChmZWF0dXJlKCdLQUlST1MnKSAmJiB1c2VWMikge1xuICAgIGNvbnN0IHsgaXNBc3Npc3RhbnRNb2RlIH0gPSBhd2FpdCBpbXBvcnQoJy4uLy4uL2Fzc2lzdGFudC9pbmRleC5qcycpXG4gICAgaWYgKGlzQXNzaXN0YW50TW9kZSgpKSB7XG4gICAgICB1c2VWMiA9IGZhbHNlXG4gICAgfVxuICB9XG4gIGNvbnN0IHZlcnNpb25FcnJvciA9IHVzZVYyXG4gICAgPyBhd2FpdCBjaGVja0Vudkxlc3NCcmlkZ2VNaW5WZXJzaW9uKClcbiAgICA6IGNoZWNrQnJpZGdlTWluVmVyc2lvbigpXG4gIGlmICh2ZXJzaW9uRXJyb3IpIHtcbiAgICByZXR1cm4gdmVyc2lvbkVycm9yXG4gIH1cblxuICBpZiAoIWdldEJyaWRnZUFjY2Vzc1Rva2VuKCkpIHtcbiAgICByZXR1cm4gQlJJREdFX0xPR0lOX0lOU1RSVUNUSU9OXG4gIH1cblxuICBsb2dGb3JEZWJ1Z2dpbmcoJ1ticmlkZ2VdIFByZXJlcXVpc2l0ZXMgcGFzc2VkLCBlbmFibGluZyBicmlkZ2UnKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbChcbiAgb25Eb25lOiBMb2NhbEpTWENvbW1hbmRPbkRvbmUsXG4gIF9jb250ZXh0OiBUb29sVXNlQ29udGV4dCAmIExvY2FsSlNYQ29tbWFuZENvbnRleHQsXG4gIGFyZ3M6IHN0cmluZyxcbik6IFByb21pc2U8UmVhY3QuUmVhY3ROb2RlPiB7XG4gIGNvbnN0IG5hbWUgPSBhcmdzLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgcmV0dXJuIDxCcmlkZ2VUb2dnbGUgb25Eb25lPXtvbkRvbmV9IG5hbWU9e25hbWV9IC8+XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxRQUFRLElBQUlDLFVBQVUsUUFBUSxRQUFRO0FBQy9DLE9BQU8sS0FBS0MsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzQyxTQUFTQyxvQkFBb0IsUUFBUSw4QkFBOEI7QUFDbkUsU0FDRUMscUJBQXFCLEVBQ3JCQyx1QkFBdUIsRUFDdkJDLHNCQUFzQixRQUNqQiwrQkFBK0I7QUFDdEMsU0FBU0MsNEJBQTRCLFFBQVEscUNBQXFDO0FBQ2xGLFNBQ0VDLHdCQUF3QixFQUN4QkMsK0JBQStCLFFBQzFCLHVCQUF1QjtBQUM5QixTQUFTQyxNQUFNLFFBQVEsMENBQTBDO0FBQ2pFLFNBQVNDLFFBQVEsUUFBUSw0Q0FBNEM7QUFDckUsU0FBU0MsdUJBQXVCLFFBQVEsbUNBQW1DO0FBQzNFLFNBQVNDLGtCQUFrQixRQUFRLGlD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
|
package/src/commands/btw/btw.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
import { c as _c } from "react/compiler-runtime";
|
|
2
3
|
import { mkdir, writeFile } from 'fs/promises';
|
|
3
4
|
import { marked, type Tokens } from 'marked';
|
|
@@ -368,4 +369,4 @@ export const call: LocalJSXCommandCall = async (onDone, context, args) => {
|
|
|
368
369
|
}
|
|
369
370
|
return <CopyPicker fullText={text} codeBlocks={codeBlocks} messageAge={age} onDone={onDone} />;
|
|
370
371
|
};
|
|
371
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJta2RpciIsIndyaXRlRmlsZSIsIm1hcmtlZCIsIlRva2VucyIsInRtcGRpciIsImpvaW4iLCJSZWFjdCIsInVzZVJlZiIsIkNvbW1hbmRSZXN1bHREaXNwbGF5IiwiT3B0aW9uV2l0aERlc2NyaXB0aW9uIiwiU2VsZWN0IiwiQnlsaW5lIiwiS2V5Ym9hcmRTaG9ydGN1dEhpbnQiLCJQYW5lIiwiS2V5Ym9hcmRFdmVudCIsInN0cmluZ1dpZHRoIiwic2V0Q2xpcGJvYXJkIiwiQm94IiwiVGV4dCIsImxvZ0V2ZW50IiwiTG9jYWxKU1hDb21tYW5kQ2FsbCIsIkFzc2lzdGFudE1lc3NhZ2UiLCJNZXNzYWdlIiwiZ2V0R2xvYmFsQ29uZmlnIiwic2F2ZUdsb2JhbENvbmZpZyIsImV4dHJhY3RUZXh0Q29udGVudCIsInN0cmlwUHJvbXB0WE1MVGFncyIsImNvdW50Q2hhckluU3RyaW5nIiwiQ09QWV9ESVIiLCJSRVNQT05TRV9GSUxFTkFNRSIsIk1BWF9MT09LQkFDSyIsIkNvZGVCbG9jayIsImNvZGUiLCJsYW5nIiwiZXh0cmFjdENvZGVCbG9ja3MiLCJtYXJrZG93biIsInRva2VucyIsImxleGVyIiwiYmxvY2tzIiwidG9rZW4iLCJ0eXBlIiwiY29kZVRva2VuIiwiQ29kZSIsInB1c2giLCJ0ZXh0IiwiY29sbGVjdFJlY2VudEFzc2lzdGFudFRleHRzIiwibWVzc2FnZXMiLCJ0ZXh0cyIsImkiLCJsZW5ndGgiLCJtc2ciLCJpc0FwaUVycm9yTWVzc2FnZSIsImNvbnRlbnQiLCJtZXNzYWdlIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsZUV4dGVuc2lvbiIsInNhbml0aXplZCIsInJlcGxhY2UiLCJ3cml0ZVRvRmlsZSIsImZpbGVuYW1lIiwiUHJvbWlzZSIsImZpbGVQYXRoIiwicmVjdXJzaXZlIiwiY29weU9yV3JpdGVUb0ZpbGUiLCJyYXciLCJwcm9jZXNzIiwic3Rkb3V0Iiwid3JpdGUiLCJsaW5lQ291bnQiLCJjaGFyQ291bnQiLCJ0cnVuY2F0ZUxpbmUiLCJtYXhMZW4iLCJmaXJzdExpbmUiLCJzcGxpdCIsInJlc3VsdCIsIndpZHRoIiwidGFyZ2V0V2lkdGgiLCJjaGFyIiwiY2hhcldpZHRoIiwiUGlja2VyUHJvcHMiLCJmdWxsVGV4dCIsImNvZGVCbG9ja3MiLCJtZXNzYWdlQWdlIiwib25Eb25lIiwib3B0aW9ucyIsImRpc3BsYXkiLCJQaWNrZXJTZWxlY3Rpb24iLCJDb3B5UGlja2VyIiwidDAiLCIkIiwiX2MiLCJmb2N1c2VkUmVmIiwidDEiLCJ0MiIsImxhYmVsIiwidmFsdWUiLCJjb25zdCIsImRlc2NyaXB0aW9uIiwidDMiLCJ0NCIsIlN5bWJvbCIsImZvciIsIm1hcCIsIl90ZW1wIiwiZ2V0U2VsZWN0aW9uQ29udGVudCIsInNlbGVjdGVkIiwiYmxvY2tfMCIsImJsb2NrIiwiYmxvY2tJbmRleCIsInQ1IiwiaGFuZGxlU2VsZWN0Iiwic2VsZWN0ZWRfMCIsImNvcHlGdWxsUmVzcG9uc2UiLCJfdGVtcDIiLCJibG9ja19jb3VudCIsImFsd2F5cyIsIm1lc3NhZ2VfYWdlIiwic2VsZWN0ZWRfYmxvY2siLCJyZXN1bHRfMCIsInQ2IiwiaGFuZGxlV3JpdGUiLCJzZWxlY3RlZF8xIiwiY29udGVudF8wIiwid3JpdGVfc2hvcnRjdXQiLCJ0NyIsImUiLCJFcnJvciIsImhhbmRsZUtleURvd24iLCJlXzAiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImN1cnJlbnQiLCJ0OCIsInQ5Iiwic2VsZWN0ZWRfMiIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsImMiLCJpbmRleCIsImJsb2NrTGluZXMiLCJ1bmRlZmluZWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiY2FsbCIsImNvbnRleHQiLCJhcmdzIiwiYWdlIiwiYXJnIiwidHJpbSIsIm4iLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJjb25maWciXSwic291cmNlcyI6WyJjb3B5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBtYXJrZWQsIHR5cGUgVG9rZW5zIH0gZnJvbSAnbWFya2VkJ1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnb3MnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCdcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFJlc3VsdERpc3BsYXkgfSBmcm9tICcuLi8uLi9jb21tYW5kcy5qcydcbmltcG9ydCB0eXBlIHsgT3B0aW9uV2l0aERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9DdXN0b21TZWxlY3Qvc2VsZWN0LmpzJ1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9DdXN0b21TZWxlY3Qvc2VsZWN0LmpzJ1xuaW1wb3J0IHsgQnlsaW5lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0J5bGluZS5qcydcbmltcG9ydCB7IEtleWJvYXJkU2hvcnRjdXRIaW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0tleWJvYXJkU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgUGFuZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVzaWduLXN5c3RlbS9QYW5lLmpzJ1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vaW5rL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB7IHN0cmluZ1dpZHRoIH0gZnJvbSAnLi4vLi4vaW5rL3N0cmluZ1dpZHRoLmpzJ1xuaW1wb3J0IHsgc2V0Q2xpcGJvYXJkIH0gZnJvbSAnLi4vLi4vaW5rL3Rlcm1pby9vc2MuanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyBsb2dFdmVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB0eXBlIHsgTG9jYWxKU1hDb21tYW5kQ2FsbCB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbW1hbmQuanMnXG5pbXBvcnQgdHlwZSB7IEFzc2lzdGFudE1lc3NhZ2UsIE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9tZXNzYWdlLmpzJ1xuaW1wb3J0IHsgZ2V0R2xvYmFsQ29uZmlnLCBzYXZlR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZXh0cmFjdFRleHRDb250ZW50LCBzdHJpcFByb21wdFhNTFRhZ3MgfSBmcm9tICcuLi8uLi91dGlscy9tZXNzYWdlcy5qcydcbmltcG9ydCB7IGNvdW50Q2hhckluU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nVXRpbHMuanMnXG5cbmNvbnN0IENPUFlfRElSID0gam9pbih0bXBkaXIoKSwgJ2NsYXVkZScpXG5jb25zdCBSRVNQT05TRV9GSUxFTkFNRSA9ICdyZXNwb25zZS5tZCdcbmNvbnN0IE1BWF9MT09LQkFDSyA9IDIwXG5cbnR5cGUgQ29kZUJsb2NrID0ge1xuICBjb2RlOiBzdHJpbmdcbiAgbGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RDb2RlQmxvY2tzKG1hcmtkb3duOiBzdHJpbmcpOiBDb2RlQmxvY2tbXSB7XG4gIGNvbnN0IHRva2VucyA9IG1hcmtlZC5sZXhlcihzdHJpcFByb21wdFhNTFRhZ3MobWFya2Rvd24pKVxuICBjb25zdCBibG9ja3M6IENvZGVCbG9ja1tdID0gW11cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2NvZGUnKSB7XG4gICAgICBjb25zdCBjb2RlVG9rZW4gPSB0b2tlbiBhcyBUb2tlbnMuQ29kZVxuICAgICAgYmxvY2tzLnB1c2goeyBjb2RlOiBjb2RlVG9rZW4udGV4dCwgbGFuZzogY29kZVRva2VuLmxhbmcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJsb2Nrc1xufVxuXG4vKipcbiAqIFdhbGsgbWVzc2FnZXMgbmV3ZXN0LWZpcnN0LCByZXR1cm5pbmcgdGV4dCBmcm9tIGFzc2lzdGFudCBtZXNzYWdlcyB0aGF0XG4gKiBhY3R1YWxseSBzYWlkIHNvbWV0aGluZyAoc2tpcHMgdG9vbC11c2Utb25seSB0dXJucyBhbmQgQVBJIGVycm9ycykuXG4gKiBJbmRleCAwID0gbGF0ZXN0LCAxID0gc2Vjb25kLXRvLWxhdGVzdCwgZXRjLiBDYXBzIGF0IE1BWF9MT09LQkFDSy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RSZWNlbnRBc3Npc3RhbnRUZXh0cyhtZXNzYWdlczogTWVzc2FnZVtdKTogc3RyaW5nW10ge1xuICBjb25zdCB0ZXh0czogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBpID0gbWVzc2FnZXMubGVuZ3RoIC0gMTtcbiAgICBpID49IDAgJiYgdGV4dHMubGVuZ3RoIDwgTUFYX0xPT0tCQUNLO1xuICAgIGktLVxuICApIHtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlc1tpXVxuICAgIGlmIChtc2c/LnR5cGUgIT09ICdhc3Npc3RhbnQnIHx8IG1zZy5pc0FwaUVycm9yTWVzc2FnZSkgY29udGludWVcbiAgICBjb25zdCBjb250ZW50ID0gKG1zZyBhcyBBc3Npc3RhbnRNZXNzYWdlKS5tZXNzYWdlLmNvbnRlbnRcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIGNvbnRpbnVlXG4gICAgY29uc3QgdGV4dCA9IGV4dHJhY3RUZXh0Q29udGVudChjb250ZW50LCAnXFxuXFxuJylcbiAgICBpZiAodGV4dCkgdGV4dHMucHVzaCh0ZXh0KVxuICB9XG4gIHJldHVybiB0ZXh0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZUV4dGVuc2lvbihsYW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAobGFuZykge1xuICAgIC8vIFNhbml0aXplIHRvIHByZXZlbnQgcGF0aCB0cmF2ZXJzYWwgKGUuZy4gYGBgLi4vLi4vZXRjL3Bhc3N3ZClcbiAgICAvLyBMYW5ndWFnZSBpZGVudGlmaWVycyBhcmUgYWxwaGFudW1lcmljOiBweXRob24sIHRzeCwganNvbmMsIGV0Yy5cbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBsYW5nLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJylcbiAgICBpZiAoc2FuaXRpemVkICYmIHNhbml0aXplZCAhPT0gJ3BsYWludGV4dCcpIHtcbiAgICAgIHJldHVybiBgLiR7c2FuaXRpemVkfWBcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcudHh0J1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZVRvRmlsZSh0ZXh0OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmaWxlUGF0aCA9IGpvaW4oQ09QWV9ESVIsIGZpbGVuYW1lKVxuICBhd2FpdCBta2RpcihDT1BZX0RJUiwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCB0ZXh0LCAndXRmLTgnKVxuICByZXR1cm4gZmlsZVBhdGhcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29weU9yV3JpdGVUb0ZpbGUoXG4gIHRleHQ6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJhdyA9IGF3YWl0IHNldENsaXBib2FyZCh0ZXh0KVxuICBpZiAocmF3KSBwcm9jZXNzLnN0ZG91dC53cml0ZShyYXcpXG4gIGNvbnN0IGxpbmVDb3VudCA9IGNvdW50Q2hhckluU3RyaW5nKHRleHQsICdcXG4nKSArIDFcbiAgY29uc3QgY2hhckNvdW50ID0gdGV4dC5sZW5ndGhcbiAgLy8gQWxzbyB3cml0ZSB0byBhIHRlbXAgZmlsZSDigJQgY2xpcGJvYXJkIHBhdGhzIGFyZSBiZXN0LWVmZm9ydCAoT1NDIDUyIG5lZWRzXG4gIC8vIHRlcm1pbmFsIHN1cHBvcnQpLCBzbyB0aGUgZmlsZSBwcm92aWRlcyBhIHJlbGlhYmxlIGZhbGxiYWNrLlxuICB0cnkge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgd3JpdGVUb0ZpbGUodGV4dCwgZmlsZW5hbWUpXG4gICAgcmV0dXJuIGBDb3BpZWQgdG8gY2xpcGJvYXJkICgke2NoYXJDb3VudH0gY2hhcmFjdGVycywgJHtsaW5lQ291bnR9IGxpbmVzKVxcbkFsc28gd3JpdHRlbiB0byAke2ZpbGVQYXRofWBcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGBDb3BpZWQgdG8gY2xpcGJvYXJkICgke2NoYXJDb3VudH0gY2hhcmFjdGVycywgJHtsaW5lQ291bnR9IGxpbmVzKWBcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnVuY2F0ZUxpbmUodGV4dDogc3RyaW5nLCBtYXhMZW46IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGZpcnN0TGluZSA9IHRleHQuc3BsaXQoJ1xcbicpWzBdID8/ICcnXG4gIGlmIChzdHJpbmdXaWR0aChmaXJzdExpbmUpIDw9IG1heExlbikge1xuICAgIHJldHVybiBmaXJzdExpbmVcbiAgfVxuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IHdpZHRoID0gMFxuICBjb25zdCB0YXJnZXRXaWR0aCA9IG1heExlbiAtIDFcbiAgZm9yIChjb25zdCBjaGFyIG9mIGZpcnN0TGluZSkge1xuICAgIGNvbnN0IGNoYXJXaWR0aCA9IHN0cmluZ1dpZHRoKGNoYXIpXG4gICAgaWYgKHdpZHRoICsgY2hhcldpZHRoID4gdGFyZ2V0V2lkdGgpIGJyZWFrXG4gICAgcmVzdWx0ICs9IGNoYXJcbiAgICB3aWR0aCArPSBjaGFyV2lkdGhcbiAgfVxuICByZXR1cm4gcmVzdWx0ICsgJ1xcdTIwMjYnXG59XG5cbnR5cGUgUGlja2VyUHJvcHMgPSB7XG4gIGZ1bGxUZXh0OiBzdHJpbmdcbiAgY29kZUJsb2NrczogQ29kZUJsb2NrW11cbiAgbWVzc2FnZUFnZTogbnVtYmVyXG4gIG9uRG9uZTogKFxuICAgIHJlc3VsdD86IHN0cmluZyxcbiAgICBvcHRpb25zPzogeyBkaXNwbGF5PzogQ29tbWFuZFJlc3VsdERpc3BsYXkgfSxcbiAgKSA9PiB2b2lkXG59XG5cbnR5cGUgUGlja2VyU2VsZWN0aW9uID0gbnVtYmVyIHwgJ2Z1bGwnIHwgJ2Fsd2F5cydcblxuZnVuY3Rpb24gQ29weVBpY2tlcih7XG4gIGZ1bGxUZXh0LFxuICBjb2RlQmxvY2tzLFxuICBtZXNzYWdlQWdlLFxuICBvbkRvbmUsXG59OiBQaWNrZXJQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IGZvY3VzZWRSZWYgPSB1c2VSZWY8UGlja2VyU2VsZWN0aW9uPignZnVsbCcpXG5cbiAgY29uc3Qgb3B0aW9uczogT3B0aW9uV2l0aERlc2NyaXB0aW9uPFBpY2tlclNlbGVjdGlvbj5bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ0Z1bGwgcmVzcG9uc2UnLFxuICAgICAgdmFsdWU6ICdmdWxsJyBhcyBjb25zdCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtmdWxsVGV4dC5sZW5ndGh9IGNoYXJzLCAke2NvdW50Q2hhckluU3RyaW5nKGZ1bGxUZXh0LCAnXFxuJykgKyAxfSBsaW5lc2AsXG4gICAgfSxcbiAgICAuLi5jb2RlQmxvY2tzLm1hcCgoYmxvY2ssIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBibG9ja0xpbmVzID0gY291bnRDaGFySW5TdHJpbmcoYmxvY2suY29kZSwgJ1xcbicpICsgMVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IHRydW5jYXRlTGluZShibG9jay5jb2RlLCA2MCksXG4gICAgICAgIHZhbHVlOiBpbmRleCxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgW2Jsb2NrLmxhbmcsIGJsb2NrTGluZXMgPiAxID8gYCR7YmxvY2tMaW5lc30gbGluZXNgIDogdW5kZWZpbmVkXVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgLmpvaW4oJywgJykgfHwgdW5kZWZpbmVkLFxuICAgICAgfVxuICAgIH0pLFxuICAgIHtcbiAgICAgIGxhYmVsOiAnQWx3YXlzIGNvcHkgZnVsbCByZXNwb25zZScsXG4gICAgICB2YWx1ZTogJ2Fsd2F5cycgYXMgY29uc3QsXG4gICAgICBkZXNjcmlwdGlvbjogJ1NraXAgdGhpcyBwaWNrZXIgaW4gdGhlIGZ1dHVyZSAocmV2ZXJ0IHZpYSAvY29uZmlnKScsXG4gICAgfSxcbiAgXVxuXG4gIGZ1bmN0aW9uIGdldFNlbGVjdGlvbkNvbnRlbnQoc2VsZWN0ZWQ6IFBpY2tlclNlbGVjdGlvbik6IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBmaWxlbmFtZTogc3RyaW5nXG4gICAgYmxvY2tJbmRleD86IG51bWJlclxuICB9IHtcbiAgICBpZiAoc2VsZWN0ZWQgPT09ICdmdWxsJyB8fCBzZWxlY3RlZCA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgIHJldHVybiB7IHRleHQ6IGZ1bGxUZXh0LCBmaWxlbmFtZTogUkVTUE9OU0VfRklMRU5BTUUgfVxuICAgIH1cbiAgICBjb25zdCBibG9jayA9IGNvZGVCbG9ja3Nbc2VsZWN0ZWRdIVxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBibG9jay5jb2RlLFxuICAgICAgZmlsZW5hbWU6IGBjb3B5JHtmaWxlRXh0ZW5zaW9uKGJsb2NrLmxhbmcpfWAsXG4gICAgICBibG9ja0luZGV4OiBzZWxlY3RlZCxcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVTZWxlY3Qoc2VsZWN0ZWQ6IFBpY2tlclNlbGVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBnZXRTZWxlY3Rpb25Db250ZW50KHNlbGVjdGVkKVxuICAgIGlmIChzZWxlY3RlZCA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgIGlmICghZ2V0R2xvYmFsQ29uZmlnKCkuY29weUZ1bGxSZXNwb25zZSkge1xuICAgICAgICBzYXZlR2xvYmFsQ29uZmlnKGMgPT4gKHsgLi4uYywgY29weUZ1bGxSZXNwb25zZTogdHJ1ZSB9KSlcbiAgICAgIH1cbiAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9jb3B5Jywge1xuICAgICAgICBibG9ja19jb3VudDogY29kZUJsb2Nrcy5sZW5ndGgsXG4gICAgICAgIGFsd2F5czogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZV9hZ2U6IG1lc3NhZ2VBZ2UsXG4gICAgICB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29weU9yV3JpdGVUb0ZpbGUoY29udGVudC50ZXh0LCBjb250ZW50LmZpbGVuYW1lKVxuICAgICAgb25Eb25lKFxuICAgICAgICBgJHtyZXN1bHR9XFxuUHJlZmVyZW5jZSBzYXZlZC4gVXNlIC9jb25maWcgdG8gY2hhbmdlIGNvcHlGdWxsUmVzcG9uc2VgLFxuICAgICAgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxvZ0V2ZW50KCd0ZW5ndV9jb3B5Jywge1xuICAgICAgc2VsZWN0ZWRfYmxvY2s6IGNvbnRlbnQuYmxvY2tJbmRleCxcbiAgICAgIGJsb2NrX2NvdW50OiBjb2RlQmxvY2tzLmxlbmd0aCxcbiAgICAgIG1lc3NhZ2VfYWdlOiBtZXNzYWdlQWdlLFxuICAgIH0pXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29weU9yV3JpdGVUb0ZpbGUoY29udGVudC50ZXh0LCBjb250ZW50LmZpbGVuYW1lKVxuICAgIG9uRG9uZShyZXN1bHQpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVXcml0ZShzZWxlY3RlZDogUGlja2VyU2VsZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGVudCA9IGdldFNlbGVjdGlvbkNvbnRlbnQoc2VsZWN0ZWQpXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2NvcHknLCB7XG4gICAgICBzZWxlY3RlZF9ibG9jazogY29udGVudC5ibG9ja0luZGV4LFxuICAgICAgYmxvY2tfY291bnQ6IGNvZGVCbG9ja3MubGVuZ3RoLFxuICAgICAgbWVzc2FnZV9hZ2U6IG1lc3NhZ2VBZ2UsXG4gICAgICB3cml0ZV9zaG9ydGN1dDogdHJ1ZSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IHdyaXRlVG9GaWxlKGNvbnRlbnQudGV4dCwgY29udGVudC5maWxlbmFtZSlcbiAgICAgIG9uRG9uZShgV3JpdHRlbiB0byAke2ZpbGVQYXRofWApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25Eb25lKGBGYWlsZWQgdG8gd3JpdGUgZmlsZTogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBlfWApXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGUua2V5ID09PSAndycpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgdm9pZCBoYW5kbGVXcml0ZShmb2N1c2VkUmVmLmN1cnJlbnQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZT5cbiAgICAgIDxCb3hcbiAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgIGdhcD17MX1cbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICA+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPlNlbGVjdCBjb250ZW50IHRvIGNvcHk6PC9UZXh0PlxuICAgICAgICA8U2VsZWN0PFBpY2tlclNlbGVjdGlvbj5cbiAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgIGhpZGVJbmRleGVzPXtmYWxzZX1cbiAgICAgICAgICBvbkZvY3VzPXt2YWx1ZSA9PiB7XG4gICAgICAgICAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSB2YWx1ZVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdGVkID0+IHtcbiAgICAgICAgICAgIHZvaWQgaGFuZGxlU2VsZWN0KHNlbGVjdGVkKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcbiAgICAgICAgICAgIG9uRG9uZSgnQ29weSBjYW5jZWxsZWQnLCB7IGRpc3BsYXk6ICdzeXN0ZW0nIH0pXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICAgIDxLZXlib2FyZFNob3J0Y3V0SGludCBzaG9ydGN1dD1cImVudGVyXCIgYWN0aW9uPVwiY29weVwiIC8+XG4gICAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJ3XCIgYWN0aW9uPVwid3JpdGUgdG8gZmlsZVwiIC8+XG4gICAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJlc2NcIiBhY3Rpb249XCJjYW5jZWxcIiAvPlxuICAgICAgICAgIDwvQnlsaW5lPlxuICAgICAgICA8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICA8L1BhbmU+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IGNhbGw6IExvY2FsSlNYQ29tbWFuZENhbGwgPSBhc3luYyAob25Eb25lLCBjb250ZXh0LCBhcmdzKSA9PiB7XG4gIGNvbnN0IHRleHRzID0gY29sbGVjdFJlY2VudEFzc2lzdGFudFRleHRzKGNvbnRleHQubWVzc2FnZXMpXG5cbiAgaWYgKHRleHRzLmxlbmd0aCA9PT0gMCkge1xuICAgIG9uRG9uZSgnTm8gYXNzaXN0YW50IG1lc3NhZ2UgdG8gY29weScpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIC9jb3B5IE4gcmVhY2hlcyBiYWNrIE4tMSBtZXNzYWdlcyAoMSA9IGxhdGVzdCwgMiA9IHNlY29uZC10by1sYXRlc3QsIC4uLilcbiAgbGV0IGFnZSA9IDBcbiAgY29uc3QgYXJnID0gYXJncz8udHJpbSgpXG4gIGlmIChhcmcpIHtcbiAgICBjb25zdCBuID0gTnVtYmVyKGFyZylcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobikgfHwgbiA8IDEpIHtcbiAgICAgIG9uRG9uZShgVXNhZ2U6IC9jb3B5IFtOXSB3aGVyZSBOIGlzIDEgKGxhdGVzdCksIDIsIDMsIFxcdTIwMjYgR290OiAke2FyZ31gKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgaWYgKG4gPiB0ZXh0cy5sZW5ndGgpIHtcbiAgICAgIG9uRG9uZShcbiAgICAgICAgYE9ubHkgJHt0ZXh0cy5sZW5ndGh9IGFzc2lzdGFudCAke3RleHRzLmxlbmd0aCA9PT0gMSA/ICdtZXNzYWdlJyA6ICdtZXNzYWdlcyd9IGF2YWlsYWJsZSB0byBjb3B5YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGFnZSA9IG4gLSAxXG4gIH1cblxuICBjb25zdCB0ZXh0ID0gdGV4dHNbYWdlXSFcbiAgY29uc3QgY29kZUJsb2NrcyA9IGV4dHJhY3RDb2RlQmxvY2tzKHRleHQpXG4gIGNvbnN0IGNvbmZpZyA9IGdldEdsb2JhbENvbmZpZygpXG5cbiAgaWYgKGNvZGVCbG9ja3MubGVuZ3RoID09PSAwIHx8IGNvbmZpZy5jb3B5RnVsbFJlc3BvbnNlKSB7XG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2NvcHknLCB7XG4gICAgICBhbHdheXM6IGNvbmZpZy5jb3B5RnVsbFJlc3BvbnNlLFxuICAgICAgYmxvY2tfY291bnQ6IGNvZGVCbG9ja3MubGVuZ3RoLFxuICAgICAgbWVzc2FnZV9hZ2U6IGFnZSxcbiAgICB9KVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvcHlPcldyaXRlVG9GaWxlKHRleHQsIFJFU1BPTlNFX0ZJTEVOQU1FKVxuICAgIG9uRG9uZShyZXN1bHQpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvcHlQaWNrZXJcbiAgICAgIGZ1bGxUZXh0PXt0ZXh0fVxuICAgICAgY29kZUJsb2Nrcz17Y29kZUJsb2Nrc31cbiAgICAgIG1lc3NhZ2VBZ2U9e2FnZX1cbiAgICAgIG9uRG9uZT17b25Eb25lfVxuICAgIC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLEtBQUssRUFBRUMsU0FBUyxRQUFRLGFBQWE7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
|
|
372
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJta2RpciIsIndyaXRlRmlsZSIsIm1hcmtlZCIsIlRva2VucyIsInRtcGRpciIsImpvaW4iLCJSZWFjdCIsInVzZVJlZiIsIkNvbW1hbmRSZXN1bHREaXNwbGF5IiwiT3B0aW9uV2l0aERlc2NyaXB0aW9uIiwiU2VsZWN0IiwiQnlsaW5lIiwiS2V5Ym9hcmRTaG9ydGN1dEhpbnQiLCJQYW5lIiwiS2V5Ym9hcmRFdmVudCIsInN0cmluZ1dpZHRoIiwic2V0Q2xpcGJvYXJkIiwiQm94IiwiVGV4dCIsImxvZ0V2ZW50IiwiTG9jYWxKU1hDb21tYW5kQ2FsbCIsIkFzc2lzdGFudE1lc3NhZ2UiLCJNZXNzYWdlIiwiZ2V0R2xvYmFsQ29uZmlnIiwic2F2ZUdsb2JhbENvbmZpZyIsImV4dHJhY3RUZXh0Q29udGVudCIsInN0cmlwUHJvbXB0WE1MVGFncyIsImNvdW50Q2hhckluU3RyaW5nIiwiQ09QWV9ESVIiLCJSRVNQT05TRV9GSUxFTkFNRSIsIk1BWF9MT09LQkFDSyIsIkNvZGVCbG9jayIsImNvZGUiLCJsYW5nIiwiZXh0cmFjdENvZGVCbG9ja3MiLCJtYXJrZG93biIsInRva2VucyIsImxleGVyIiwiYmxvY2tzIiwidG9rZW4iLCJ0eXBlIiwiY29kZVRva2VuIiwiQ29kZSIsInB1c2giLCJ0ZXh0IiwiY29sbGVjdFJlY2VudEFzc2lzdGFudFRleHRzIiwibWVzc2FnZXMiLCJ0ZXh0cyIsImkiLCJsZW5ndGgiLCJtc2ciLCJpc0FwaUVycm9yTWVzc2FnZSIsImNvbnRlbnQiLCJtZXNzYWdlIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsZUV4dGVuc2lvbiIsInNhbml0aXplZCIsInJlcGxhY2UiLCJ3cml0ZVRvRmlsZSIsImZpbGVuYW1lIiwiUHJvbWlzZSIsImZpbGVQYXRoIiwicmVjdXJzaXZlIiwiY29weU9yV3JpdGVUb0ZpbGUiLCJyYXciLCJwcm9jZXNzIiwic3Rkb3V0Iiwid3JpdGUiLCJsaW5lQ291bnQiLCJjaGFyQ291bnQiLCJ0cnVuY2F0ZUxpbmUiLCJtYXhMZW4iLCJmaXJzdExpbmUiLCJzcGxpdCIsInJlc3VsdCIsIndpZHRoIiwidGFyZ2V0V2lkdGgiLCJjaGFyIiwiY2hhcldpZHRoIiwiUGlja2VyUHJvcHMiLCJmdWxsVGV4dCIsImNvZGVCbG9ja3MiLCJtZXNzYWdlQWdlIiwib25Eb25lIiwib3B0aW9ucyIsImRpc3BsYXkiLCJQaWNrZXJTZWxlY3Rpb24iLCJDb3B5UGlja2VyIiwidDAiLCIkIiwiX2MiLCJmb2N1c2VkUmVmIiwidDEiLCJ0MiIsImxhYmVsIiwidmFsdWUiLCJjb25zdCIsImRlc2NyaXB0aW9uIiwidDMiLCJ0NCIsIlN5bWJvbCIsImZvciIsIm1hcCIsIl90ZW1wIiwiZ2V0U2VsZWN0aW9uQ29udGVudCIsInNlbGVjdGVkIiwiYmxvY2tfMCIsImJsb2NrIiwiYmxvY2tJbmRleCIsInQ1IiwiaGFuZGxlU2VsZWN0Iiwic2VsZWN0ZWRfMCIsImNvcHlGdWxsUmVzcG9uc2UiLCJfdGVtcDIiLCJibG9ja19jb3VudCIsImFsd2F5cyIsIm1lc3NhZ2VfYWdlIiwic2VsZWN0ZWRfYmxvY2siLCJyZXN1bHRfMCIsInQ2IiwiaGFuZGxlV3JpdGUiLCJzZWxlY3RlZF8xIiwiY29udGVudF8wIiwid3JpdGVfc2hvcnRjdXQiLCJ0NyIsImUiLCJFcnJvciIsImhhbmRsZUtleURvd24iLCJlXzAiLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImN1cnJlbnQiLCJ0OCIsInQ5Iiwic2VsZWN0ZWRfMiIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsImMiLCJpbmRleCIsImJsb2NrTGluZXMiLCJ1bmRlZmluZWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiY2FsbCIsImNvbnRleHQiLCJhcmdzIiwiYWdlIiwiYXJnIiwidHJpbSIsIm4iLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJjb25maWciXSwic291cmNlcyI6WyJjb3B5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBtYXJrZWQsIHR5cGUgVG9rZW5zIH0gZnJvbSAnbWFya2VkJ1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnb3MnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCdcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFJlc3VsdERpc3BsYXkgfSBmcm9tICcuLi8uLi9jb21tYW5kcy5qcydcbmltcG9ydCB0eXBlIHsgT3B0aW9uV2l0aERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9DdXN0b21TZWxlY3Qvc2VsZWN0LmpzJ1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9DdXN0b21TZWxlY3Qvc2VsZWN0LmpzJ1xuaW1wb3J0IHsgQnlsaW5lIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0J5bGluZS5qcydcbmltcG9ydCB7IEtleWJvYXJkU2hvcnRjdXRIaW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNpZ24tc3lzdGVtL0tleWJvYXJkU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgUGFuZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVzaWduLXN5c3RlbS9QYW5lLmpzJ1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZEV2ZW50IH0gZnJvbSAnLi4vLi4vaW5rL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB7IHN0cmluZ1dpZHRoIH0gZnJvbSAnLi4vLi4vaW5rL3N0cmluZ1dpZHRoLmpzJ1xuaW1wb3J0IHsgc2V0Q2xpcGJvYXJkIH0gZnJvbSAnLi4vLi4vaW5rL3Rlcm1pby9vc2MuanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyBsb2dFdmVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB0eXBlIHsgTG9jYWxKU1hDb21tYW5kQ2FsbCB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbW1hbmQuanMnXG5pbXBvcnQgdHlwZSB7IEFzc2lzdGFudE1lc3NhZ2UsIE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9tZXNzYWdlLmpzJ1xuaW1wb3J0IHsgZ2V0R2xvYmFsQ29uZmlnLCBzYXZlR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZXh0cmFjdFRleHRDb250ZW50LCBzdHJpcFByb21wdFhNTFRhZ3MgfSBmcm9tICcuLi8uLi91dGlscy9tZXNzYWdlcy5qcydcbmltcG9ydCB7IGNvdW50Q2hhckluU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nVXRpbHMuanMnXG5cbmNvbnN0IENPUFlfRElSID0gam9pbih0bXBkaXIoKSwgJ2NsYXVkZScpXG5jb25zdCBSRVNQT05TRV9GSUxFTkFNRSA9ICdyZXNwb25zZS5tZCdcbmNvbnN0IE1BWF9MT09LQkFDSyA9IDIwXG5cbnR5cGUgQ29kZUJsb2NrID0ge1xuICBjb2RlOiBzdHJpbmdcbiAgbGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RDb2RlQmxvY2tzKG1hcmtkb3duOiBzdHJpbmcpOiBDb2RlQmxvY2tbXSB7XG4gIGNvbnN0IHRva2VucyA9IG1hcmtlZC5sZXhlcihzdHJpcFByb21wdFhNTFRhZ3MobWFya2Rvd24pKVxuICBjb25zdCBibG9ja3M6IENvZGVCbG9ja1tdID0gW11cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2NvZGUnKSB7XG4gICAgICBjb25zdCBjb2RlVG9rZW4gPSB0b2tlbiBhcyBUb2tlbnMuQ29kZVxuICAgICAgYmxvY2tzLnB1c2goeyBjb2RlOiBjb2RlVG9rZW4udGV4dCwgbGFuZzogY29kZVRva2VuLmxhbmcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJsb2Nrc1xufVxuXG4vKipcbiAqIFdhbGsgbWVzc2FnZXMgbmV3ZXN0LWZpcnN0LCByZXR1cm5pbmcgdGV4dCBmcm9tIGFzc2lzdGFudCBtZXNzYWdlcyB0aGF0XG4gKiBhY3R1YWxseSBzYWlkIHNvbWV0aGluZyAoc2tpcHMgdG9vbC11c2Utb25seSB0dXJucyBhbmQgQVBJIGVycm9ycykuXG4gKiBJbmRleCAwID0gbGF0ZXN0LCAxID0gc2Vjb25kLXRvLWxhdGVzdCwgZXRjLiBDYXBzIGF0IE1BWF9MT09LQkFDSy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RSZWNlbnRBc3Npc3RhbnRUZXh0cyhtZXNzYWdlczogTWVzc2FnZVtdKTogc3RyaW5nW10ge1xuICBjb25zdCB0ZXh0czogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBpID0gbWVzc2FnZXMubGVuZ3RoIC0gMTtcbiAgICBpID49IDAgJiYgdGV4dHMubGVuZ3RoIDwgTUFYX0xPT0tCQUNLO1xuICAgIGktLVxuICApIHtcbiAgICBjb25zdCBtc2cgPSBtZXNzYWdlc1tpXVxuICAgIGlmIChtc2c/LnR5cGUgIT09ICdhc3Npc3RhbnQnIHx8IG1zZy5pc0FwaUVycm9yTWVzc2FnZSkgY29udGludWVcbiAgICBjb25zdCBjb250ZW50ID0gKG1zZyBhcyBBc3Npc3RhbnRNZXNzYWdlKS5tZXNzYWdlLmNvbnRlbnRcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIGNvbnRpbnVlXG4gICAgY29uc3QgdGV4dCA9IGV4dHJhY3RUZXh0Q29udGVudChjb250ZW50LCAnXFxuXFxuJylcbiAgICBpZiAodGV4dCkgdGV4dHMucHVzaCh0ZXh0KVxuICB9XG4gIHJldHVybiB0ZXh0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZUV4dGVuc2lvbihsYW5nOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAobGFuZykge1xuICAgIC8vIFNhbml0aXplIHRvIHByZXZlbnQgcGF0aCB0cmF2ZXJzYWwgKGUuZy4gYGBgLi4vLi4vZXRjL3Bhc3N3ZClcbiAgICAvLyBMYW5ndWFnZSBpZGVudGlmaWVycyBhcmUgYWxwaGFudW1lcmljOiBweXRob24sIHRzeCwganNvbmMsIGV0Yy5cbiAgICBjb25zdCBzYW5pdGl6ZWQgPSBsYW5nLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJylcbiAgICBpZiAoc2FuaXRpemVkICYmIHNhbml0aXplZCAhPT0gJ3BsYWludGV4dCcpIHtcbiAgICAgIHJldHVybiBgLiR7c2FuaXRpemVkfWBcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcudHh0J1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZVRvRmlsZSh0ZXh0OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmaWxlUGF0aCA9IGpvaW4oQ09QWV9ESVIsIGZpbGVuYW1lKVxuICBhd2FpdCBta2RpcihDT1BZX0RJUiwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCB0ZXh0LCAndXRmLTgnKVxuICByZXR1cm4gZmlsZVBhdGhcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29weU9yV3JpdGVUb0ZpbGUoXG4gIHRleHQ6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJhdyA9IGF3YWl0IHNldENsaXBib2FyZCh0ZXh0KVxuICBpZiAocmF3KSBwcm9jZXNzLnN0ZG91dC53cml0ZShyYXcpXG4gIGNvbnN0IGxpbmVDb3VudCA9IGNvdW50Q2hhckluU3RyaW5nKHRleHQsICdcXG4nKSArIDFcbiAgY29uc3QgY2hhckNvdW50ID0gdGV4dC5sZW5ndGhcbiAgLy8gQWxzbyB3cml0ZSB0byBhIHRlbXAgZmlsZSDigJQgY2xpcGJvYXJkIHBhdGhzIGFyZSBiZXN0LWVmZm9ydCAoT1NDIDUyIG5lZWRzXG4gIC8vIHRlcm1pbmFsIHN1cHBvcnQpLCBzbyB0aGUgZmlsZSBwcm92aWRlcyBhIHJlbGlhYmxlIGZhbGxiYWNrLlxuICB0cnkge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYXdhaXQgd3JpdGVUb0ZpbGUodGV4dCwgZmlsZW5hbWUpXG4gICAgcmV0dXJuIGBDb3BpZWQgdG8gY2xpcGJvYXJkICgke2NoYXJDb3VudH0gY2hhcmFjdGVycywgJHtsaW5lQ291bnR9IGxpbmVzKVxcbkFsc28gd3JpdHRlbiB0byAke2ZpbGVQYXRofWBcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGBDb3BpZWQgdG8gY2xpcGJvYXJkICgke2NoYXJDb3VudH0gY2hhcmFjdGVycywgJHtsaW5lQ291bnR9IGxpbmVzKWBcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnVuY2F0ZUxpbmUodGV4dDogc3RyaW5nLCBtYXhMZW46IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGZpcnN0TGluZSA9IHRleHQuc3BsaXQoJ1xcbicpWzBdID8/ICcnXG4gIGlmIChzdHJpbmdXaWR0aChmaXJzdExpbmUpIDw9IG1heExlbikge1xuICAgIHJldHVybiBmaXJzdExpbmVcbiAgfVxuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IHdpZHRoID0gMFxuICBjb25zdCB0YXJnZXRXaWR0aCA9IG1heExlbiAtIDFcbiAgZm9yIChjb25zdCBjaGFyIG9mIGZpcnN0TGluZSkge1xuICAgIGNvbnN0IGNoYXJXaWR0aCA9IHN0cmluZ1dpZHRoKGNoYXIpXG4gICAgaWYgKHdpZHRoICsgY2hhcldpZHRoID4gdGFyZ2V0V2lkdGgpIGJyZWFrXG4gICAgcmVzdWx0ICs9IGNoYXJcbiAgICB3aWR0aCArPSBjaGFyV2lkdGhcbiAgfVxuICByZXR1cm4gcmVzdWx0ICsgJ1xcdTIwMjYnXG59XG5cbnR5cGUgUGlja2VyUHJvcHMgPSB7XG4gIGZ1bGxUZXh0OiBzdHJpbmdcbiAgY29kZUJsb2NrczogQ29kZUJsb2NrW11cbiAgbWVzc2FnZUFnZTogbnVtYmVyXG4gIG9uRG9uZTogKFxuICAgIHJlc3VsdD86IHN0cmluZyxcbiAgICBvcHRpb25zPzogeyBkaXNwbGF5PzogQ29tbWFuZFJlc3VsdERpc3BsYXkgfSxcbiAgKSA9PiB2b2lkXG59XG5cbnR5cGUgUGlja2VyU2VsZWN0aW9uID0gbnVtYmVyIHwgJ2Z1bGwnIHwgJ2Fsd2F5cydcblxuZnVuY3Rpb24gQ29weVBpY2tlcih7XG4gIGZ1bGxUZXh0LFxuICBjb2RlQmxvY2tzLFxuICBtZXNzYWdlQWdlLFxuICBvbkRvbmUsXG59OiBQaWNrZXJQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IGZvY3VzZWRSZWYgPSB1c2VSZWY8UGlja2VyU2VsZWN0aW9uPignZnVsbCcpXG5cbiAgY29uc3Qgb3B0aW9uczogT3B0aW9uV2l0aERlc2NyaXB0aW9uPFBpY2tlclNlbGVjdGlvbj5bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ0Z1bGwgcmVzcG9uc2UnLFxuICAgICAgdmFsdWU6ICdmdWxsJyBhcyBjb25zdCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtmdWxsVGV4dC5sZW5ndGh9IGNoYXJzLCAke2NvdW50Q2hhckluU3RyaW5nKGZ1bGxUZXh0LCAnXFxuJykgKyAxfSBsaW5lc2AsXG4gICAgfSxcbiAgICAuLi5jb2RlQmxvY2tzLm1hcCgoYmxvY2ssIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBibG9ja0xpbmVzID0gY291bnRDaGFySW5TdHJpbmcoYmxvY2suY29kZSwgJ1xcbicpICsgMVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IHRydW5jYXRlTGluZShibG9jay5jb2RlLCA2MCksXG4gICAgICAgIHZhbHVlOiBpbmRleCxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgW2Jsb2NrLmxhbmcsIGJsb2NrTGluZXMgPiAxID8gYCR7YmxvY2tMaW5lc30gbGluZXNgIDogdW5kZWZpbmVkXVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgLmpvaW4oJywgJykgfHwgdW5kZWZpbmVkLFxuICAgICAgfVxuICAgIH0pLFxuICAgIHtcbiAgICAgIGxhYmVsOiAnQWx3YXlzIGNvcHkgZnVsbCByZXNwb25zZScsXG4gICAgICB2YWx1ZTogJ2Fsd2F5cycgYXMgY29uc3QsXG4gICAgICBkZXNjcmlwdGlvbjogJ1NraXAgdGhpcyBwaWNrZXIgaW4gdGhlIGZ1dHVyZSAocmV2ZXJ0IHZpYSAvY29uZmlnKScsXG4gICAgfSxcbiAgXVxuXG4gIGZ1bmN0aW9uIGdldFNlbGVjdGlvbkNvbnRlbnQoc2VsZWN0ZWQ6IFBpY2tlclNlbGVjdGlvbik6IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBmaWxlbmFtZTogc3RyaW5nXG4gICAgYmxvY2tJbmRleD86IG51bWJlclxuICB9IHtcbiAgICBpZiAoc2VsZWN0ZWQgPT09ICdmdWxsJyB8fCBzZWxlY3RlZCA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgIHJldHVybiB7IHRleHQ6IGZ1bGxUZXh0LCBmaWxlbmFtZTogUkVTUE9OU0VfRklMRU5BTUUgfVxuICAgIH1cbiAgICBjb25zdCBibG9jayA9IGNvZGVCbG9ja3Nbc2VsZWN0ZWRdIVxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0OiBibG9jay5jb2RlLFxuICAgICAgZmlsZW5hbWU6IGBjb3B5JHtmaWxlRXh0ZW5zaW9uKGJsb2NrLmxhbmcpfWAsXG4gICAgICBibG9ja0luZGV4OiBzZWxlY3RlZCxcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVTZWxlY3Qoc2VsZWN0ZWQ6IFBpY2tlclNlbGVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBnZXRTZWxlY3Rpb25Db250ZW50KHNlbGVjdGVkKVxuICAgIGlmIChzZWxlY3RlZCA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgIGlmICghZ2V0R2xvYmFsQ29uZmlnKCkuY29weUZ1bGxSZXNwb25zZSkge1xuICAgICAgICBzYXZlR2xvYmFsQ29uZmlnKGMgPT4gKHsgLi4uYywgY29weUZ1bGxSZXNwb25zZTogdHJ1ZSB9KSlcbiAgICAgIH1cbiAgICAgIGxvZ0V2ZW50KCd0ZW5ndV9jb3B5Jywge1xuICAgICAgICBibG9ja19jb3VudDogY29kZUJsb2Nrcy5sZW5ndGgsXG4gICAgICAgIGFsd2F5czogdHJ1ZSxcbiAgICAgICAgbWVzc2FnZV9hZ2U6IG1lc3NhZ2VBZ2UsXG4gICAgICB9KVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29weU9yV3JpdGVUb0ZpbGUoY29udGVudC50ZXh0LCBjb250ZW50LmZpbGVuYW1lKVxuICAgICAgb25Eb25lKFxuICAgICAgICBgJHtyZXN1bHR9XFxuUHJlZmVyZW5jZSBzYXZlZC4gVXNlIC9jb25maWcgdG8gY2hhbmdlIGNvcHlGdWxsUmVzcG9uc2VgLFxuICAgICAgKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxvZ0V2ZW50KCd0ZW5ndV9jb3B5Jywge1xuICAgICAgc2VsZWN0ZWRfYmxvY2s6IGNvbnRlbnQuYmxvY2tJbmRleCxcbiAgICAgIGJsb2NrX2NvdW50OiBjb2RlQmxvY2tzLmxlbmd0aCxcbiAgICAgIG1lc3NhZ2VfYWdlOiBtZXNzYWdlQWdlLFxuICAgIH0pXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29weU9yV3JpdGVUb0ZpbGUoY29udGVudC50ZXh0LCBjb250ZW50LmZpbGVuYW1lKVxuICAgIG9uRG9uZShyZXN1bHQpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVXcml0ZShzZWxlY3RlZDogUGlja2VyU2VsZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGVudCA9IGdldFNlbGVjdGlvbkNvbnRlbnQoc2VsZWN0ZWQpXG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2NvcHknLCB7XG4gICAgICBzZWxlY3RlZF9ibG9jazogY29udGVudC5ibG9ja0luZGV4LFxuICAgICAgYmxvY2tfY291bnQ6IGNvZGVCbG9ja3MubGVuZ3RoLFxuICAgICAgbWVzc2FnZV9hZ2U6IG1lc3NhZ2VBZ2UsXG4gICAgICB3cml0ZV9zaG9ydGN1dDogdHJ1ZSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IGF3YWl0IHdyaXRlVG9GaWxlKGNvbnRlbnQudGV4dCwgY29udGVudC5maWxlbmFtZSlcbiAgICAgIG9uRG9uZShgV3JpdHRlbiB0byAke2ZpbGVQYXRofWApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb25Eb25lKGBGYWlsZWQgdG8gd3JpdGUgZmlsZTogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBlfWApXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGUua2V5ID09PSAndycpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgdm9pZCBoYW5kbGVXcml0ZShmb2N1c2VkUmVmLmN1cnJlbnQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZT5cbiAgICAgIDxCb3hcbiAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgIGdhcD17MX1cbiAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICA+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPlNlbGVjdCBjb250ZW50IHRvIGNvcHk6PC9UZXh0PlxuICAgICAgICA8U2VsZWN0PFBpY2tlclNlbGVjdGlvbj5cbiAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgIGhpZGVJbmRleGVzPXtmYWxzZX1cbiAgICAgICAgICBvbkZvY3VzPXt2YWx1ZSA9PiB7XG4gICAgICAgICAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSB2YWx1ZVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DaGFuZ2U9e3NlbGVjdGVkID0+IHtcbiAgICAgICAgICAgIHZvaWQgaGFuZGxlU2VsZWN0KHNlbGVjdGVkKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcbiAgICAgICAgICAgIG9uRG9uZSgnQ29weSBjYW5jZWxsZWQnLCB7IGRpc3BsYXk6ICdzeXN0ZW0nIH0pXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICAgIDxLZXlib2FyZFNob3J0Y3V0SGludCBzaG9ydGN1dD1cImVudGVyXCIgYWN0aW9uPVwiY29weVwiIC8+XG4gICAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJ3XCIgYWN0aW9uPVwid3JpdGUgdG8gZmlsZVwiIC8+XG4gICAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJlc2NcIiBhY3Rpb249XCJjYW5jZWxcIiAvPlxuICAgICAgICAgIDwvQnlsaW5lPlxuICAgICAgICA8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICA8L1BhbmU+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IGNhbGw6IExvY2FsSlNYQ29tbWFuZENhbGwgPSBhc3luYyAob25Eb25lLCBjb250ZXh0LCBhcmdzKSA9PiB7XG4gIGNvbnN0IHRleHRzID0gY29sbGVjdFJlY2VudEFzc2lzdGFudFRleHRzKGNvbnRleHQubWVzc2FnZXMpXG5cbiAgaWYgKHRleHRzLmxlbmd0aCA9PT0gMCkge1xuICAgIG9uRG9uZSgnTm8gYXNzaXN0YW50IG1lc3NhZ2UgdG8gY29weScpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIC9jb3B5IE4gcmVhY2hlcyBiYWNrIE4tMSBtZXNzYWdlcyAoMSA9IGxhdGVzdCwgMiA9IHNlY29uZC10by1sYXRlc3QsIC4uLilcbiAgbGV0IGFnZSA9IDBcbiAgY29uc3QgYXJnID0gYXJncz8udHJpbSgpXG4gIGlmIChhcmcpIHtcbiAgICBjb25zdCBuID0gTnVtYmVyKGFyZylcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobikgfHwgbiA8IDEpIHtcbiAgICAgIG9uRG9uZShgVXNhZ2U6IC9jb3B5IFtOXSB3aGVyZSBOIGlzIDEgKGxhdGVzdCksIDIsIDMsIFxcdTIwMjYgR290OiAke2FyZ31gKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgaWYgKG4gPiB0ZXh0cy5sZW5ndGgpIHtcbiAgICAgIG9uRG9uZShcbiAgICAgICAgYE9ubHkgJHt0ZXh0cy5sZW5ndGh9IGFzc2lzdGFudCAke3RleHRzLmxlbmd0aCA9PT0gMSA/ICdtZXNzYWdlJyA6ICdtZXNzYWdlcyd9IGF2YWlsYWJsZSB0byBjb3B5YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGFnZSA9IG4gLSAxXG4gIH1cblxuICBjb25zdCB0ZXh0ID0gdGV4dHNbYWdlXSFcbiAgY29uc3QgY29kZUJsb2NrcyA9IGV4dHJhY3RDb2RlQmxvY2tzKHRleHQpXG4gIGNvbnN0IGNvbmZpZyA9IGdldEdsb2JhbENvbmZpZygpXG5cbiAgaWYgKGNvZGVCbG9ja3MubGVuZ3RoID09PSAwIHx8IGNvbmZpZy5jb3B5RnVsbFJlc3BvbnNlKSB7XG4gICAgbG9nRXZlbnQoJ3Rlbmd1X2NvcHknLCB7XG4gICAgICBhbHdheXM6IGNvbmZpZy5jb3B5RnVsbFJlc3BvbnNlLFxuICAgICAgYmxvY2tfY291bnQ6IGNvZGVCbG9ja3MubGVuZ3RoLFxuICAgICAgbWVzc2FnZV9hZ2U6IGFnZSxcbiAgICB9KVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvcHlPcldyaXRlVG9GaWxlKHRleHQsIFJFU1BPTlNFX0ZJTEVOQU1FKVxuICAgIG9uRG9uZShyZXN1bHQpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvcHlQaWNrZXJcbiAgICAgIGZ1bGxUZXh0PXt0ZXh0fVxuICAgICAgY29kZUJsb2Nrcz17Y29kZUJsb2Nrc31cbiAgICAgIG1lc3NhZ2VBZ2U9e2FnZX1cbiAgICAgIG9uRG9uZT17b25Eb25lfVxuICAgIC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLEtBQUssRUFBRUMsU0FBUyxRQUFRLGFBQWE7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
|