dev3000 0.0.131 → 0.0.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/bin/dev3000 +90 -0
  2. package/dist/cli.js +202 -33
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/cloud-fix.js +8 -8
  5. package/dist/commands/cloud-fix.js.map +1 -1
  6. package/dist/components/AgentSelector.d.ts +12 -0
  7. package/dist/components/AgentSelector.d.ts.map +1 -0
  8. package/dist/components/AgentSelector.js +99 -0
  9. package/dist/components/AgentSelector.js.map +1 -0
  10. package/dist/components/SkillSelector.d.ts +9 -0
  11. package/dist/components/SkillSelector.d.ts.map +1 -0
  12. package/dist/components/SkillSelector.js +70 -0
  13. package/dist/components/SkillSelector.js.map +1 -0
  14. package/dist/dev-environment.d.ts +37 -0
  15. package/dist/dev-environment.d.ts.map +1 -1
  16. package/dist/dev-environment.js +245 -106
  17. package/dist/dev-environment.js.map +1 -1
  18. package/dist/src/tui-interface-impl.tsx +32 -20
  19. package/dist/tui-interface-impl.d.ts +10 -6
  20. package/dist/tui-interface-impl.d.ts.map +1 -1
  21. package/dist/tui-interface-impl.js +20 -14
  22. package/dist/tui-interface-impl.js.map +1 -1
  23. package/dist/tui-interface.d.ts +11 -7
  24. package/dist/tui-interface.d.ts.map +1 -1
  25. package/dist/tui-interface.js +6 -6
  26. package/dist/tui-interface.js.map +1 -1
  27. package/dist/utils/agent-selection.d.ts +24 -0
  28. package/dist/utils/agent-selection.d.ts.map +1 -0
  29. package/dist/utils/agent-selection.js +34 -0
  30. package/dist/utils/agent-selection.js.map +1 -0
  31. package/dist/utils/project-name.d.ts +6 -0
  32. package/dist/utils/project-name.d.ts.map +1 -1
  33. package/dist/utils/project-name.js +10 -0
  34. package/dist/utils/project-name.js.map +1 -1
  35. package/dist/utils/skill-installer.d.ts +29 -0
  36. package/dist/utils/skill-installer.d.ts.map +1 -0
  37. package/dist/utils/skill-installer.js +185 -0
  38. package/dist/utils/skill-installer.js.map +1 -0
  39. package/dist/utils/tmux-helpers.d.ts.map +1 -1
  40. package/dist/utils/tmux-helpers.js +4 -2
  41. package/dist/utils/tmux-helpers.js.map +1 -1
  42. package/dist/utils/user-config.d.ts +6 -0
  43. package/dist/utils/user-config.d.ts.map +1 -1
  44. package/dist/utils/user-config.js +30 -5
  45. package/dist/utils/user-config.js.map +1 -1
  46. package/dist/utils/version-check.d.ts +10 -1
  47. package/dist/utils/version-check.d.ts.map +1 -1
  48. package/dist/utils/version-check.js +60 -2
  49. package/dist/utils/version-check.js.map +1 -1
  50. package/mcp-server/.next/BUILD_ID +1 -1
  51. package/mcp-server/.next/build-manifest.json +2 -2
  52. package/mcp-server/.next/fallback-build-manifest.json +2 -2
  53. package/mcp-server/.next/next-minimal-server.js.nft.json +1 -1
  54. package/mcp-server/.next/next-server.js.nft.json +1 -1
  55. package/mcp-server/.next/prerender-manifest.json +3 -3
  56. package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
  57. package/mcp-server/.next/server/app/_global-error.html +2 -2
  58. package/mcp-server/.next/server/app/_global-error.rsc +1 -1
  59. package/mcp-server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  60. package/mcp-server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  61. package/mcp-server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  62. package/mcp-server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  63. package/mcp-server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  64. package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
  65. package/mcp-server/.next/server/app/_not-found.html +1 -1
  66. package/mcp-server/.next/server/app/_not-found.rsc +1 -1
  67. package/mcp-server/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  68. package/mcp-server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  69. package/mcp-server/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  70. package/mcp-server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  71. package/mcp-server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  72. package/mcp-server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  73. package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +1 -1
  74. package/mcp-server/.next/server/app/api/logs/append/route.js.nft.json +1 -1
  75. package/mcp-server/.next/server/app/api/logs/head/route.js.nft.json +1 -1
  76. package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +1 -1
  77. package/mcp-server/.next/server/app/api/logs/rotate/route.js.nft.json +1 -1
  78. package/mcp-server/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
  79. package/mcp-server/.next/server/app/api/logs/tail/route.js.nft.json +1 -1
  80. package/mcp-server/.next/server/app/api/orchestrator/route.js.nft.json +1 -1
  81. package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.nft.json +1 -1
  82. package/mcp-server/.next/server/app/api/screenshots/capture/route.js.nft.json +1 -1
  83. package/mcp-server/.next/server/app/api/screenshots/clear/route.js.nft.json +1 -1
  84. package/mcp-server/.next/server/app/api/screenshots/list/route.js.nft.json +1 -1
  85. package/mcp-server/.next/server/app/api/teams/route.js.nft.json +1 -1
  86. package/mcp-server/.next/server/app/api/tools/route.js.nft.json +1 -1
  87. package/mcp-server/.next/server/app/index.html +1 -1
  88. package/mcp-server/.next/server/app/index.rsc +1 -1
  89. package/mcp-server/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  90. package/mcp-server/.next/server/app/index.segments/_full.segment.rsc +1 -1
  91. package/mcp-server/.next/server/app/index.segments/_head.segment.rsc +1 -1
  92. package/mcp-server/.next/server/app/index.segments/_index.segment.rsc +1 -1
  93. package/mcp-server/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  94. package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
  95. package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
  96. package/mcp-server/.next/server/app/page.js.nft.json +1 -1
  97. package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -1
  98. package/mcp-server/.next/server/pages/404.html +1 -1
  99. package/mcp-server/.next/server/pages/500.html +2 -2
  100. package/mcp-server/.next/server/server-reference-manifest.js +1 -1
  101. package/mcp-server/.next/server/server-reference-manifest.json +1 -1
  102. package/package.json +11 -4
  103. package/src/tui-interface-impl.tsx +32 -20
  104. /package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_buildManifest.js +0 -0
  105. /package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_clientMiddlewareManifest.json +0 -0
  106. /package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_ssgManifest.js +0 -0
@@ -0,0 +1,12 @@
1
+ import type { AgentOption } from "../utils/agent-selection.js";
2
+ import type { AgentConfig } from "../utils/user-config.js";
3
+ interface AgentSelectorProps {
4
+ agents: AgentOption[];
5
+ defaultAgentName?: string;
6
+ onComplete: (result: {
7
+ agent: AgentConfig | null;
8
+ }) => void;
9
+ }
10
+ export declare function AgentSelector({ agents, defaultAgentName, onComplete }: AgentSelectorProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export {};
12
+ //# sourceMappingURL=AgentSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentSelector.d.ts","sourceRoot":"","sources":["../../src/components/AgentSelector.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAS1D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;CAC5D;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,kBAAkB,kDAuJzF"}
@@ -0,0 +1,99 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from "ink";
3
+ import SelectInput from "ink-select-input";
4
+ import { useState } from "react";
5
+ export function AgentSelector({ agents, defaultAgentName, onComplete }) {
6
+ const [step, setStep] = useState("select-agent");
7
+ const [customCommand, setCustomCommand] = useState("");
8
+ // Build items for agent selection, with default at top if it exists
9
+ const buildAgentItems = () => {
10
+ const items = [];
11
+ // Sort agents: available first (with default at very top), then unavailable
12
+ const sortedAgents = [...agents].sort((a, b) => {
13
+ // First, separate available from unavailable
14
+ if (a.available && !b.available)
15
+ return -1;
16
+ if (!a.available && b.available)
17
+ return 1;
18
+ // Within available agents, put default first
19
+ if (a.available && b.available) {
20
+ if (a.name === defaultAgentName)
21
+ return -1;
22
+ if (b.name === defaultAgentName)
23
+ return 1;
24
+ }
25
+ return 0;
26
+ });
27
+ for (const agent of sortedAgents) {
28
+ items.push({
29
+ label: agent.available ? agent.displayName : `${agent.displayName} (not installed)`,
30
+ value: agent.available ? agent.name : `disabled:${agent.name}`
31
+ });
32
+ }
33
+ items.push({ label: "Custom command...", value: "custom" });
34
+ items.push({ label: "d3k (no agent)", value: "none" });
35
+ items.push({ label: "d3k --debug", value: "debug" });
36
+ return items;
37
+ };
38
+ const agentItems = buildAgentItems();
39
+ // Handle agent selection
40
+ const handleAgentSelect = (item) => {
41
+ if (item.value.startsWith("disabled:")) {
42
+ return; // Ignore disabled items
43
+ }
44
+ if (item.value === "none") {
45
+ // User chose no agent
46
+ onComplete({ agent: null });
47
+ return;
48
+ }
49
+ if (item.value === "debug") {
50
+ // User chose debug mode
51
+ onComplete({ agent: { name: "debug", command: "debug" } });
52
+ return;
53
+ }
54
+ if (item.value === "custom") {
55
+ setStep("custom-input");
56
+ return;
57
+ }
58
+ // Simple agent selection - complete immediately
59
+ const agent = agents.find((a) => a.name === item.value);
60
+ // Use custom command if specified, otherwise fall back to binary name
61
+ onComplete({ agent: { name: item.value, command: agent?.command || agent?.binary || item.value } });
62
+ };
63
+ // Handle custom command input
64
+ useInput((input, key) => {
65
+ if (step !== "custom-input")
66
+ return;
67
+ if (key.return) {
68
+ if (customCommand.trim()) {
69
+ onComplete({ agent: { name: "custom", command: customCommand.trim() } });
70
+ }
71
+ return;
72
+ }
73
+ if (key.backspace || key.delete) {
74
+ setCustomCommand((prev) => prev.slice(0, -1));
75
+ return;
76
+ }
77
+ if (key.escape) {
78
+ setStep("select-agent");
79
+ setCustomCommand("");
80
+ return;
81
+ }
82
+ // Regular character input
83
+ if (input && !key.ctrl && !key.meta) {
84
+ setCustomCommand((prev) => prev + input);
85
+ }
86
+ }, { isActive: step === "custom-input" });
87
+ // Render based on current step
88
+ if (step === "select-agent") {
89
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#A18CE5", bold: true, children: "d3k Agent Selection" }) }), _jsx(Text, { dimColor: true, children: "Select an AI agent to run alongside d3k:" }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: agentItems, onSelect: handleAgentSelect, indicatorComponent: ({ isSelected }) => _jsx(Text, { color: "#A18CE5", children: isSelected ? "❯ " : " " }), itemComponent: ({ isSelected, label }) => {
90
+ const isDisabled = label.includes("not installed");
91
+ return (_jsx(Text, { color: isDisabled ? "gray" : isSelected ? "#A18CE5" : undefined, dimColor: isDisabled, children: label }));
92
+ } }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Use \u2191\u2193 to navigate, Enter to select" }) })] }));
93
+ }
94
+ if (step === "custom-input") {
95
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#A18CE5", bold: true, children: "Custom Command" }) }), _jsx(Text, { dimColor: true, children: "Enter the command to run your agent:" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "#A18CE5", children: "\u276F " }), _jsx(Text, { children: customCommand }), _jsx(Text, { color: "gray", children: "\u258C" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to confirm, Esc to go back" }) })] }));
96
+ }
97
+ return null;
98
+ }
99
+ //# sourceMappingURL=AgentSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentSelector.js","sourceRoot":"","sources":["../../src/components/AgentSelector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AvailableSkill } from "../utils/skill-installer.js";
2
+ interface SkillSelectorProps {
3
+ skills: AvailableSkill[];
4
+ onComplete: (selectedSkills: AvailableSkill[]) => void;
5
+ onSkip: () => void;
6
+ }
7
+ export declare function SkillSelector({ skills, onComplete, onSkip }: SkillSelectorProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=SkillSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillSelector.d.ts","sourceRoot":"","sources":["../../src/components/SkillSelector.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IACtD,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CA8G/E"}
@@ -0,0 +1,70 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from "ink";
3
+ import { useState } from "react";
4
+ export function SkillSelector({ skills, onComplete, onSkip }) {
5
+ // Start with all skills selected
6
+ const [selectedSkills, setSelectedSkills] = useState(new Set(skills.map((s) => s.name)));
7
+ const [highlightedIndex, setHighlightedIndex] = useState(0);
8
+ // Item 0 is "All Skills", rest are individual skills
9
+ const totalItems = skills.length + 1; // +1 for "All Skills" option
10
+ const allSelected = selectedSkills.size === skills.length;
11
+ useInput((input, key) => {
12
+ if (key.escape) {
13
+ onSkip();
14
+ return;
15
+ }
16
+ if (key.return) {
17
+ const selected = skills.filter((s) => selectedSkills.has(s.name));
18
+ onComplete(selected);
19
+ return;
20
+ }
21
+ if (key.upArrow) {
22
+ setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : totalItems - 1));
23
+ return;
24
+ }
25
+ if (key.downArrow) {
26
+ setHighlightedIndex((prev) => (prev < totalItems - 1 ? prev + 1 : 0));
27
+ return;
28
+ }
29
+ if (input === " ") {
30
+ if (highlightedIndex === 0) {
31
+ // Toggle all
32
+ if (allSelected) {
33
+ setSelectedSkills(new Set());
34
+ }
35
+ else {
36
+ setSelectedSkills(new Set(skills.map((s) => s.name)));
37
+ }
38
+ }
39
+ else {
40
+ // Toggle individual skill
41
+ const skill = skills[highlightedIndex - 1];
42
+ const newSelected = new Set(selectedSkills);
43
+ if (newSelected.has(skill.name)) {
44
+ newSelected.delete(skill.name);
45
+ }
46
+ else {
47
+ newSelected.add(skill.name);
48
+ }
49
+ setSelectedSkills(newSelected);
50
+ }
51
+ }
52
+ });
53
+ const renderCheckbox = (checked, highlighted) => {
54
+ const box = checked ? "[x]" : "[ ]";
55
+ return (_jsxs(Text, { color: highlighted ? "#A18CE5" : undefined, children: [highlighted ? ">" : " ", " ", box] }));
56
+ };
57
+ const truncateDescription = (desc, maxLen = 50) => {
58
+ if (desc.length <= maxLen)
59
+ return desc;
60
+ return `${desc.substring(0, maxLen - 3)}...`;
61
+ };
62
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "#A18CE5", bold: true, children: "d3k Skill Installer" }) }), _jsx(Text, { dimColor: true, children: "Skills available from Vercel:" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Box, { children: [renderCheckbox(allSelected, highlightedIndex === 0), _jsxs(Text, { color: highlightedIndex === 0 ? "#A18CE5" : undefined, bold: true, children: [" ", "All Skills"] })] }), skills.map((skill, index) => {
63
+ const itemIndex = index + 1;
64
+ const isHighlighted = highlightedIndex === itemIndex;
65
+ const isSelected = selectedSkills.has(skill.name);
66
+ const label = skill.isNew ? "(new)" : "(update)";
67
+ return (_jsxs(Box, { children: [renderCheckbox(isSelected, isHighlighted), _jsxs(Text, { color: isHighlighted ? "#A18CE5" : undefined, children: [" ", skill.name, " ", _jsx(Text, { color: skill.isNew ? "green" : "yellow", children: label }), _jsxs(Text, { dimColor: true, children: [" - ", truncateDescription(skill.description)] })] })] }, skill.name));
68
+ })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Space to toggle, Enter to install, Esc to skip" }) })] }));
69
+ }
70
+ //# sourceMappingURL=SkillSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillSelector.js","sourceRoot":"","sources":["../../src/components/SkillSelector.tsx"],"names":[],"mappings":"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"}
@@ -9,6 +9,43 @@ import { type McpConfigTarget } from "./utils/mcp-configs.js";
9
9
  * @see cleanupOrphanedPlaywrightProcesses
10
10
  */
11
11
  export declare const ORPHANED_PROCESS_CLEANUP_PATTERNS: readonly ["ms-playwright/mcp-chrome", "mcp-server-playwright"];
12
+ /**
13
+ * Options for graceful process termination.
14
+ */
15
+ export interface GracefulKillOptions {
16
+ /** Process ID to terminate */
17
+ pid: number;
18
+ /** Delay in ms to wait for graceful shutdown (default: 500) */
19
+ gracePeriodMs?: number;
20
+ /** Function to send signals (for testing) */
21
+ killFn?: (pid: number, signal: NodeJS.Signals | number) => void;
22
+ /** Function to delay (for testing) */
23
+ delayFn?: (ms: number) => Promise<void>;
24
+ /** Optional debug logger */
25
+ debugLog?: (msg: string) => void;
26
+ }
27
+ /**
28
+ * Result of graceful kill operation.
29
+ */
30
+ export interface GracefulKillResult {
31
+ /** Whether the process was terminated */
32
+ terminated: boolean;
33
+ /** Whether graceful shutdown succeeded (SIGTERM was enough) */
34
+ graceful: boolean;
35
+ /** Whether force kill (SIGKILL) was needed */
36
+ forcedKill: boolean;
37
+ }
38
+ /**
39
+ * Gracefully terminate a process by first trying SIGTERM, waiting for graceful
40
+ * shutdown, then falling back to SIGKILL if needed.
41
+ *
42
+ * This is important for processes like Next.js dev server that need to clean up
43
+ * resources (like .next/dev/lock) before exiting.
44
+ *
45
+ * @param options - Kill options including PID and optional overrides for testing
46
+ * @returns Result indicating how the process was terminated
47
+ */
48
+ export declare function gracefulKillProcess(options: GracefulKillOptions): Promise<GracefulKillResult>;
12
49
  interface DevEnvironmentOptions {
13
50
  port: string;
14
51
  mcpPort?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dev-environment.d.ts","sourceRoot":"","sources":["../src/dev-environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-environment.d.ts","sourceRoot":"","sources":["../src/dev-environment.ts"],"names":[],"mappings":"AAwBA,OAAO,EAA8C,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAmBzG;;;;;;;;GAQG;AACH,eAAO,MAAM,iCAAiC,gEAGpC,CAAA;AASV;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAA;IAC/D,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,UAAU,EAAE,OAAO,CAAA;IACnB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAA;IACjB,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0DnG;AAED,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACzC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IAChC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,kBAAkB,CAAC,EAAE,eAAe,EAAE,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAkOD,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1E;AA0UD,wBAAgB,uBAAuB,IAAI,MAAM,CAmBhD;AAkID,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,uBAAuB,CAAiB;IAChD,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,oBAAoB,CAAsB;gBAEtC,OAAO,EAAE,qBAAqB;YAqF5B,mBAAmB;YAsEnB,aAAa;YA+Db,kBAAkB;IAwChC,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;YAQT,mBAAmB;IAmC3B,KAAK;YA0RG,WAAW;IA0HzB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,gBAAgB;IAuExB,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,oBAAoB;YA4Bd,cAAc;YAoRd,aAAa;IAyD3B,OAAO,CAAC,yBAAyB;YAQnB,oBAAoB;YAwJpB,gBAAgB;IAgC9B,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,MAAM;YAmBA,sBAAsB;YAgBtB,kBAAkB;YAuFlB,gBAAgB;IA4G9B,OAAO,CAAC,oBAAoB;YA4Fd,cAAc;CAyM7B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,iBASvE"}