From 6cb2fabe277d90970b7be71705ea9ad948d684d8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Apr 2026 22:48:33 +0000 Subject: [PATCH 01/79] feat: add VSCode chat extension for Open Claude Code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vscode-extension/package.json: extension manifest with chatParticipant contribution (@claude), configuration schema, and commands - vscode-extension/agent-bridge.mjs: long-lived ESM subprocess that runs the agent loop and speaks ndjson over stdin/stdout - vscode-extension/extension.js: CJS extension entry point — registers the @claude chat participant, streams agent events to the VS Code chat UI, manages the bridge lifecycle, and exposes Set API Key / Clear Session / Show Status commands - vscode-extension/README.md: setup, usage, and troubleshooting docs Agent-Logs-Url: https://github.com/codomium/CODE/sessions/88fa876c-c934-453a-8c89-3e6b7dd78be2 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/.vscodeignore | 4 + vscode-extension/README.md | 159 +++++++++++ vscode-extension/agent-bridge.mjs | 150 +++++++++++ vscode-extension/extension.js | 429 ++++++++++++++++++++++++++++++ vscode-extension/package.json | 122 +++++++++ 5 files changed, 864 insertions(+) create mode 100644 vscode-extension/.vscodeignore create mode 100644 vscode-extension/README.md create mode 100644 vscode-extension/agent-bridge.mjs create mode 100644 vscode-extension/extension.js create mode 100644 vscode-extension/package.json diff --git a/vscode-extension/.vscodeignore b/vscode-extension/.vscodeignore new file mode 100644 index 0000000..c45405b --- /dev/null +++ b/vscode-extension/.vscodeignore @@ -0,0 +1,4 @@ +.vscode/** +node_modules/** +.gitignore +*.vsix diff --git a/vscode-extension/README.md b/vscode-extension/README.md new file mode 100644 index 0000000..d9bc677 --- /dev/null +++ b/vscode-extension/README.md @@ -0,0 +1,159 @@ +# Open Claude Code — VSCode Extension + +Use **Open Claude Code** as a chatbot directly inside VSCode's built-in Chat panel — no terminal required. + +--- + +## Features + +- **`@claude` chat participant** — ask questions, request code changes, and run agentic tools without leaving the editor +- **Full tool access** — the same 25+ tools as the CLI (Read, Write, Edit, Bash, Glob, Grep, WebFetch, …) +- **Multi-provider** — Anthropic Claude, OpenAI GPT, Google Gemini (set the model in settings) +- **Conversation memory** — history is maintained across turns in the same VSCode session +- **Slash commands** — `/clear` to reset, `/model` to switch models mid-session +- **Configurable permission mode** — control how agressively the agent modifies your files + +--- + +## Requirements + +- **VSCode 1.90+** (Chat API required) +- **Node.js 18+** on your PATH +- An **API key** for the model provider you want to use (Anthropic, OpenAI, or Google) + +--- + +## Installation + +### Option A — from VSIX (recommended for local use) + +1. Install [`vsce`](https://github.com/microsoft/vscode-vsce) if you haven't already: + ```bash + npm install -g @vscode/vsce + ``` +2. From the `vscode-extension/` directory, build the VSIX: + ```bash + cd vscode-extension + npm install + vsce package --no-dependencies + ``` +3. Install it in VSCode: + ```bash + code --install-extension open-claude-code-1.0.0.vsix + ``` + Or use **Extensions → … → Install from VSIX…** in the VSCode UI. + +### Option B — load as an unpacked extension (development) + +1. Open the repo in VSCode. +2. Press **F5** to launch a new Extension Development Host window. +3. In the new window, open any project folder and use `@claude` in the Chat panel. + +--- + +## Setup + +### Set your API key + +Run the command **Open Claude Code: Set API Key** from the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`). + +The key is stored securely in VSCode's [SecretStorage](https://code.visualstudio.com/api/references/vscode-api#SecretStorage) — it is never written to disk in plaintext. + +Alternatively, set the environment variable before launching VSCode: +```bash +export ANTHROPIC_API_KEY=sk-ant-... +code . +``` + +--- + +## Usage + +Open the **Chat** panel (`Ctrl+Alt+I` / `Cmd+Alt+I`) and type: + +``` +@claude explain this codebase +@claude fix the bug in src/server.js +@claude write unit tests for utils.ts +@claude what does the `loadSettings` function do? +``` + +### Slash commands + +| Command | Description | +|---------|-------------| +| `@claude /clear` | Reset conversation history | +| `@claude /model claude-opus-4-6` | Switch model for this session | + +### Command Palette commands + +| Command | Description | +|---------|-------------| +| **Open Claude Code: Set API Key** | Store your API key securely | +| **Open Claude Code: Clear Session** | Reset conversation history | +| **Open Claude Code: Show Status** | Show bridge status, model, and key info | + +--- + +## Configuration + +Open **Settings** (`Ctrl+,`) and search for `openClaudeCode`: + +| Setting | Default | Description | +|---------|---------|-------------| +| `openClaudeCode.model` | `claude-sonnet-4-6` | AI model to use | +| `openClaudeCode.permissionMode` | `default` | How the agent handles file/shell permissions | +| `openClaudeCode.maxTurns` | `20` | Maximum agentic tool-use turns per request | +| `openClaudeCode.showToolOutput` | `true` | Show tool progress and results in chat | + +### Permission modes + +| Mode | Description | +|------|-------------| +| `default` | Ask before each tool use (safest) | +| `auto` | Automatically approve safe operations | +| `plan` | Read-only — no file writes or shell commands | +| `acceptEdits` | Approve file edits without prompting | +| `bypassPermissions` | Skip all permission checks | + +--- + +## How it works + +The extension spawns **`agent-bridge.mjs`** as a long-lived Node.js subprocess in your workspace directory. The bridge imports the Open Claude Code agent loop from `../v2/src/` and speaks a simple newline-delimited JSON protocol over stdin/stdout. + +``` +VSCode Chat UI + │ vscode.chat.createChatParticipant + ▼ +extension.js (CJS, extension host) + │ child_process.spawn + ▼ +agent-bridge.mjs (ESM, Node.js subprocess) + │ createAgentLoop + 25 tools + ▼ +Anthropic / OpenAI / Google API +``` + +The subprocess persists across chat turns so the agent's conversation history is maintained. Sending `@claude /clear` (or running the **Clear Session** command) resets the history. + +--- + +## Troubleshooting + +**"Failed to start agent"** +- Make sure you have set your API key (see Setup above). +- Check the **Output** panel → **Open Claude Code** channel for subprocess stderr logs. + +**The agent hangs or doesn't respond** +- Run **Open Claude Code: Clear Session** to restart the bridge. +- Check that Node.js 18+ is on your PATH: `node --version`. + +**Tool calls fail with permission errors** +- Change `openClaudeCode.permissionMode` to `auto` or `acceptEdits` in settings. + +--- + +## License + +MIT diff --git a/vscode-extension/agent-bridge.mjs b/vscode-extension/agent-bridge.mjs new file mode 100644 index 0000000..b0124ea --- /dev/null +++ b/vscode-extension/agent-bridge.mjs @@ -0,0 +1,150 @@ +#!/usr/bin/env node +/** + * agent-bridge.mjs + * + * Long-lived subprocess that runs the Open Claude Code agent loop and + * communicates with the VSCode extension over stdin/stdout using + * newline-delimited JSON (ndjson). + * + * Protocol (stdin → bridge): + * {"type":"run", "message":""} + * {"type":"reset"} + * {"type":"model", "model":""} + * + * Protocol (bridge → stdout): + * {"type":"stream_event", "text":"..."} + * {"type":"assistant", "content":"..."} + * {"type":"tool_progress", "tool":"Bash","status":"running"} + * {"type":"result", "tool":"Bash","result":"..."} + * {"type":"thinking", "text":"..."} + * {"type":"compaction", "count":1} + * {"type":"hookPermissionResult", "tool":"...","allowed":false} + * {"type":"stop", "reason":"end_turn"} + * {"type":"error", "message":"..."} + * {"type":"ready"} + * + * Environment variables consumed: + * ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, GEMINI_API_KEY + * ANTHROPIC_MODEL — initial model override + * CLAUDE_CODE_PERMISSION_MODE + * CLAUDE_CODE_MAX_TURNS + */ + +import { createAgentLoop } from '../v2/src/core/agent-loop.mjs'; +import { createToolRegistry } from '../v2/src/tools/registry.mjs'; +import { createPermissionChecker } from '../v2/src/permissions/checker.mjs'; +import { loadSettings } from '../v2/src/config/settings.mjs'; +import { HookEngine } from '../v2/src/hooks/engine.mjs'; +import { AgentLoader } from '../v2/src/agents/loader.mjs'; +import { SkillsLoader } from '../v2/src/skills/loader.mjs'; +import readline from 'readline'; + +// Redirect console.error/warn to stderr so we don't pollute the ndjson stream. +// (It already goes to stderr by default, but belt-and-suspenders.) +const originalStderr = process.stderr.write.bind(process.stderr); + +function emit(obj) { + process.stdout.write(JSON.stringify(obj) + '\n'); +} + +async function init() { + let settings; + try { + settings = await loadSettings(); + } catch (err) { + emit({ type: 'error', message: `Failed to load settings: ${err.message}` }); + process.exit(1); + } + + const tools = createToolRegistry(); + const permissions = createPermissionChecker(settings.permissions); + const hooks = new HookEngine(settings.hooks || {}); + + // Load agents and skills + const agentLoader = new AgentLoader(); + agentLoader.load(); + const skillsLoader = new SkillsLoader(); + skillsLoader.load(); + + const skillTool = tools.get('Skill'); + if (skillTool) skillTool._skillsLoader = skillsLoader; + + const loop = createAgentLoop({ + model: settings.model || 'claude-sonnet-4-6', + tools, + permissions, + settings, + hooks, + }); + + loop.state._agentLoader = agentLoader; + loop.state._skillsLoader = skillsLoader; + loop.state._hooks = settings.hooks; + loop.state._permissionMode = settings.permissions?.defaultMode || 'default'; + + emit({ type: 'ready' }); + + // ── Message loop ──────────────────────────────────────────────────────── + const rl = readline.createInterface({ input: process.stdin, crlfDelay: Infinity }); + + // Serialize requests so they never interleave. + let queue = Promise.resolve(); + + rl.on('line', (line) => { + const trimmed = line.trim(); + if (!trimmed) return; + + let msg; + try { + msg = JSON.parse(trimmed); + } catch { + emit({ type: 'error', message: `Bad JSON from extension: ${trimmed}` }); + return; + } + + if (msg.type === 'reset') { + queue = queue.then(() => handleReset(loop)); + } else if (msg.type === 'run') { + queue = queue.then(() => handleRun(loop, msg.message)); + } else if (msg.type === 'model') { + queue = queue.then(() => handleModelSwitch(loop, msg.model)); + } + }); + + rl.on('close', () => process.exit(0)); +} + +async function handleRun(loop, message) { + if (!message || typeof message !== 'string') { + emit({ type: 'error', message: 'run message must have a non-empty "message" string' }); + emit({ type: 'stop', reason: 'error' }); + return; + } + try { + for await (const event of loop.run(message)) { + emit(event); + } + } catch (err) { + emit({ type: 'error', message: err.message }); + emit({ type: 'stop', reason: 'error' }); + } +} + +async function handleReset(loop) { + loop.state.messages = []; + loop.state.turnCount = 0; + loop.state.tokenUsage = { input: 0, output: 0 }; + emit({ type: 'ready' }); +} + +async function handleModelSwitch(loop, model) { + if (model && typeof model === 'string') { + loop.state.model = model; + } + emit({ type: 'ready' }); +} + +init().catch((err) => { + emit({ type: 'error', message: err.message }); + process.exit(1); +}); diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js new file mode 100644 index 0000000..8acd3fe --- /dev/null +++ b/vscode-extension/extension.js @@ -0,0 +1,429 @@ +'use strict'; +/** + * extension.js — Open Claude Code VSCode Extension + * + * Registers a VSCode Chat Participant (@claude) that forwards messages to a + * long-lived agent-bridge.mjs subprocess running the Open Claude Code agent + * loop. Conversation state is maintained inside the subprocess between turns. + * + * Supported slash commands inside @claude: + * /clear — reset conversation history + * /model — switch model mid-session (e.g. /model claude-opus-4-6) + * + * Extension commands (Command Palette): + * Open Claude Code: Set API Key + * Open Claude Code: Clear Session + * Open Claude Code: Show Status + */ + +const vscode = require('vscode'); +const { spawn } = require('child_process'); +const path = require('path'); + +const PARTICIPANT_ID = 'open-claude-code.claude'; +const BRIDGE_SCRIPT = path.join(__dirname, 'agent-bridge.mjs'); + +// ── AgentBridge ──────────────────────────────────────────────────────────── + +/** + * Manages a single long-lived agent-bridge.mjs child process. + * Serializes requests so concurrent messages don't interleave. + */ +class AgentBridge { + /** + * @param {string} cwd Workspace root (process.cwd for the bridge) + * @param {Record} env Extra environment variables + */ + constructor(cwd, env) { + this._cwd = cwd; + this._env = env; + this._proc = null; + this._lineBuffer = ''; + this._currentHandler = null; + this._queue = Promise.resolve(); + this._started = false; + } + + /** Spawn the bridge process and wait for the first "ready" event. */ + start() { + if (this._started) return; + this._started = true; + + this._proc = spawn(process.execPath, [BRIDGE_SCRIPT], { + cwd: this._cwd, + env: { ...process.env, ...this._env }, + stdio: ['pipe', 'pipe', 'pipe'], + }); + + this._proc.stdout.setEncoding('utf8'); + this._proc.stdout.on('data', (chunk) => { + this._lineBuffer += chunk; + const lines = this._lineBuffer.split('\n'); + this._lineBuffer = lines.pop(); // last may be incomplete + for (const line of lines) { + const trimmed = line.trim(); + if (trimmed) this._dispatch(trimmed); + } + }); + + this._proc.stderr.setEncoding('utf8'); + this._proc.stderr.on('data', (data) => { + // Surface bridge stderr as VS Code output (not chat) + console.error('[open-claude-code bridge]', data.trim()); + }); + + this._proc.on('exit', (code, signal) => { + this._started = false; + if (this._currentHandler) { + this._currentHandler({ + type: 'error', + message: `Agent bridge exited unexpectedly (code=${code}, signal=${signal})`, + }); + this._currentHandler = null; + } + }); + } + + _dispatch(line) { + let event; + try { + event = JSON.parse(line); + } catch { + console.error('[open-claude-code bridge] bad JSON:', line); + return; + } + if (this._currentHandler) { + this._currentHandler(event); + } + } + + /** + * Send a "run" request. Resolves when the agent emits "stop" or "error". + * @param {string} message + * @param {(event: object) => void} onEvent + */ + run(message, onEvent) { + this._queue = this._queue.then(() => this._doRun(message, onEvent)); + return this._queue; + } + + _doRun(message, onEvent) { + return new Promise((resolve) => { + this._currentHandler = (event) => { + onEvent(event); + if (event.type === 'stop' || event.type === 'error') { + this._currentHandler = null; + resolve(); + } + }; + this._send({ type: 'run', message }); + }); + } + + /** Reset conversation history inside the bridge. */ + reset() { + this._queue = this._queue.then( + () => + new Promise((resolve) => { + this._currentHandler = (event) => { + if (event.type === 'ready' || event.type === 'error') { + this._currentHandler = null; + resolve(); + } + }; + this._send({ type: 'reset' }); + }) + ); + return this._queue; + } + + /** Switch model inside the bridge. */ + switchModel(model) { + this._queue = this._queue.then( + () => + new Promise((resolve) => { + this._currentHandler = (event) => { + if (event.type === 'ready' || event.type === 'error') { + this._currentHandler = null; + resolve(); + } + }; + this._send({ type: 'model', model }); + }) + ); + return this._queue; + } + + _send(obj) { + if (!this._proc || !this._started) { + throw new Error('Agent bridge is not running'); + } + this._proc.stdin.write(JSON.stringify(obj) + '\n'); + } + + get isRunning() { + return this._started && !!this._proc; + } + + dispose() { + if (this._proc) { + this._proc.stdin.end(); + this._proc.kill(); + this._proc = null; + } + this._started = false; + } +} + +// ── Extension state ──────────────────────────────────────────────────────── + +/** @type {AgentBridge | null} */ +let bridge = null; + +/** @type {vscode.ExtensionContext | null} */ +let extensionContext = null; + +/** + * Build (or rebuild) the bridge using current settings + stored API key. + * @returns {Promise} + */ +async function getBridge() { + if (bridge?.isRunning) return bridge; + + const config = vscode.workspace.getConfiguration('openClaudeCode'); + const model = config.get('model') || 'claude-sonnet-4-6'; + const permissionMode = config.get('permissionMode') || 'default'; + + // Resolve API keys — prefer secrets store, fall back to process.env + const anthropicKey = + (await extensionContext?.secrets.get('openClaudeCode.apiKey')) || + process.env.ANTHROPIC_API_KEY || + ''; + const openaiKey = process.env.OPENAI_API_KEY || ''; + const googleKey = + process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY || ''; + + const env = {}; + if (anthropicKey) env.ANTHROPIC_API_KEY = anthropicKey; + if (openaiKey) env.OPENAI_API_KEY = openaiKey; + if (googleKey) env.GOOGLE_API_KEY = googleKey; + env.ANTHROPIC_MODEL = model; + env.CLAUDE_CODE_PERMISSION_MODE = permissionMode; + + const cwd = + vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || + process.cwd(); + + bridge = new AgentBridge(cwd, env); + bridge.start(); + return bridge; +} + +// ── Chat participant ─────────────────────────────────────────────────────── + +/** + * Handle a message sent to @claude. + * @param {vscode.ChatRequest} request + * @param {vscode.ChatContext} _context + * @param {vscode.ChatResponseStream} stream + * @param {vscode.CancellationToken} token + */ +async function handleChatRequest(request, _context, stream, token) { + const config = vscode.workspace.getConfiguration('openClaudeCode'); + const showToolOutput = config.get('showToolOutput') !== false; + + // ── Slash commands ────────────────────────────────────────────────────── + if (request.command === 'clear') { + if (bridge?.isRunning) { + await bridge.reset(); + } + stream.markdown('🗑️ Session cleared. Starting a fresh conversation.'); + return; + } + + if (request.command === 'model') { + const modelArg = request.prompt.trim(); + if (!modelArg) { + stream.markdown('Usage: `@claude /model `\n\nExamples:\n- `claude-sonnet-4-6`\n- `claude-opus-4-6`\n- `claude-haiku-4-5`'); + return; + } + if (bridge?.isRunning) { + await bridge.switchModel(modelArg); + } + stream.markdown(`✅ Switched model to \`${modelArg}\`.`); + return; + } + + // ── Regular prompt ────────────────────────────────────────────────────── + const userMessage = request.prompt.trim(); + if (!userMessage) { + stream.markdown('Please enter a message.'); + return; + } + + let agentBridge; + try { + agentBridge = await getBridge(); + } catch (err) { + stream.markdown(`❌ Failed to start agent: ${err.message}\n\nMake sure you have set your API key with the **Open Claude Code: Set API Key** command.`); + return; + } + + // Collect streamed text so we can render it in one markdown block per + // assistant turn (avoids many tiny partial-text markdown calls). + let pendingText = ''; + + function flushText() { + if (pendingText) { + stream.markdown(pendingText); + pendingText = ''; + } + } + + await agentBridge.run(userMessage, (event) => { + // Respect cancellation + if (token.isCancellationRequested) return; + + switch (event.type) { + case 'stream_event': + pendingText += event.text || ''; + break; + + case 'assistant': + if (event.content && !event._streamed) { + pendingText += event.content; + } + break; + + case 'thinking': + // Thinking blocks are not shown by default — they can be noisy. + break; + + case 'tool_progress': + if (showToolOutput) { + flushText(); + stream.progress(`⚙️ Running tool: ${event.tool}`); + } + break; + + case 'result': + if (showToolOutput && event.result !== undefined) { + flushText(); + const preview = String(event.result).slice(0, 400); + const truncated = String(event.result).length > 400 ? '…' : ''; + stream.markdown(`\n\`\`\`\n${preview}${truncated}\n\`\`\`\n`); + } + break; + + case 'compaction': + flushText(); + stream.markdown(`\n> ℹ️ Context compacted (pass ${event.count})\n`); + break; + + case 'hookPermissionResult': + if (!event.allowed) { + flushText(); + stream.markdown(`\n> ⛔ Tool blocked by hook: \`${event.tool}\`\n`); + } + break; + + case 'error': + flushText(); + stream.markdown(`\n❌ **Error:** ${event.message}`); + break; + + case 'stop': + flushText(); + break; + + default: + break; + } + }); + + // Final flush in case the loop ended without a 'stop' event + flushText(); +} + +// ── Activation / deactivation ────────────────────────────────────────────── + +/** + * @param {vscode.ExtensionContext} context + */ +function activate(context) { + extensionContext = context; + + // ── Chat participant ──────────────────────────────────────────────────── + const participant = vscode.chat.createChatParticipant( + PARTICIPANT_ID, + handleChatRequest + ); + participant.iconPath = vscode.Uri.joinPath(context.extensionUri, 'assets', 'icon.png'); + context.subscriptions.push(participant); + + // ── Commands ──────────────────────────────────────────────────────────── + + context.subscriptions.push( + vscode.commands.registerCommand('openClaudeCode.setApiKey', async () => { + const key = await vscode.window.showInputBox({ + prompt: 'Enter your Anthropic API key (sk-ant-...)', + password: true, + placeHolder: 'sk-ant-api03-...', + validateInput: (v) => + v && v.startsWith('sk-ant-') ? null : 'Key should start with sk-ant-', + }); + if (key) { + await context.secrets.store('openClaudeCode.apiKey', key); + // Restart bridge so it picks up the new key + bridge?.dispose(); + bridge = null; + vscode.window.showInformationMessage('API key saved. Bridge will restart on next message.'); + } + }) + ); + + context.subscriptions.push( + vscode.commands.registerCommand('openClaudeCode.clearSession', async () => { + if (bridge?.isRunning) { + await bridge.reset(); + vscode.window.showInformationMessage('Open Claude Code session cleared.'); + } else { + vscode.window.showInformationMessage('No active session to clear.'); + } + }) + ); + + context.subscriptions.push( + vscode.commands.registerCommand('openClaudeCode.showStatus', async () => { + const config = vscode.workspace.getConfiguration('openClaudeCode'); + const model = config.get('model') || 'claude-sonnet-4-6'; + const permissionMode = config.get('permissionMode') || 'default'; + const hasKey = !!( + (await context.secrets.get('openClaudeCode.apiKey')) || + process.env.ANTHROPIC_API_KEY + ); + const status = bridge?.isRunning ? '🟢 running' : '⚪ idle'; + + vscode.window.showInformationMessage( + `Open Claude Code — bridge: ${status} | model: ${model} | permission: ${permissionMode} | API key: ${hasKey ? '✅ set' : '❌ missing'}` + ); + }) + ); + + // Reload bridge when settings change + context.subscriptions.push( + vscode.workspace.onDidChangeConfiguration((e) => { + if (e.affectsConfiguration('openClaudeCode')) { + bridge?.dispose(); + bridge = null; + } + }) + ); +} + +function deactivate() { + bridge?.dispose(); + bridge = null; +} + +module.exports = { activate, deactivate }; diff --git a/vscode-extension/package.json b/vscode-extension/package.json new file mode 100644 index 0000000..b35a65c --- /dev/null +++ b/vscode-extension/package.json @@ -0,0 +1,122 @@ +{ + "name": "open-claude-code", + "displayName": "Open Claude Code", + "description": "AI coding assistant powered by Claude — chat inside VSCode using the Open Claude Code agent loop", + "version": "1.0.0", + "publisher": "open-claude-code", + "engines": { + "vscode": "^1.90.0" + }, + "categories": [ + "AI", + "Chat" + ], + "keywords": [ + "claude", + "ai", + "chat", + "coding assistant", + "anthropic" + ], + "activationEvents": [ + "onStartupFinished" + ], + "main": "./extension.js", + "contributes": { + "chatParticipants": [ + { + "id": "open-claude-code.claude", + "fullName": "Open Claude Code", + "name": "claude", + "description": "AI coding assistant powered by Claude. Ask about your code, run tools, edit files.", + "isSticky": true, + "commands": [ + { + "name": "clear", + "description": "Clear conversation history and start a new session" + }, + { + "name": "model", + "description": "Switch the model (e.g. @claude /model claude-opus-4-6)" + } + ] + } + ], + "commands": [ + { + "command": "openClaudeCode.setApiKey", + "title": "Open Claude Code: Set API Key" + }, + { + "command": "openClaudeCode.clearSession", + "title": "Open Claude Code: Clear Session" + }, + { + "command": "openClaudeCode.showStatus", + "title": "Open Claude Code: Show Status" + } + ], + "configuration": { + "title": "Open Claude Code", + "properties": { + "openClaudeCode.model": { + "type": "string", + "default": "claude-sonnet-4-6", + "enum": [ + "claude-sonnet-4-6", + "claude-haiku-4-5", + "claude-opus-4-6", + "gpt-4o", + "gpt-4o-mini", + "gemini-2.0-flash" + ], + "description": "AI model to use for the chat participant" + }, + "openClaudeCode.permissionMode": { + "type": "string", + "enum": [ + "default", + "auto", + "plan", + "acceptEdits", + "bypassPermissions" + ], + "default": "default", + "enumDescriptions": [ + "Ask for permission before each tool use", + "Automatically approve safe operations", + "Plan mode — read only, no file edits", + "Automatically accept file edits without asking", + "Bypass all permission checks" + ], + "description": "Permission mode for file and shell operations" + }, + "openClaudeCode.maxTurns": { + "type": "number", + "default": 20, + "minimum": 1, + "maximum": 100, + "description": "Maximum agentic tool-use turns per chat request" + }, + "openClaudeCode.showToolOutput": { + "type": "boolean", + "default": true, + "description": "Show tool progress and results inline in chat" + } + } + } + }, + "scripts": { + "package": "vsce package --no-dependencies", + "install-vsix": "code --install-extension open-claude-code-1.0.0.vsix" + }, + "devDependencies": { + "@types/vscode": "^1.90.0", + "@vscode/vsce": "^2.27.0" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/codomium/CODE" + } +} From 747ac825c511a99f369e58de403ccf720fdec839 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Apr 2026 22:51:01 +0000 Subject: [PATCH 02/79] =?UTF-8?q?fix=20typo:=20agressively=20=E2=86=92=20a?= =?UTF-8?q?ggressively=20in=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent-Logs-Url: https://github.com/codomium/CODE/sessions/88fa876c-c934-453a-8c89-3e6b7dd78be2 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vscode-extension/README.md b/vscode-extension/README.md index d9bc677..63155ae 100644 --- a/vscode-extension/README.md +++ b/vscode-extension/README.md @@ -11,7 +11,7 @@ Use **Open Claude Code** as a chatbot directly inside VSCode's built-in Chat pan - **Multi-provider** — Anthropic Claude, OpenAI GPT, Google Gemini (set the model in settings) - **Conversation memory** — history is maintained across turns in the same VSCode session - **Slash commands** — `/clear` to reset, `/model` to switch models mid-session -- **Configurable permission mode** — control how agressively the agent modifies your files +- **Configurable permission mode** — control how aggressively the agent modifies your files --- From a2b3f5bed3a77658f3d410362aec55f13def591d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 17:42:22 +0000 Subject: [PATCH 03/79] feat: Add Cursor-style chat sidebar panel with security fixes Agent-Logs-Url: https://github.com/codomium/CODE/sessions/cc2f5ec8-96d3-4e56-8ba7-17095a91c778 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/README.md | 71 ++- vscode-extension/extension.js | 583 ++++++++++++------ vscode-extension/media/chat.css | 794 +++++++++++++++++++++++++ vscode-extension/media/chat.html | 131 +++++ vscode-extension/media/chat.js | 982 +++++++++++++++++++++++++++++++ vscode-extension/media/icon.svg | 5 + vscode-extension/package.json | 39 +- 7 files changed, 2409 insertions(+), 196 deletions(-) create mode 100644 vscode-extension/media/chat.css create mode 100644 vscode-extension/media/chat.html create mode 100644 vscode-extension/media/chat.js create mode 100644 vscode-extension/media/icon.svg diff --git a/vscode-extension/README.md b/vscode-extension/README.md index 63155ae..7aab501 100644 --- a/vscode-extension/README.md +++ b/vscode-extension/README.md @@ -1,15 +1,32 @@ # Open Claude Code — VSCode Extension -Use **Open Claude Code** as a chatbot directly inside VSCode's built-in Chat panel — no terminal required. +A **Cursor-style AI coding assistant** built directly into VSCode — no terminal required. --- ## Features -- **`@claude` chat participant** — ask questions, request code changes, and run agentic tools without leaving the editor +### 🖥️ Cursor-style Sidebar Panel (new in v1.1) +- **Dedicated activity bar icon** — opens a full chat panel in the VS Code sidebar +- **Rich markdown rendering** — headers, tables, bold/italic, blockquotes +- **Syntax-highlighted code blocks** — JavaScript, TypeScript, Python, Go, Rust, JSON, Bash and more +- **Copy button on every code block** — one click to copy to clipboard +- **Apply to file** — apply AI-suggested code directly to the active editor or pick a file +- **Streaming responses** — see tokens arrive in real-time with animated cursor +- **Tool visualization** — collapsible cards showing each tool execution and result +- **Extended thinking** — expandable thinking blocks when the model reasons +- **@file context** — type `@filename` in the input to inject file contents into the prompt +- **File picker** — add any workspace file to context with the 📄 button +- **Model & mode selector** — switch model and permission mode directly from the UI +- **Session stats** — token count, cost estimate, and elapsed time always visible +- **Stop button** — cancel generation at any time +- **New conversation** — clear history with one click + +### 💬 `@claude` Chat Participant (VSCode built-in chat) +- Ask questions, request code changes, and run agentic tools without leaving the editor - **Full tool access** — the same 25+ tools as the CLI (Read, Write, Edit, Bash, Glob, Grep, WebFetch, …) -- **Multi-provider** — Anthropic Claude, OpenAI GPT, Google Gemini (set the model in settings) -- **Conversation memory** — history is maintained across turns in the same VSCode session +- **Multi-provider** — Anthropic Claude, OpenAI GPT, Google Gemini +- **Conversation memory** — history is maintained across turns in the same VS Code session - **Slash commands** — `/clear` to reset, `/model` to switch models mid-session - **Configurable permission mode** — control how aggressively the agent modifies your files @@ -69,6 +86,21 @@ code . ## Usage +### Sidebar chat panel (recommended) + +Click the **✦ Claude Code** icon in the activity bar (left sidebar) to open the chat panel, then: +- Type your message and press **Enter** to send (Shift+Enter for a new line) +- Use `@filename` to inject file contents into the prompt +- Click **📄** to pick a file from the workspace +- Click **New** to start a fresh conversation +- Use the **Model** and **Mode** dropdowns to configure the agent + +When Claude suggests code, every code block has: +- **Copy** — copy the code to clipboard +- **Apply to file…** — apply the code to the active editor (or pick a file) + +### @claude chat participant (VSCode built-in chat) + Open the **Chat** panel (`Ctrl+Alt+I` / `Cmd+Alt+I`) and type: ``` @@ -92,6 +124,8 @@ Open the **Chat** panel (`Ctrl+Alt+I` / `Cmd+Alt+I`) and type: | **Open Claude Code: Set API Key** | Store your API key securely | | **Open Claude Code: Clear Session** | Reset conversation history | | **Open Claude Code: Show Status** | Show bridge status, model, and key info | +| **Open Claude Code: Open Chat Panel** | Focus the sidebar chat panel | +| **Open Claude Code: Apply Code to Active File** | Paste code into the active editor | --- @@ -105,6 +139,7 @@ Open **Settings** (`Ctrl+,`) and search for `openClaudeCode`: | `openClaudeCode.permissionMode` | `default` | How the agent handles file/shell permissions | | `openClaudeCode.maxTurns` | `20` | Maximum agentic tool-use turns per request | | `openClaudeCode.showToolOutput` | `true` | Show tool progress and results in chat | +| `openClaudeCode.enableWebviewPanel` | `true` | Show the Cursor-style sidebar chat panel | ### Permission modes @@ -123,19 +158,25 @@ Open **Settings** (`Ctrl+,`) and search for `openClaudeCode`: The extension spawns **`agent-bridge.mjs`** as a long-lived Node.js subprocess in your workspace directory. The bridge imports the Open Claude Code agent loop from `../v2/src/` and speaks a simple newline-delimited JSON protocol over stdin/stdout. ``` -VSCode Chat UI - │ vscode.chat.createChatParticipant - ▼ -extension.js (CJS, extension host) - │ child_process.spawn - ▼ -agent-bridge.mjs (ESM, Node.js subprocess) - │ createAgentLoop + 25 tools - ▼ -Anthropic / OpenAI / Google API +┌──────────────────────────────────────────────────────┐ +│ VS Code Extension Host │ +│ │ +│ ┌─────────────────────────┐ ┌────────────────────┐ │ +│ │ ClaudeCodeViewProvider │ │ ChatParticipant │ │ +│ │ (Cursor-style sidebar) │ │ (@claude) │ │ +│ └──────────┬──────────────┘ └─────────┬──────────┘ │ +│ │ postMessage / onMessage │ │ +│ └────────────┬──────────────┘ │ +│ │ child_process.spawn │ +└──────────────────────────┼──────────────────────────-┘ + ▼ + agent-bridge.mjs (ESM Node.js subprocess) + │ createAgentLoop + 25 tools + ▼ + Anthropic / OpenAI / Google API ``` -The subprocess persists across chat turns so the agent's conversation history is maintained. Sending `@claude /clear` (or running the **Clear Session** command) resets the history. +The subprocess persists across chat turns so the agent's conversation history is maintained. Clicking **New** (or running the **Clear Session** command) resets the history. --- diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 8acd3fe..0481466 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -2,56 +2,56 @@ /** * extension.js — Open Claude Code VSCode Extension * - * Registers a VSCode Chat Participant (@claude) that forwards messages to a - * long-lived agent-bridge.mjs subprocess running the Open Claude Code agent - * loop. Conversation state is maintained inside the subprocess between turns. + * Provides two interfaces: * - * Supported slash commands inside @claude: - * /clear — reset conversation history - * /model — switch model mid-session (e.g. /model claude-opus-4-6) + * 1. Custom Webview Panel (Cursor-style sidebar) + * - Activity bar icon → dedicated chat panel + * - Rich HTML/CSS/JS UI with markdown, syntax highlighting, code apply, @file mentions + * - Streaming token display, tool visualization, model/mode switching * - * Extension commands (Command Palette): + * 2. Chat Participant (@claude) — kept for backwards compatibility + * - Forwards messages to the shared agent-bridge subprocess + * + * Commands: * Open Claude Code: Set API Key * Open Claude Code: Clear Session * Open Claude Code: Show Status + * Open Claude Code: Open Chat Panel + * Open Claude Code: Apply Code to Active File */ const vscode = require('vscode'); const { spawn } = require('child_process'); const path = require('path'); +const fs = require('fs'); const PARTICIPANT_ID = 'open-claude-code.claude'; -const BRIDGE_SCRIPT = path.join(__dirname, 'agent-bridge.mjs'); +const BRIDGE_SCRIPT = path.join(__dirname, 'agent-bridge.mjs'); -// ── AgentBridge ──────────────────────────────────────────────────────────── +// ── AgentBridge ───────────────────────────────────────────────────────────── /** * Manages a single long-lived agent-bridge.mjs child process. * Serializes requests so concurrent messages don't interleave. */ class AgentBridge { - /** - * @param {string} cwd Workspace root (process.cwd for the bridge) - * @param {Record} env Extra environment variables - */ constructor(cwd, env) { - this._cwd = cwd; - this._env = env; + this._cwd = cwd; + this._env = env; this._proc = null; this._lineBuffer = ''; this._currentHandler = null; - this._queue = Promise.resolve(); + this._queue = Promise.resolve(); this._started = false; } - /** Spawn the bridge process and wait for the first "ready" event. */ start() { if (this._started) return; this._started = true; this._proc = spawn(process.execPath, [BRIDGE_SCRIPT], { - cwd: this._cwd, - env: { ...process.env, ...this._env }, + cwd: this._cwd, + env: { ...process.env, ...this._env }, stdio: ['pipe', 'pipe', 'pipe'], }); @@ -59,7 +59,7 @@ class AgentBridge { this._proc.stdout.on('data', (chunk) => { this._lineBuffer += chunk; const lines = this._lineBuffer.split('\n'); - this._lineBuffer = lines.pop(); // last may be incomplete + this._lineBuffer = lines.pop(); for (const line of lines) { const trimmed = line.trim(); if (trimmed) this._dispatch(trimmed); @@ -68,7 +68,6 @@ class AgentBridge { this._proc.stderr.setEncoding('utf8'); this._proc.stderr.on('data', (data) => { - // Surface bridge stderr as VS Code output (not chat) console.error('[open-claude-code bridge]', data.trim()); }); @@ -86,22 +85,13 @@ class AgentBridge { _dispatch(line) { let event; - try { - event = JSON.parse(line); - } catch { + try { event = JSON.parse(line); } catch { console.error('[open-claude-code bridge] bad JSON:', line); return; } - if (this._currentHandler) { - this._currentHandler(event); - } + if (this._currentHandler) this._currentHandler(event); } - /** - * Send a "run" request. Resolves when the agent emits "stop" or "error". - * @param {string} message - * @param {(event: object) => void} onEvent - */ run(message, onEvent) { this._queue = this._queue.then(() => this._doRun(message, onEvent)); return this._queue; @@ -120,50 +110,42 @@ class AgentBridge { }); } - /** Reset conversation history inside the bridge. */ reset() { this._queue = this._queue.then( - () => - new Promise((resolve) => { - this._currentHandler = (event) => { - if (event.type === 'ready' || event.type === 'error') { - this._currentHandler = null; - resolve(); - } - }; - this._send({ type: 'reset' }); - }) + () => new Promise((resolve) => { + this._currentHandler = (event) => { + if (event.type === 'ready' || event.type === 'error') { + this._currentHandler = null; + resolve(); + } + }; + this._send({ type: 'reset' }); + }) ); return this._queue; } - /** Switch model inside the bridge. */ switchModel(model) { this._queue = this._queue.then( - () => - new Promise((resolve) => { - this._currentHandler = (event) => { - if (event.type === 'ready' || event.type === 'error') { - this._currentHandler = null; - resolve(); - } - }; - this._send({ type: 'model', model }); - }) + () => new Promise((resolve) => { + this._currentHandler = (event) => { + if (event.type === 'ready' || event.type === 'error') { + this._currentHandler = null; + resolve(); + } + }; + this._send({ type: 'model', model }); + }) ); return this._queue; } _send(obj) { - if (!this._proc || !this._started) { - throw new Error('Agent bridge is not running'); - } + if (!this._proc || !this._started) throw new Error('Agent bridge is not running'); this._proc.stdin.write(JSON.stringify(obj) + '\n'); } - get isRunning() { - return this._started && !!this._proc; - } + get isRunning() { return this._started && !!this._proc; } dispose() { if (this._proc) { @@ -175,7 +157,7 @@ class AgentBridge { } } -// ── Extension state ──────────────────────────────────────────────────────── +// ── Extension state ────────────────────────────────────────────────────────── /** @type {AgentBridge | null} */ let bridge = null; @@ -183,60 +165,330 @@ let bridge = null; /** @type {vscode.ExtensionContext | null} */ let extensionContext = null; -/** - * Build (or rebuild) the bridge using current settings + stored API key. - * @returns {Promise} - */ +/** @type {ClaudeCodeViewProvider | null} */ +let viewProvider = null; + async function getBridge() { - if (bridge?.isRunning) return bridge; + if (bridge && bridge.isRunning) return bridge; const config = vscode.workspace.getConfiguration('openClaudeCode'); - const model = config.get('model') || 'claude-sonnet-4-6'; + const model = config.get('model') || 'claude-sonnet-4-6'; const permissionMode = config.get('permissionMode') || 'default'; - // Resolve API keys — prefer secrets store, fall back to process.env const anthropicKey = - (await extensionContext?.secrets.get('openClaudeCode.apiKey')) || - process.env.ANTHROPIC_API_KEY || - ''; - const openaiKey = process.env.OPENAI_API_KEY || ''; - const googleKey = - process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY || ''; + (await extensionContext.secrets.get('openClaudeCode.apiKey')) || + process.env.ANTHROPIC_API_KEY || ''; + const openaiKey = process.env.OPENAI_API_KEY || ''; + const googleKey = process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY || ''; const env = {}; - if (anthropicKey) env.ANTHROPIC_API_KEY = anthropicKey; - if (openaiKey) env.OPENAI_API_KEY = openaiKey; - if (googleKey) env.GOOGLE_API_KEY = googleKey; - env.ANTHROPIC_MODEL = model; - env.CLAUDE_CODE_PERMISSION_MODE = permissionMode; + if (anthropicKey) env.ANTHROPIC_API_KEY = anthropicKey; + if (openaiKey) env.OPENAI_API_KEY = openaiKey; + if (googleKey) env.GOOGLE_API_KEY = googleKey; + env.ANTHROPIC_MODEL = model; + env.CLAUDE_CODE_PERMISSION_MODE = permissionMode; + env.CLAUDE_CODE_MAX_TURNS = String(config.get('maxTurns') || 20); - const cwd = - vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || - process.cwd(); + const cwd = (vscode.workspace.workspaceFolders && + vscode.workspace.workspaceFolders[0] && + vscode.workspace.workspaceFolders[0].uri.fsPath) || process.cwd(); bridge = new AgentBridge(cwd, env); bridge.start(); return bridge; } -// ── Chat participant ─────────────────────────────────────────────────────── +// ── ClaudeCodeViewProvider (Webview sidebar) ───────────────────────────────── + +class ClaudeCodeViewProvider { + constructor(context) { + this._context = context; + this._view = null; + this._isCancelled = false; + this._tokenUsage = { input: 0, output: 0 }; + this._cost = 0; + } + + resolveWebviewView(webviewView) { + this._view = webviewView; + + webviewView.webview.options = { + enableScripts: true, + localResourceRoots: [ + vscode.Uri.joinPath(this._context.extensionUri, 'media'), + ], + }; + + webviewView.webview.html = this._getHtmlForWebview(webviewView.webview); + + webviewView.webview.onDidReceiveMessage( + (msg) => this._handleWebviewMessage(msg), + null, + this._context.subscriptions + ); + } + + postMessage(msg) { + if (this._view) { + this._view.webview.postMessage(msg); + } + } + + async _handleWebviewMessage(msg) { + switch (msg.type) { + case 'ready': { + const config = vscode.workspace.getConfiguration('openClaudeCode'); + this.postMessage({ + type: 'initialized', + model: config.get('model') || 'claude-sonnet-4-6', + mode: config.get('permissionMode') || 'default', + }); + break; + } + + case 'send': { + await this._runPrompt(msg.message, msg.contextFiles, msg.fileRefs); + break; + } + + case 'clear': { + if (bridge && bridge.isRunning) await bridge.reset(); + this._tokenUsage = { input: 0, output: 0 }; + this._cost = 0; + this.postMessage({ type: 'sessionCleared' }); + break; + } + + case 'cancel': { + this._isCancelled = true; + break; + } + + case 'model': { + const config = vscode.workspace.getConfiguration('openClaudeCode'); + await config.update('model', msg.model, vscode.ConfigurationTarget.Global); + if (bridge && bridge.isRunning) await bridge.switchModel(msg.model); + this.postMessage({ type: 'modelChanged', model: msg.model }); + break; + } + + case 'mode': { + const config = vscode.workspace.getConfiguration('openClaudeCode'); + await config.update('permissionMode', msg.mode, vscode.ConfigurationTarget.Global); + if (bridge) { bridge.dispose(); bridge = null; } + break; + } + + case 'applyCode': { + await this._applyCodeToActiveEditor(msg.code, msg.language); + break; + } + + case 'applyCodeToFile': { + await this._applyCodeWithFilePicker(msg.code, msg.language); + break; + } + + case 'copyToClipboard': { + await vscode.env.clipboard.writeText(msg.text || ''); + break; + } + + case 'pickFile': { + const uris = await vscode.window.showOpenDialog({ + canSelectMany: false, + openLabel: 'Add to context', + }); + if (uris && uris[0]) { + await this._addFileToContext(uris[0].fsPath); + } + break; + } + + case 'addContextFile': { + if (msg.path) await this._addFileToContext(msg.path); + break; + } + + case 'fileSearch': { + const results = await this._searchFiles(msg.query || ''); + this.postMessage({ type: 'fileSearchResults', files: results }); + break; + } + + default: + break; + } + } + + async _runPrompt(message, contextFilePaths, fileRefs) { + this._isCancelled = false; + + let fullPrompt = message; + + // Inject context file contents + const allPaths = new Set(contextFilePaths || []); + if (fileRefs && fileRefs.length > 0) { + const ws = vscode.workspace.workspaceFolders && + vscode.workspace.workspaceFolders[0] && + vscode.workspace.workspaceFolders[0].uri.fsPath; + if (ws) { + for (const ref of fileRefs) { + const abs = path.resolve(ws, ref); + if (fs.existsSync(abs)) allPaths.add(abs); + } + } + } + + if (allPaths.size > 0) { + const fileContents = []; + for (const fp of allPaths) { + try { + const content = fs.readFileSync(fp, 'utf8'); + const rel = vscode.workspace.asRelativePath(fp); + fileContents.push('\n\n--- File: ' + rel + ' ---\n' + content); + } catch { + // skip unreadable files + } + } + if (fileContents.length > 0) { + fullPrompt = message + '\n\n[Context files:]' + fileContents.join(''); + } + } + + let agentBridge; + try { + agentBridge = await getBridge(); + } catch (err) { + this.postMessage({ type: 'error', message: 'Failed to start agent: ' + err.message }); + this.postMessage({ type: 'stop' }); + return; + } + + await agentBridge.run(fullPrompt, (event) => { + if (this._isCancelled) return; + this.postMessage(event); + }); + + if (!this._isCancelled) { + this.postMessage({ type: 'stop' }); + } + } + + async _applyCodeToActiveEditor(code) { + const editor = vscode.window.activeTextEditor; + if (!editor) { + vscode.window.showWarningMessage('No active editor. Open a file first.'); + return; + } + await editor.edit((editBuilder) => { + if (!editor.selection.isEmpty) { + editBuilder.replace(editor.selection, code); + } else { + const lastLine = editor.document.lineCount - 1; + const lastChar = editor.document.lineAt(lastLine).text.length; + const end = new vscode.Position(lastLine, lastChar); + editBuilder.insert(end, '\n' + code); + } + }); + await vscode.commands.executeCommand('workbench.action.files.save'); + vscode.window.showInformationMessage('Code applied to ' + path.basename(editor.document.fileName)); + } + + async _applyCodeWithFilePicker(code, language) { + const ext = languageToExt(language); + const uris = await vscode.window.showOpenDialog({ + canSelectMany: false, + openLabel: 'Apply to this file', + filters: ext ? { [language || 'code']: [ext] } : undefined, + }); + if (!uris || !uris[0]) return; + + const doc = await vscode.workspace.openTextDocument(uris[0]); + const editor = await vscode.window.showTextDocument(doc); + await editor.edit((eb) => { + const fullRange = new vscode.Range( + doc.positionAt(0), + doc.positionAt(doc.getText().length) + ); + eb.replace(fullRange, code); + }); + await vscode.commands.executeCommand('workbench.action.files.save'); + } + + async _addFileToContext(filePath) { + const name = path.basename(filePath); + this.postMessage({ type: 'fileContent', path: filePath, name }); + } + + async _searchFiles(query) { + const pattern = query ? ('**/*' + query + '*') : '**/*'; + const uris = await vscode.workspace.findFiles(pattern, '**/node_modules/**', 20); + return uris.map((u) => ({ + name: path.basename(u.fsPath), + path: u.fsPath, + relativePath: vscode.workspace.asRelativePath(u.fsPath), + })); + } + + _getHtmlForWebview(webview) { + const cssUri = webview.asWebviewUri( + vscode.Uri.joinPath(this._context.extensionUri, 'media', 'chat.css') + ); + const jsUri = webview.asWebviewUri( + vscode.Uri.joinPath(this._context.extensionUri, 'media', 'chat.js') + ); + + const templatePath = path.join(this._context.extensionPath, 'media', 'chat.html'); + let html = fs.readFileSync(templatePath, 'utf8'); + + const nonce = generateNonce(); + const csp = [ + "default-src 'none'", + "style-src " + webview.cspSource + " 'unsafe-inline'", + "script-src 'nonce-" + nonce + "'", + "img-src " + webview.cspSource + " data: https:", + "font-src " + webview.cspSource, + ].join('; '); + + html = html + .replace('', '') + .replace('', cssUri.toString()) + .replace(//g, jsUri.toString()) + .replace(' + + diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js new file mode 100644 index 0000000..7aa3001 --- /dev/null +++ b/vscode-extension/media/chat.js @@ -0,0 +1,982 @@ +/* eslint-disable */ +/** + * chat.js — Claude Code VS Code Webview Client + * + * Responsibilities: + * - Render chat messages (markdown, code blocks with syntax highlighting) + * - Stream assistant replies token-by-token + * - Display tool execution cards (collapsible) + * - @file autocomplete for context injection + * - Apply-to-file button on code blocks + * - Model / permission-mode selectors + * - Stats bar (tokens, cost, elapsed time) + */ + +(function () { + 'use strict'; + + // ── VS Code API ────────────────────────────────────────────────────────── + const vscode = acquireVsCodeApi(); + + // ── State ──────────────────────────────────────────────────────────────── + let isLoading = false; + let currentStreamMsg = null; // DOM element being streamed into + let contextFiles = []; // { name, path } + let tokenStats = { input: 0, output: 0 }; + let costTotal = 0; + let startTime = Date.now(); + let currentModel = ''; + let pendingApply = null; // { code, language } + let activeToolCards = {}; // toolName -> dom element + + // ── DOM refs ───────────────────────────────────────────────────────────── + const messagesEl = document.getElementById('messages'); + const welcomeEl = document.getElementById('welcome'); + const inputEl = document.getElementById('user-input'); + const sendBtn = document.getElementById('send-btn'); + const stopBtn = document.getElementById('stop-btn'); + const modelSelect = document.getElementById('model-select'); + const modeSelect = document.getElementById('mode-select'); + const addFileBtn = document.getElementById('add-file-btn'); + const newChatBtn = document.getElementById('new-chat-btn'); + const contextFilesEl = document.getElementById('context-files'); + const loadingEl = document.getElementById('loading-indicator'); + const loadingText = document.getElementById('loading-text'); + const statsModel = document.getElementById('stats-model'); + const statsTokens = document.getElementById('stats-tokens'); + const statsCost = document.getElementById('stats-cost'); + const statsTime = document.getElementById('stats-time'); + const autocompleteEl = document.getElementById('autocomplete'); + const applyModal = document.getElementById('apply-modal'); + const applyModalBody = document.getElementById('apply-modal-body'); + const applyConfirmBtn = document.getElementById('apply-confirm-btn'); + const applyPickBtn = document.getElementById('apply-pick-btn'); + const applyCancelBtn = document.getElementById('apply-cancel-btn'); + + // ── Tick elapsed time ──────────────────────────────────────────────────── + setInterval(() => { + if (!statsTime) return; + const elapsed = Math.floor((Date.now() - startTime) / 1000); + statsTime.textContent = elapsed < 60 + ? `${elapsed}s` + : `${Math.floor(elapsed/60)}m${elapsed%60}s`; + }, 1000); + + // ── Minimal Markdown → HTML renderer ───────────────────────────────────── + function escapeHtml(str) { + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + } + + function renderMarkdown(text) { + if (!text) return ''; + + // Collect fenced code blocks to prevent inner processing + const codeBlocks = []; + let md = text.replace(/```([\w+-]*)\n?([\s\S]*?)```/g, (_, lang, code) => { + const idx = codeBlocks.length; + codeBlocks.push({ lang: lang.trim(), code }); + return `\x00CODE${idx}\x00`; + }); + + // Inline code + const inlineCode = []; + md = md.replace(/`([^`]+)`/g, (_, code) => { + const idx = inlineCode.length; + inlineCode.push(code); + return `\x00INLINE${idx}\x00`; + }); + + // Escape HTML in the rest + md = escapeHtml(md); + + // Headers + md = md.replace(/^(#{1,6})\s+(.+)$/gm, (_, hashes, content) => { + const level = hashes.length; + return `${content}`; + }); + + // Bold + italic + md = md.replace(/\*\*\*(.+?)\*\*\*/g, '$1'); + md = md.replace(/\*\*(.+?)\*\*/g, '$1'); + md = md.replace(/\*(.+?)\*/g, '$1'); + md = md.replace(/__(.+?)__/g, '$1'); + md = md.replace(/_(.+?)_/g, '$1'); + + // Strikethrough + md = md.replace(/~~(.+?)~~/g, '$1'); + + // Links + md = md.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1'); + + // Horizontal rules + md = md.replace(/^(-{3,}|\*{3,}|_{3,})$/gm, '
'); + + // Blockquotes (simple, single-level) + md = md.replace(/^>\s?(.*)$/gm, '
$1
'); + + // Unordered lists (simple) + md = md.replace(/^[\*\-]\s+(.+)$/gm, '
  • $1
  • '); + md = md.replace(/(
  • [\s\S]*?<\/li>)+/g, (m) => `
      ${m}
    `); + + // Ordered lists + md = md.replace(/^\d+\.\s+(.+)$/gm, '
  • $1
  • '); + + // Tables + md = md.replace(/^\|(.+)\|\s*\n\|[-| :]+\|\s*\n((?:\|.+\|\s*\n)*)/gm, (_, header, rows) => { + const th = header.split('|').map(c => `${c.trim()}`).join(''); + const trs = rows.trim().split('\n').map(row => { + const tds = row.slice(1, -1).split('|').map(c => `${c.trim()}`).join(''); + return `${tds}`; + }).join(''); + return `${th}${trs}
    `; + }); + + // Paragraphs: wrap consecutive non-empty lines + md = md.replace(/\n\n+/g, '\n\n'); + const paragraphs = md.split('\n\n').map(chunk => { + chunk = chunk.trim(); + if (!chunk) return ''; + if (/^<(h\d|ul|ol|table|blockquote|hr)/.test(chunk)) return chunk; + return `

    ${chunk.replace(/\n/g, '
    ')}

    `; + }); + md = paragraphs.join('\n'); + + // Restore inline code + md = md.replace(/\x00INLINE(\d+)\x00/g, (_, i) => { + return `${escapeHtml(inlineCode[+i])}`; + }); + + // Restore code blocks — rendered as interactive elements + md = md.replace(/\x00CODE(\d+)\x00/g, (_, i) => { + const { lang, code } = codeBlocks[+i]; + return buildCodeBlockHtml(code, lang); + }); + + return md; + } + + // ── Syntax Highlighter ──────────────────────────────────────────────────── + + const keywords = { + js: ['const','let','var','function','return','if','else','for','while','do','break','continue', + 'switch','case','default','class','extends','new','this','super','import','export','from', + 'async','await','try','catch','finally','throw','typeof','instanceof','in','of','delete', + 'void','yield','static','get','set','null','undefined','true','false'], + ts: ['const','let','var','function','return','if','else','for','while','do','break','continue', + 'switch','case','default','class','extends','new','this','super','import','export','from', + 'async','await','try','catch','finally','throw','typeof','instanceof','in','of','delete', + 'void','yield','static','get','set','null','undefined','true','false', + 'interface','type','enum','namespace','declare','abstract','implements','readonly', + 'public','private','protected','as','keyof','infer','never','any','string','number','boolean'], + py: ['def','class','return','if','elif','else','for','while','break','continue','pass','import', + 'from','as','try','except','finally','raise','with','lambda','yield','async','await', + 'True','False','None','and','or','not','in','is','del','global','nonlocal','print'], + go: ['func','var','const','type','struct','interface','map','chan','package','import','return', + 'if','else','for','switch','case','default','break','continue','go','defer','select', + 'nil','true','false','string','int','float64','bool','error'], + rust: ['fn','let','mut','const','struct','enum','impl','trait','mod','use','pub','crate','super', + 'self','return','if','else','for','while','loop','match','break','continue','async','await', + 'true','false','None','Some','Ok','Err'], + java: ['class','interface','extends','implements','new','return','if','else','for','while','do', + 'switch','case','default','break','continue','try','catch','finally','throw','throws', + 'public','private','protected','static','final','abstract','import','package', + 'null','true','false','void','int','long','double','float','boolean','String'], + sh: ['if','then','else','elif','fi','for','do','done','while','case','esac','function', + 'return','exit','echo','export','local','readonly','shift','source', + 'true','false','null'], + }; + + function highlightCode(code, lang) { + const l = (lang || '').toLowerCase().replace(/[^a-z0-9#+-]/g, ''); + + // Map aliases + const langMap = { + javascript: 'js', jsx: 'js', mjs: 'js', cjs: 'js', + typescript: 'ts', tsx: 'ts', + python: 'py', py3: 'py', + golang: 'go', + shell: 'sh', bash: 'sh', zsh: 'sh', cmd: 'sh', + java: 'java', + rust: 'rust', rs: 'rust', + }; + const normalLang = langMap[l] || l; + + const kws = keywords[normalLang] || keywords.js; + const kwSet = new Set(kws); + + // For JSON, use a simple formatter + if (normalLang === 'json') return highlightJson(code); + + let result = ''; + let i = 0; + const len = code.length; + + while (i < len) { + // Single-line comment + if ((normalLang === 'js' || normalLang === 'ts' || normalLang === 'go' || + normalLang === 'java' || normalLang === 'rust') && + code[i] === '/' && code[i+1] === '/') { + const end = code.indexOf('\n', i); + const comment = end === -1 ? code.slice(i) : code.slice(i, end); + result += `${escapeHtml(comment)}`; + i += comment.length; + continue; + } + // Python/Bash comment + if ((normalLang === 'py' || normalLang === 'sh') && code[i] === '#') { + const end = code.indexOf('\n', i); + const comment = end === -1 ? code.slice(i) : code.slice(i, end); + result += `${escapeHtml(comment)}`; + i += comment.length; + continue; + } + // Block comment + if ((normalLang === 'js' || normalLang === 'ts' || normalLang === 'go' || + normalLang === 'java' || normalLang === 'rust') && + code[i] === '/' && code[i+1] === '*') { + const end = code.indexOf('*/', i + 2); + const comment = end === -1 ? code.slice(i) : code.slice(i, end + 2); + result += `${escapeHtml(comment)}`; + i += comment.length; + continue; + } + // String (double quote) + if (code[i] === '"') { + let j = i + 1; + while (j < len && !(code[j] === '"' && code[j-1] !== '\\')) j++; + const str = code.slice(i, j + 1); + result += `${escapeHtml(str)}`; + i = j + 1; + continue; + } + // String (single quote) + if (code[i] === "'") { + let j = i + 1; + while (j < len && !(code[j] === "'" && code[j-1] !== '\\')) j++; + const str = code.slice(i, j + 1); + result += `${escapeHtml(str)}`; + i = j + 1; + continue; + } + // Template literal + if (code[i] === '`' && (normalLang === 'js' || normalLang === 'ts')) { + let j = i + 1; + while (j < len && !(code[j] === '`' && code[j-1] !== '\\')) j++; + const str = code.slice(i, j + 1); + result += `${escapeHtml(str)}`; + i = j + 1; + continue; + } + // Number + if (/\d/.test(code[i]) && (i === 0 || /\W/.test(code[i-1]))) { + let j = i; + while (j < len && /[\d._xXbBoO]/.test(code[j])) j++; + result += `${escapeHtml(code.slice(i, j))}`; + i = j; + continue; + } + // Identifier or keyword + if (/[a-zA-Z_$]/.test(code[i])) { + let j = i; + while (j < len && /[\w$]/.test(code[j])) j++; + const word = code.slice(i, j); + if (kwSet.has(word)) { + result += `${escapeHtml(word)}`; + } else if (/^[A-Z]/.test(word)) { + result += `${escapeHtml(word)}`; + } else if (code[j] === '(') { + result += `${escapeHtml(word)}`; + } else { + result += `${escapeHtml(word)}`; + } + i = j; + continue; + } + // Operator + if (/[=>${escapeHtml(code[i])}`; + i++; + continue; + } + // Everything else + result += escapeHtml(code[i]); + i++; + } + return result; + } + + function highlightJson(code) { + return escapeHtml(code).replace( + /("(?:\\.|[^"\\])*")\s*:|("(?:\\.|[^"\\])*")|(true|false|null)|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g, + (m, key, str, bool, num) => { + if (key) return `${key}:`; + if (str) return `${str}`; + if (bool) return `${bool}`; + if (num) return `${num}`; + return m; + } + ); + } + + // ── Code block HTML builder ─────────────────────────────────────────────── + let codeBlockIdCounter = 0; + // Store code by ID to avoid large data attributes and XSS risks + const codeStore = new Map(); + + function buildCodeBlockHtml(code, lang) { + const id = `cb-${++codeBlockIdCounter}`; + const highlighted = highlightCode(code, lang); + const displayLang = lang || 'code'; + // Store code in JS Map, not in DOM attribute + codeStore.set(id, { code, language: lang || '' }); + return `
    +
    + ${escapeHtml(displayLang)} +
    + + +
    +
    +
    ${highlighted}
    +
    `; + } + + // ── Exposed to onclick handlers ────────────────────────────────────────── + window.copyCode = function (id) { + const entry = codeStore.get(id); + if (!entry) return; + vscode.postMessage({ type: 'copyToClipboard', text: entry.code }); + const el = document.getElementById(id); + const btn = el && el.querySelector('.copy-btn'); + if (btn) { + btn.textContent = 'Copied!'; + setTimeout(() => { btn.textContent = 'Copy'; }, 1500); + } + }; + + window.applyCode = function (id) { + const entry = codeStore.get(id); + if (!entry) return; + pendingApply = { code: entry.code, language: entry.language }; + showApplyModal(entry.code); + }; + + window.toggleToolCard = function (id) { + const el = document.getElementById(id); + if (el) el.classList.toggle('expanded'); + }; + + window.toggleThinking = function (id) { + const el = document.getElementById(id); + if (el) el.classList.toggle('expanded'); + }; + + function decodeHtmlEntities(str) { + // Manually reverse only the escapes produced by escapeHtml() + return str + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/&/g, '&'); + } + + // ── Apply Modal ─────────────────────────────────────────────────────────── + function showApplyModal(code) { + const preview = code.length > 2000 ? code.slice(0, 2000) + '\n…' : code; + applyModalBody.innerHTML = buildCodeBlockHtml(preview, pendingApply.language); + applyModal.classList.add('visible'); + } + + if (applyCancelBtn) { + applyCancelBtn.addEventListener('click', () => { + applyModal.classList.remove('visible'); + pendingApply = null; + }); + } + + if (applyConfirmBtn) { + applyConfirmBtn.addEventListener('click', () => { + if (!pendingApply) return; + vscode.postMessage({ + type: 'applyCode', + code: pendingApply.code, + language: pendingApply.language, + }); + applyModal.classList.remove('visible'); + pendingApply = null; + }); + } + + if (applyPickBtn) { + applyPickBtn.addEventListener('click', () => { + if (!pendingApply) return; + vscode.postMessage({ + type: 'applyCodeToFile', + code: pendingApply.code, + language: pendingApply.language, + }); + applyModal.classList.remove('visible'); + pendingApply = null; + }); + } + + // ── Message rendering ───────────────────────────────────────────────────── + function hideWelcome() { + if (welcomeEl && !welcomeEl.classList.contains('hidden')) { + welcomeEl.classList.add('hidden'); + } + } + + function scrollToBottom() { + requestAnimationFrame(() => { + messagesEl.scrollTop = messagesEl.scrollHeight; + }); + } + + function addUserMessage(text) { + hideWelcome(); + currentStreamMsg = null; + const div = document.createElement('div'); + div.className = 'msg msg-user'; + div.innerHTML = ` +
    You
    +
    ${escapeHtml(text)}
    + `; + messagesEl.appendChild(div); + scrollToBottom(); + } + + function getOrCreateAssistantMessage() { + if (currentStreamMsg) return currentStreamMsg; + hideWelcome(); + const div = document.createElement('div'); + div.className = 'msg msg-assistant'; + div.innerHTML = ` +
    +
    + Claude +
    +
    + `; + messagesEl.appendChild(div); + currentStreamMsg = div.querySelector('.msg-content'); + scrollToBottom(); + return currentStreamMsg; + } + + function appendStreamText(text) { + const el = getOrCreateAssistantMessage(); + // Accumulate raw text on element, re-render markdown periodically + el._rawText = (el._rawText || '') + text; + // Throttle rendering to avoid layout thrashing + if (!el._renderPending) { + el._renderPending = true; + requestAnimationFrame(() => { + el._renderPending = false; + if (el._rawText) { + el.innerHTML = renderMarkdown(el._rawText); + el.classList.add('streaming-cursor'); + } + scrollToBottom(); + }); + } + } + + function finalizeAssistantMessage(content) { + if (currentStreamMsg) { + const raw = currentStreamMsg._rawText || content || ''; + currentStreamMsg.innerHTML = raw ? renderMarkdown(raw) : ''; + currentStreamMsg.classList.remove('streaming-cursor'); + currentStreamMsg._rawText = ''; + currentStreamMsg = null; + } else if (content) { + hideWelcome(); + const div = document.createElement('div'); + div.className = 'msg msg-assistant'; + div.innerHTML = ` +
    +
    + Claude +
    +
    ${renderMarkdown(content)}
    + `; + messagesEl.appendChild(div); + } + scrollToBottom(); + } + + let toolCardCounter = 0; + + function addToolCard(toolName) { + hideWelcome(); + const id = `tool-${++toolCardCounter}`; + + // Build card using DOM API so toolName is safely set via textContent + const msgDiv = document.createElement('div'); + msgDiv.className = 'msg'; + + const card = document.createElement('div'); + card.className = 'tool-card'; + card.id = id; + + const header = document.createElement('div'); + header.className = 'tool-card-header'; + header.addEventListener('click', () => card.classList.toggle('expanded')); + + const iconSpan = document.createElement('span'); + iconSpan.className = 'tool-icon'; + iconSpan.textContent = '⚙'; + + const nameSpan = document.createElement('span'); + nameSpan.className = 'tool-name'; + nameSpan.textContent = toolName; // safe — textContent, not innerHTML + + const statusSpan = document.createElement('span'); + statusSpan.className = 'tool-status'; + const spinnerSpan = document.createElement('span'); + spinnerSpan.className = 'tool-spinner'; + spinnerSpan.textContent = '⟳'; + statusSpan.appendChild(spinnerSpan); + statusSpan.appendChild(document.createTextNode(' running…')); + + const chevron = document.createElement('span'); + chevron.className = 'tool-chevron'; + chevron.textContent = '▶'; + + header.appendChild(iconSpan); + header.appendChild(nameSpan); + header.appendChild(statusSpan); + header.appendChild(chevron); + + const body = document.createElement('div'); + body.className = 'tool-card-body'; + + const resultDiv = document.createElement('div'); + resultDiv.className = 'tool-result'; + resultDiv.id = `${id}-result`; + const em = document.createElement('em'); + em.textContent = 'Waiting for result…'; + resultDiv.appendChild(em); + body.appendChild(resultDiv); + + card.appendChild(header); + card.appendChild(body); + msgDiv.appendChild(card); + messagesEl.appendChild(msgDiv); + + activeToolCards[toolName] = id; + scrollToBottom(); + return id; + } + + function updateToolCard(toolName, result) { + const id = activeToolCards[toolName]; + if (!id) return; + const card = document.getElementById(id); + if (!card) return; + const statusEl = card.querySelector('.tool-status'); + if (statusEl) { + statusEl.textContent = ''; + const doneSpan = document.createElement('span'); + doneSpan.style.color = 'var(--success)'; + doneSpan.textContent = '✓ done'; + statusEl.appendChild(doneSpan); + } + const resultEl = document.getElementById(`${id}-result`); + if (resultEl) { + const preview = result && result.length > 800 + ? result.slice(0, 800) + '\n…' + : (result || ''); + resultEl.textContent = preview; // safe — textContent only + } + delete activeToolCards[toolName]; + } + + let thinkingCounter = 0; + + function addThinkingBlock(text) { + hideWelcome(); + const id = `think-${++thinkingCounter}`; + const div = document.createElement('div'); + div.className = 'msg'; + div.innerHTML = ` +
    +
    + 💭 + Extended thinking + click to expand +
    +
    ${escapeHtml(text || '')}
    +
    + `; + messagesEl.appendChild(div); + scrollToBottom(); + } + + function addSystemMessage(text) { + hideWelcome(); + const div = document.createElement('div'); + div.className = 'msg msg-system'; + div.innerHTML = `
    ${escapeHtml(text)}
    `; + messagesEl.appendChild(div); + scrollToBottom(); + } + + function addErrorMessage(text) { + hideWelcome(); + currentStreamMsg = null; + const div = document.createElement('div'); + div.className = 'msg msg-error'; + div.innerHTML = `
    ⚠ ${escapeHtml(text)}
    `; + messagesEl.appendChild(div); + scrollToBottom(); + } + + // ── Handle messages from extension ──────────────────────────────────────── + window.addEventListener('message', (event) => { + const msg = event.data; + switch (msg.type) { + case 'stream_event': + appendStreamText(msg.text || ''); + break; + + case 'assistant': + if (msg.content && !msg._streamed) { + finalizeAssistantMessage(msg.content); + } else { + finalizeAssistantMessage(null); + } + break; + + case 'thinking': + addThinkingBlock(msg.text); + break; + + case 'tool_progress': + addToolCard(msg.tool); + setLoading(true, `Running ${msg.tool}…`); + break; + + case 'result': + updateToolCard(msg.tool, typeof msg.result === 'string' ? msg.result : JSON.stringify(msg.result, null, 2)); + break; + + case 'compaction': + addSystemMessage(`⟳ Context compacted (pass ${msg.count})`); + break; + + case 'hookPermissionResult': + if (!msg.allowed) { + addSystemMessage(`⛔ Tool blocked by hook: ${msg.tool}`); + } + break; + + case 'error': + finalizeAssistantMessage(null); + addErrorMessage(msg.message); + setLoading(false); + setSending(false); + break; + + case 'stop': + finalizeAssistantMessage(null); + setLoading(false); + setSending(false); + break; + + case 'tokenUpdate': + tokenStats = msg.tokens || tokenStats; + costTotal = msg.cost || costTotal; + updateStats(); + break; + + case 'modelChanged': + currentModel = msg.model || currentModel; + if (modelSelect) modelSelect.value = msg.model || ''; + updateStats(); + break; + + case 'sessionCleared': + messagesEl.innerHTML = ''; + if (welcomeEl) welcomeEl.classList.remove('hidden'); + currentStreamMsg = null; + activeToolCards = {}; + tokenStats = { input: 0, output: 0 }; + costTotal = 0; + startTime = Date.now(); + updateStats(); + break; + + case 'fileContent': + // File was added to context + addContextFile(msg.name, msg.path); + break; + + case 'initialized': + currentModel = msg.model || 'claude-sonnet-4-6'; + if (modelSelect && msg.model) modelSelect.value = msg.model; + if (modeSelect && msg.mode) modeSelect.value = msg.mode; + updateStats(); + break; + + default: + break; + } + }); + + // ── Loading / sending state ─────────────────────────────────────────────── + function setLoading(on, text) { + isLoading = on; + if (loadingEl) loadingEl.classList.toggle('visible', on); + if (loadingText && text) loadingText.textContent = text; + else if (loadingText && !on) loadingText.textContent = 'Thinking…'; + } + + function setSending(on) { + if (sendBtn) sendBtn.disabled = on; + if (stopBtn) stopBtn.classList.toggle('visible', on); + if (!on) setLoading(false); + } + + // ── Stats bar ───────────────────────────────────────────────────────────── + function updateStats() { + if (statsModel) statsModel.textContent = currentModel || '—'; + if (statsTokens) { + const total = (tokenStats.input || 0) + (tokenStats.output || 0); + statsTokens.textContent = total >= 1000 ? `${(total/1000).toFixed(1)}K` : String(total); + } + if (statsCost) { + statsCost.textContent = costTotal < 0.01 + ? `$${costTotal.toFixed(4)}` + : `$${costTotal.toFixed(3)}`; + } + } + + // ── Context files ───────────────────────────────────────────────────────── + function addContextFile(name, filePath) { + // Avoid duplicates + if (contextFiles.find(f => f.path === filePath)) return; + contextFiles.push({ name, path: filePath }); + renderContextFiles(); + } + + function removeContextFile(filePath) { + contextFiles = contextFiles.filter(f => f.path !== filePath); + renderContextFiles(); + vscode.postMessage({ type: 'removeContextFile', path: filePath }); + } + + function renderContextFiles() { + if (!contextFilesEl) return; + contextFilesEl.innerHTML = ''; + for (const f of contextFiles) { + const chip = document.createElement('div'); + chip.className = 'context-chip'; + + const nameSpan = document.createElement('span'); + nameSpan.textContent = '📄 ' + f.name; // safe — textContent + + const removeBtn = document.createElement('button'); + removeBtn.textContent = '×'; + // Capture path via closure; no attribute injection + removeBtn.addEventListener('click', () => removeContextFile(f.path)); + + chip.appendChild(nameSpan); + chip.appendChild(removeBtn); + contextFilesEl.appendChild(chip); + } + contextFilesEl.style.display = contextFiles.length ? 'flex' : 'none'; + } + + // No longer needed as a global since we use closures above + // window._removeCtx kept as no-op for any residual references + window._removeCtx = removeContextFile; + + // ── Input handling ──────────────────────────────────────────────────────── + if (inputEl) { + inputEl.addEventListener('input', () => { + // Auto-resize + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + + // @mention autocomplete + const val = inputEl.value; + const cursorPos = inputEl.selectionStart; + const before = val.slice(0, cursorPos); + const atMatch = before.match(/@([\w./\\-]*)$/); + if (atMatch) { + const query = atMatch[1]; + showFileAutocomplete(query); + } else { + hideAutocomplete(); + } + }); + + inputEl.addEventListener('keydown', (e) => { + // Submit on Enter (not Shift+Enter) + if (e.key === 'Enter' && !e.shiftKey && !autocompleteEl.classList.contains('visible')) { + e.preventDefault(); + submitMessage(); + return; + } + // Autocomplete navigation + if (autocompleteEl.classList.contains('visible')) { + if (e.key === 'ArrowDown') { e.preventDefault(); moveAcSelection(1); return; } + if (e.key === 'ArrowUp') { e.preventDefault(); moveAcSelection(-1); return; } + if (e.key === 'Enter' || e.key === 'Tab') { + e.preventDefault(); + selectAcItem(); + return; + } + if (e.key === 'Escape') { hideAutocomplete(); return; } + } + // Escape cancels loading + if (e.key === 'Escape' && isLoading) { + vscode.postMessage({ type: 'cancel' }); + setSending(false); + } + }); + } + + if (sendBtn) { + sendBtn.addEventListener('click', submitMessage); + } + + if (stopBtn) { + stopBtn.addEventListener('click', () => { + vscode.postMessage({ type: 'cancel' }); + setSending(false); + }); + } + + function submitMessage() { + if (!inputEl) return; + const text = inputEl.value.trim(); + if (!text || isLoading) return; + + // Extract @file references from text before sending + const fileRefs = []; + text.replace(/@([\w./\\-]+)/g, (_, p) => fileRefs.push(p)); + + addUserMessage(text); + inputEl.value = ''; + inputEl.style.height = 'auto'; + hideAutocomplete(); + setSending(true); + setLoading(true, 'Thinking…'); + + vscode.postMessage({ + type: 'send', + message: text, + contextFiles: contextFiles.map(f => f.path), + fileRefs, + }); + + // Clear context files after send + contextFiles = []; + renderContextFiles(); + } + + // ── File autocomplete ───────────────────────────────────────────────────── + let acItems = []; + let acSelectedIdx = -1; + + function showFileAutocomplete(query) { + vscode.postMessage({ type: 'fileSearch', query }); + } + + function renderAutocomplete(files) { + if (!files || files.length === 0) { hideAutocomplete(); return; } + acItems = files; + acSelectedIdx = 0; + autocompleteEl.innerHTML = ''; + for (let i = 0; i < files.length; i++) { + const f = files[i]; + const item = document.createElement('div'); + item.className = 'ac-item' + (i === 0 ? ' selected' : ''); + item.innerHTML = ` + 📄 + ${escapeHtml(f.name)} + ${escapeHtml(f.relativePath || '')} + `; + item.addEventListener('click', () => { + acSelectedIdx = i; + selectAcItem(); + }); + autocompleteEl.appendChild(item); + } + autocompleteEl.classList.add('visible'); + } + + function hideAutocomplete() { + autocompleteEl.classList.remove('visible'); + acItems = []; + acSelectedIdx = -1; + } + + function moveAcSelection(dir) { + const items = autocompleteEl.querySelectorAll('.ac-item'); + if (items.length === 0) return; + items[acSelectedIdx]?.classList.remove('selected'); + acSelectedIdx = (acSelectedIdx + dir + items.length) % items.length; + items[acSelectedIdx]?.classList.add('selected'); + } + + function selectAcItem() { + if (acSelectedIdx < 0 || acSelectedIdx >= acItems.length) return; + const file = acItems[acSelectedIdx]; + // Replace the @query in input + const val = inputEl.value; + const cursorPos = inputEl.selectionStart; + const before = val.slice(0, cursorPos); + const replaced = before.replace(/@[\w./\\-]*$/, '') + `@${file.name} `; + inputEl.value = replaced + val.slice(cursorPos); + inputEl.setSelectionRange(replaced.length, replaced.length); + hideAutocomplete(); + // Add to context + vscode.postMessage({ type: 'addContextFile', path: file.path, name: file.name }); + } + + // ── Toolbar buttons ─────────────────────────────────────────────────────── + if (newChatBtn) { + newChatBtn.addEventListener('click', () => { + vscode.postMessage({ type: 'clear' }); + }); + } + + if (addFileBtn) { + addFileBtn.addEventListener('click', () => { + vscode.postMessage({ type: 'pickFile' }); + }); + } + + if (modelSelect) { + modelSelect.addEventListener('change', () => { + vscode.postMessage({ type: 'model', model: modelSelect.value }); + currentModel = modelSelect.value; + updateStats(); + }); + } + + if (modeSelect) { + modeSelect.addEventListener('change', () => { + vscode.postMessage({ type: 'mode', mode: modeSelect.value }); + }); + } + + // ── Message from extension: fileSearchResults ───────────────────────────── + window.addEventListener('message', (event) => { + if (event.data.type === 'fileSearchResults') { + renderAutocomplete(event.data.files || []); + } + }); + + // ── Signal ready ────────────────────────────────────────────────────────── + vscode.postMessage({ type: 'ready' }); + +}()); diff --git a/vscode-extension/media/icon.svg b/vscode-extension/media/icon.svg new file mode 100644 index 0000000..af03488 --- /dev/null +++ b/vscode-extension/media/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/vscode-extension/package.json b/vscode-extension/package.json index b35a65c..ec90658 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -1,8 +1,8 @@ { "name": "open-claude-code", "displayName": "Open Claude Code", - "description": "AI coding assistant powered by Claude — chat inside VSCode using the Open Claude Code agent loop", - "version": "1.0.0", + "description": "AI coding assistant powered by Claude — Cursor-style chat panel with file context, code apply, tool visualization and more", + "version": "1.1.0", "publisher": "open-claude-code", "engines": { "vscode": "^1.90.0" @@ -16,13 +16,33 @@ "ai", "chat", "coding assistant", - "anthropic" + "anthropic", + "cursor" ], "activationEvents": [ "onStartupFinished" ], "main": "./extension.js", "contributes": { + "viewsContainers": { + "activitybar": [ + { + "id": "claude-code-sidebar", + "title": "Claude Code", + "icon": "media/icon.svg" + } + ] + }, + "views": { + "claude-code-sidebar": [ + { + "type": "webview", + "id": "claudeCode.chatView", + "name": "Chat", + "retainContextWhenHidden": true + } + ] + }, "chatParticipants": [ { "id": "open-claude-code.claude", @@ -54,6 +74,14 @@ { "command": "openClaudeCode.showStatus", "title": "Open Claude Code: Show Status" + }, + { + "command": "openClaudeCode.openChat", + "title": "Open Claude Code: Open Chat Panel" + }, + { + "command": "openClaudeCode.applyCode", + "title": "Open Claude Code: Apply Code to Active File" } ], "configuration": { @@ -102,6 +130,11 @@ "type": "boolean", "default": true, "description": "Show tool progress and results inline in chat" + }, + "openClaudeCode.enableWebviewPanel": { + "type": "boolean", + "default": true, + "description": "Show the Cursor-style sidebar chat panel (requires reload)" } } } From 508334ab05ed2e85f2ee79de747daa9a113ee831 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 17:45:07 +0000 Subject: [PATCH 04/79] fix: remove all inline onclick attrs, use event delegation and DOM API throughout Agent-Logs-Url: https://github.com/codomium/CODE/sessions/cc2f5ec8-96d3-4e56-8ba7-17095a91c778 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 8 +-- vscode-extension/media/chat.html | 2 +- vscode-extension/media/chat.js | 116 ++++++++++++++++++------------- 3 files changed, 69 insertions(+), 57 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 0481466..fb04ea5 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -189,9 +189,7 @@ async function getBridge() { env.CLAUDE_CODE_PERMISSION_MODE = permissionMode; env.CLAUDE_CODE_MAX_TURNS = String(config.get('maxTurns') || 20); - const cwd = (vscode.workspace.workspaceFolders && - vscode.workspace.workspaceFolders[0] && - vscode.workspace.workspaceFolders[0].uri.fsPath) || process.cwd(); + const cwd = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || process.cwd(); bridge = new AgentBridge(cwd, env); bridge.start(); @@ -329,9 +327,7 @@ class ClaudeCodeViewProvider { // Inject context file contents const allPaths = new Set(contextFilePaths || []); if (fileRefs && fileRefs.length > 0) { - const ws = vscode.workspace.workspaceFolders && - vscode.workspace.workspaceFolders[0] && - vscode.workspace.workspaceFolders[0].uri.fsPath; + const ws = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; if (ws) { for (const ref of fileRefs) { const abs = path.resolve(ws, ref); diff --git a/vscode-extension/media/chat.html b/vscode-extension/media/chat.html index dae95b9..d89d1ee 100644 --- a/vscode-extension/media/chat.html +++ b/vscode-extension/media/chat.html @@ -115,7 +115,7 @@

    Claude Code

    Apply code to file - +
    + + +
    @@ -234,6 +254,12 @@

    Claude Code

    0s
    + + +
    diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 3ef52b3..6d6dacc 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -21,7 +21,7 @@ // ── State ──────────────────────────────────────────────────────────────── let isLoading = false; let currentStreamMsg = null; // DOM element being streamed into - let contextFiles = []; // { name, path } + let contextFiles = []; // { name, path, pinned?, isImage?, isCodebase? } let tokenStats = { input: 0, output: 0 }; let costTotal = 0; let startTime = Date.now(); @@ -29,6 +29,9 @@ let pendingApply = null; // { code, language } let activeToolCards = {}; // toolName -> dom element let sessionMessages = []; // tracked messages for history saving + let lastUserMessage = ''; // for ↑ recall and regenerate + let autoScroll = true; // auto-scroll while streaming + let pinnedFiles = []; // files pinned across sessions // ── DOM refs ───────────────────────────────────────────────────────────── const messagesEl = document.getElementById('messages'); @@ -65,12 +68,42 @@ const historyBackBtn = document.getElementById('history-back-btn'); const historyPanelTitle = document.getElementById('history-panel-title'); + const autoscrollBtn = document.getElementById('autoscroll-btn'); + const exportBtn = document.getElementById('export-btn'); + const searchBar = document.getElementById('search-bar'); + const searchInput = document.getElementById('search-input'); + const searchCount = document.getElementById('search-count'); + const searchPrevBtn = document.getElementById('search-prev'); + const searchNextBtn = document.getElementById('search-next'); + const searchCloseBtn = document.getElementById('search-close'); + const contextBarEl = document.getElementById('context-bar'); + const contextUsedEl = document.getElementById('context-used'); + const contextMaxEl = document.getElementById('context-max'); + const contextFillEl = document.getElementById('context-bar-fill'); + /** Models that support NVIDIA thinking mode toggle */ const THINKING_CAPABLE_MODELS = new Set([ 'moonshotai/kimi-k2.5', 'deepseek-ai/deepseek-r1', ]); + /** Approximate max context tokens per model */ + const MODEL_CONTEXT = { + 'claude-sonnet-4-6': 200000, + 'claude-opus-4-6': 200000, + 'claude-haiku-4-5': 200000, + 'gpt-4o': 128000, + 'gpt-4o-mini': 128000, + 'gemini-2.0-flash': 1000000, + 'moonshotai/kimi-k2.5': 128000, + 'deepseek-ai/deepseek-r1': 64000, + 'nvidia/llama-3.1-nemotron-70b-instruct': 128000, + 'meta/llama-3.1-405b-instruct': 128000, + 'meta/llama-3.3-70b-instruct': 128000, + 'mistralai/mistral-large-2-instruct': 128000, + 'mistralai/mixtral-8x22b-instruct-v0.1': 64000, + }; + // ── Tick elapsed time ──────────────────────────────────────────────────── setInterval(() => { if (!statsTime) return; @@ -382,7 +415,9 @@ const entry = codeStore.get(blockId); if (!entry) return; pendingApply = { code: entry.code, language: entry.language }; - showApplyModal(entry.code); + // Show preview immediately; diff will arrive when extension reads active file + showApplyModal(entry.code, null, null); + vscode.postMessage({ type: 'getActiveFileContent' }); } }); @@ -402,9 +437,67 @@ pendingApply = null; } - function showApplyModal(code) { - const preview = code.length > 2000 ? code.slice(0, 2000) + '\n…' : code; - applyModalBody.innerHTML = buildCodeBlockHtml(preview, pendingApply.language); + /** + * LCS-based line diff. Returns array of {type:'equal'|'add'|'remove', line}. + * Falls back to showing all new lines when files are too large. + */ + function computeDiff(aLines, bLines) { + if (aLines.length * bLines.length > 400000) { + return bLines.map(l => ({ type: 'add', line: l })); + } + const n = aLines.length, m = bLines.length; + const dp = Array.from({ length: n + 1 }, () => new Int32Array(m + 1)); + for (let i = 1; i <= n; i++) { + for (let j = 1; j <= m; j++) { + dp[i][j] = aLines[i - 1] === bLines[j - 1] + ? dp[i - 1][j - 1] + 1 + : Math.max(dp[i - 1][j], dp[i][j - 1]); + } + } + const result = []; + let i = n, j = m; + while (i > 0 || j > 0) { + if (i > 0 && j > 0 && aLines[i - 1] === bLines[j - 1]) { + result.unshift({ type: 'equal', line: aLines[i - 1] }); i--; j--; + } else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) { + result.unshift({ type: 'add', line: bLines[j - 1] }); j--; + } else { + result.unshift({ type: 'remove', line: aLines[i - 1] }); i--; + } + } + return result; + } + + function buildDiffView(diff) { + const container = document.createElement('div'); + container.className = 'diff-view'; + const pre = document.createElement('pre'); + for (const { type, line } of diff) { + const span = document.createElement('span'); + span.className = 'diff-line diff-' + type; + span.textContent = (type === 'add' ? '+ ' : type === 'remove' ? '- ' : ' ') + line; + pre.appendChild(span); + pre.appendChild(document.createTextNode('\n')); + } + container.appendChild(pre); + return container; + } + + function showApplyModal(newCode, oldContent, fileName) { + const titleEl = document.getElementById('apply-modal-title'); + if (titleEl) { + titleEl.textContent = (oldContent !== null && oldContent !== undefined) + ? `Review changes — ${fileName || 'active file'}` + : 'Apply code to file'; + } + applyModalBody.innerHTML = ''; + if (oldContent !== null && oldContent !== undefined) { + const diff = computeDiff(oldContent.split('\n'), newCode.split('\n')); + applyModalBody.appendChild(buildDiffView(diff)); + } else { + const preview = newCode.length > 2000 ? newCode.slice(0, 2000) + '\n…' : newCode; + applyModalBody.innerHTML = buildCodeBlockHtml(preview, pendingApply ? pendingApply.language : ''); + } applyModal.classList.add('visible'); } @@ -442,7 +535,7 @@ } // ── Copy button helper ──────────────────────────────────────────────────── - function addCopyButtonToMessage(msgDiv, rawText) { + function addCopyButtonToMessage(msgDiv, rawText, userPrompt) { const header = msgDiv.querySelector('.msg-header'); if (!header || header.querySelector('.msg-copy-btn')) return; const btn = document.createElement('button'); @@ -459,6 +552,18 @@ }, 1500); }); header.appendChild(btn); + + if (userPrompt) { + const regenBtn = document.createElement('button'); + regenBtn.className = 'msg-regen-btn'; + regenBtn.title = 'Regenerate response'; + regenBtn.textContent = '↺'; + regenBtn.addEventListener('click', () => { + if (isLoading) return; + regenerateFrom(msgDiv, userPrompt); + }); + header.appendChild(regenBtn); + } } // ── Message rendering ───────────────────────────────────────────────────── @@ -469,6 +574,7 @@ } function scrollToBottom() { + if (!autoScroll) return; requestAnimationFrame(() => { messagesEl.scrollTop = messagesEl.scrollHeight; }); @@ -477,13 +583,30 @@ function addUserMessage(text) { hideWelcome(); currentStreamMsg = null; + lastUserMessage = text; sessionMessages.push({ type: 'user', text }); + const div = document.createElement('div'); div.className = 'msg msg-user'; - div.innerHTML = ` -
    You
    -
    ${escapeHtml(text)}
    - `; + div._sessionIdx = sessionMessages.length - 1; + + const meta = document.createElement('div'); + meta.className = 'msg-meta'; + meta.appendChild(document.createTextNode('You')); + + const editBtn = document.createElement('button'); + editBtn.className = 'msg-edit-btn'; + editBtn.title = 'Edit message'; + editBtn.textContent = '✏'; + editBtn.addEventListener('click', () => editUserMessage(div, text)); + meta.appendChild(editBtn); + + const bubble = document.createElement('div'); + bubble.className = 'msg-bubble'; + bubble.textContent = text; // safe — textContent + + div.appendChild(meta); + div.appendChild(bubble); messagesEl.appendChild(div); scrollToBottom(); } @@ -493,6 +616,7 @@ hideWelcome(); const div = document.createElement('div'); div.className = 'msg msg-assistant'; + div._regenPrompt = lastUserMessage; // capture for regenerate div.innerHTML = `
    @@ -530,10 +654,10 @@ currentStreamMsg.innerHTML = raw ? renderMarkdown(raw) : ''; currentStreamMsg.classList.remove('streaming-cursor'); currentStreamMsg._rawText = ''; - // Add copy button + track in history + // Add copy + regenerate buttons + track in history if (raw) { const msgDiv = currentStreamMsg.closest('.msg-assistant'); - if (msgDiv) addCopyButtonToMessage(msgDiv, raw); + if (msgDiv) addCopyButtonToMessage(msgDiv, raw, msgDiv._regenPrompt); sessionMessages.push({ type: 'assistant', text: raw }); } currentStreamMsg = null; @@ -700,7 +824,213 @@ scrollToBottom(); } - // ── Handle messages from extension ──────────────────────────────────────── + // ── Edit user message ───────────────────────────────────────────────────── + function editUserMessage(msgDiv, originalText) { + if (isLoading) return; + const bubble = msgDiv.querySelector('.msg-bubble'); + if (!bubble) return; + + const ta = document.createElement('textarea'); + ta.className = 'msg-user-edit-area'; + ta.value = originalText; + ta.rows = 3; + + const actionsRow = document.createElement('div'); + actionsRow.className = 'msg-user-edit-actions'; + + const cancelBtn = document.createElement('button'); + cancelBtn.className = 'modal-btn'; + cancelBtn.textContent = 'Cancel'; + + const confirmBtn = document.createElement('button'); + confirmBtn.className = 'modal-btn primary'; + confirmBtn.textContent = '↵ Resend'; + + actionsRow.appendChild(cancelBtn); + actionsRow.appendChild(confirmBtn); + + bubble.replaceWith(ta); + msgDiv.appendChild(actionsRow); + ta.focus(); + ta.setSelectionRange(ta.value.length, ta.value.length); + + cancelBtn.addEventListener('click', () => { + ta.replaceWith(bubble); + actionsRow.remove(); + }); + confirmBtn.addEventListener('click', confirmEdit); + ta.addEventListener('keydown', (e) => { + if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); confirmEdit(); } + if (e.key === 'Escape') { ta.replaceWith(bubble); actionsRow.remove(); } + }); + + function confirmEdit() { + const newText = ta.value.trim(); + if (!newText) return; + + bubble.textContent = newText; + ta.replaceWith(bubble); + actionsRow.remove(); + msgDiv._originalText = newText; + // Update edit button closure + const eb = msgDiv.querySelector('.msg-edit-btn'); + if (eb) eb.onclick = null; + if (eb) eb.addEventListener('click', () => editUserMessage(msgDiv, newText)); + + // Remove all DOM messages after this one + let el = msgDiv.nextElementSibling; + while (el) { const nx = el.nextElementSibling; el.remove(); el = nx; } + + // Truncate sessionMessages to this user message (inclusive) + const idx = typeof msgDiv._sessionIdx === 'number' ? msgDiv._sessionIdx : -1; + if (idx >= 0) sessionMessages.splice(idx); + sessionMessages.push({ type: 'user', text: newText }); + msgDiv._sessionIdx = sessionMessages.length - 1; + + lastUserMessage = newText; + setSending(true); + setLoading(true, 'Thinking…'); + vscode.postMessage({ type: 'send', message: newText, contextFiles: [], fileRefs: [] }); + } + } + + // ── Regenerate response ─────────────────────────────────────────────────── + function regenerateFrom(assistantMsgDiv, userPrompt) { + // Remove this assistant message and everything after it from the DOM + let el = assistantMsgDiv; + while (el) { const nx = el.nextElementSibling; el.remove(); el = nx; } + + // Truncate sessionMessages: remove the last assistant entry(s) for this prompt + const lastUserIdx = [...sessionMessages].reduceRight((found, m, i) => + found === -1 && m.type === 'user' && m.text === userPrompt ? i : found, -1); + if (lastUserIdx >= 0) sessionMessages.splice(lastUserIdx + 1); + + lastUserMessage = userPrompt; + setSending(true); + setLoading(true, 'Thinking…'); + vscode.postMessage({ type: 'send', message: userPrompt, contextFiles: [], fileRefs: [] }); + } + + // ── @codebase chip ──────────────────────────────────────────────────────── + function addCodebaseContext() { + if (contextFiles.find(f => f.isCodebase)) return; + contextFiles.push({ name: '@codebase', path: '__codebase__', isCodebase: true }); + renderContextFiles(); + } + + // ── Image paste chip ────────────────────────────────────────────────────── + function addImageContext(name, dataUrl) { + if (!contextFilesEl) return; + contextFiles.push({ name, path: `__img__:${name}`, isImage: true, dataUrl }); + renderContextFiles(); + } + + // ── Toggle pin on a context file ───────────────────────────────────────── + function togglePinFile(file) { + file.pinned = !file.pinned; + if (file.pinned) { + if (!pinnedFiles.find(p => p.path === file.path)) + pinnedFiles.push({ name: file.name, path: file.path }); + vscode.postMessage({ type: 'pinFile', path: file.path }); + } else { + pinnedFiles = pinnedFiles.filter(p => p.path !== file.path); + vscode.postMessage({ type: 'unpinFile', path: file.path }); + } + renderContextFiles(); + } + + // ── Context window usage bar ────────────────────────────────────────────── + function updateContextBar() { + if (!contextBarEl || !contextUsedEl || !contextMaxEl || !contextFillEl) return; + const used = (tokenStats.input || 0) + (tokenStats.output || 0); + const max = MODEL_CONTEXT[currentModel] || 200000; + const pct = Math.min((used / max) * 100, 100); + contextUsedEl.textContent = used >= 1000 ? `${(used / 1000).toFixed(1)}k` : String(used); + contextMaxEl.textContent = `${(max / 1000).toFixed(0)}k`; + contextFillEl.style.width = pct + '%'; + contextFillEl.style.background = pct > 95 ? 'var(--error-text)' + : pct > 80 ? 'var(--warning)' + : 'var(--success)'; + contextBarEl.style.display = used > 0 ? '' : 'none'; + } + + // ── Conversation search ─────────────────────────────────────────────────── + let searchMatches = []; + let searchCurrentIdx = -1; + + function showSearchBar() { + if (!searchBar) return; + searchBar.style.display = ''; + if (searchInput) { searchInput.focus(); searchInput.select(); } + } + + function hideSearchBar() { + if (!searchBar) return; + searchBar.style.display = 'none'; + clearSearchHighlights(); + if (searchInput) searchInput.value = ''; + if (searchCount) searchCount.textContent = ''; + } + + function clearSearchHighlights() { + messagesEl.querySelectorAll('.search-match, .search-match-current').forEach(el => { + el.classList.remove('search-match', 'search-match-current'); + }); + searchMatches = []; + searchCurrentIdx = -1; + } + + function performSearch(query) { + clearSearchHighlights(); + if (!query || query.length < 2) { + if (searchCount) searchCount.textContent = ''; + return; + } + const lq = query.toLowerCase(); + messagesEl.querySelectorAll('.msg-user, .msg-assistant').forEach(el => { + if ((el.textContent || '').toLowerCase().includes(lq)) { + el.classList.add('search-match'); + searchMatches.push(el); + } + }); + if (searchMatches.length > 0) { + searchCurrentIdx = 0; + searchMatches[0].classList.add('search-match-current'); + searchMatches[0].scrollIntoView({ block: 'nearest', behavior: 'smooth' }); + } + if (searchCount) { + searchCount.textContent = searchMatches.length > 0 + ? `${searchCurrentIdx + 1}/${searchMatches.length}` + : 'No results'; + } + } + + function searchNav(dir) { + if (searchMatches.length === 0) return; + searchMatches[searchCurrentIdx]?.classList.remove('search-match-current'); + searchCurrentIdx = (searchCurrentIdx + dir + searchMatches.length) % searchMatches.length; + searchMatches[searchCurrentIdx].classList.add('search-match-current'); + searchMatches[searchCurrentIdx].scrollIntoView({ block: 'nearest', behavior: 'smooth' }); + if (searchCount) searchCount.textContent = `${searchCurrentIdx + 1}/${searchMatches.length}`; + } + + if (searchInput) { + searchInput.addEventListener('input', () => performSearch(searchInput.value.trim())); + searchInput.addEventListener('keydown', (e) => { + if (e.key === 'Enter') { e.preventDefault(); searchNav(e.shiftKey ? -1 : 1); } + if (e.key === 'Escape') hideSearchBar(); + }); + } + if (searchPrevBtn) searchPrevBtn.addEventListener('click', () => searchNav(-1)); + if (searchNextBtn) searchNextBtn.addEventListener('click', () => searchNav(1)); + if (searchCloseBtn) searchCloseBtn.addEventListener('click', hideSearchBar); + + document.addEventListener('keydown', (e) => { + if ((e.ctrlKey || e.metaKey) && e.key === 'f') { + e.preventDefault(); + showSearchBar(); + } + }); window.addEventListener('message', (event) => { const msg = event.data; switch (msg.type) { @@ -756,6 +1086,7 @@ tokenStats = msg.tokens || tokenStats; costTotal = msg.cost || costTotal; updateStats(); + updateContextBar(); break; case 'modelChanged': @@ -763,6 +1094,7 @@ if (modelSelect) modelSelect.value = msg.model || ''; syncThinkingToggleVisibility(currentModel); updateStats(); + updateContextBar(); break; case 'sessionCleared': @@ -774,7 +1106,11 @@ tokenStats = { input: 0, output: 0 }; costTotal = 0; startTime = Date.now(); + // Restore pinned files into context + contextFiles = pinnedFiles.map(f => ({ ...f, pinned: true })); + renderContextFiles(); updateStats(); + updateContextBar(); break; case 'historyData': @@ -786,10 +1122,36 @@ break; case 'fileContent': - // File was added to context addContextFile(msg.name, msg.path); break; + case 'activeFileContent': + // Arrives after user clicks "Apply to file…" + if (pendingApply && applyModal.classList.contains('visible')) { + showApplyModal(pendingApply.code, msg.content, msg.fileName); + } + break; + + case 'pinnedFiles': + pinnedFiles = (msg.files || []); + for (const f of pinnedFiles) { + addContextFile(f.name, f.path, true); + } + break; + + case 'inlineEditRequest': + if (inputEl && msg.selectedText) { + const ctx = msg.hasSelection + ? `Edit this code from \`${msg.fileName}\`:\n\`\`\`\n${msg.selectedText}\n\`\`\`\n\nInstruction: ` + : `Regarding \`${msg.fileName}\`: `; + inputEl.value = ctx; + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + inputEl.focus(); + inputEl.setSelectionRange(inputEl.value.length, inputEl.value.length); + } + break; + case 'initialized': currentModel = msg.model || 'claude-sonnet-4-6'; if (modelSelect && msg.model) modelSelect.value = msg.model; @@ -800,11 +1162,13 @@ } syncThinkingToggleVisibility(currentModel); updateStats(); + updateContextBar(); showWelcome(!!msg.hasApiKey); + // Load pinned files from settings + vscode.postMessage({ type: 'getPinnedFiles' }); break; case 'apiKeySet': - // Key was just saved — upgrade welcome screen without reload showWelcome(true); break; @@ -896,14 +1260,19 @@ } // ── Context files ───────────────────────────────────────────────────────── - function addContextFile(name, filePath) { - // Avoid duplicates + function addContextFile(name, filePath, pinned = false) { if (contextFiles.find(f => f.path === filePath)) return; - contextFiles.push({ name, path: filePath }); + contextFiles.push({ name, path: filePath, pinned }); renderContextFiles(); } function removeContextFile(filePath) { + const file = contextFiles.find(f => f.path === filePath); + if (file && file.pinned) { + // Unpin when removed + pinnedFiles = pinnedFiles.filter(p => p.path !== filePath); + vscode.postMessage({ type: 'unpinFile', path: filePath }); + } contextFiles = contextFiles.filter(f => f.path !== filePath); renderContextFiles(); vscode.postMessage({ type: 'removeContextFile', path: filePath }); @@ -914,27 +1283,40 @@ contextFilesEl.innerHTML = ''; for (const f of contextFiles) { const chip = document.createElement('div'); - chip.className = 'context-chip'; + chip.className = 'context-chip' + (f.pinned ? ' pinned' : ''); const nameSpan = document.createElement('span'); - nameSpan.textContent = '📄 ' + f.name; // safe — textContent + const icon = f.isImage ? '🖼 ' : f.isCodebase ? '' : (f.pinned ? '📌 ' : '📄 '); + nameSpan.textContent = icon + f.name; + + if (f.isImage && f.dataUrl) { + const img = document.createElement('img'); + img.src = f.dataUrl; + img.alt = f.name; + chip.appendChild(img); + } + + if (!f.isCodebase && !f.isImage) { + const pinBtn = document.createElement('button'); + pinBtn.className = 'pin-btn'; + pinBtn.title = f.pinned ? 'Unpin file' : 'Pin to all sessions'; + pinBtn.textContent = '📎'; + pinBtn.addEventListener('click', (e) => { e.stopPropagation(); togglePinFile(f); }); + chip.appendChild(nameSpan); + chip.appendChild(pinBtn); + } else { + chip.appendChild(nameSpan); + } const removeBtn = document.createElement('button'); removeBtn.textContent = '×'; - // Capture path via closure; no attribute injection removeBtn.addEventListener('click', () => removeContextFile(f.path)); - - chip.appendChild(nameSpan); chip.appendChild(removeBtn); contextFilesEl.appendChild(chip); } contextFilesEl.style.display = contextFiles.length ? 'flex' : 'none'; } - // No longer needed as a global since we use closures above - // window._removeCtx kept as no-op for any residual references - window._removeCtx = removeContextFile; - // ── Input handling ──────────────────────────────────────────────────────── if (inputEl) { inputEl.addEventListener('input', () => { @@ -942,14 +1324,31 @@ inputEl.style.height = 'auto'; inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; - // @mention autocomplete const val = inputEl.value; const cursorPos = inputEl.selectionStart; const before = val.slice(0, cursorPos); + + // @codebase special mention — replace with chip immediately + if (val.includes('@codebase')) { + inputEl.value = val.replace(/@codebase\b/g, '').trim(); + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + addCodebaseContext(); + hideAutocomplete(); + return; + } + + // Slash command autocomplete (when first char is /) + const slashMatch = val.match(/^(\/[\w]*)$/); + if (slashMatch) { + showSlashCommands(slashMatch[1].slice(1)); + return; + } + + // @mention autocomplete const atMatch = before.match(/@([\w./\\-]*)$/); if (atMatch) { - const query = atMatch[1]; - showFileAutocomplete(query); + showFileAutocomplete(atMatch[1]); } else { hideAutocomplete(); } @@ -973,12 +1372,63 @@ } if (e.key === 'Escape') { hideAutocomplete(); return; } } + // Up arrow in empty input → recall last message + if (e.key === 'ArrowUp' && !inputEl.value && !autocompleteEl.classList.contains('visible')) { + if (lastUserMessage) { + e.preventDefault(); + inputEl.value = lastUserMessage; + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + inputEl.setSelectionRange(inputEl.value.length, inputEl.value.length); + } + return; + } // Escape cancels loading if (e.key === 'Escape' && isLoading) { vscode.postMessage({ type: 'cancel' }); setSending(false); } }); + + // Image paste + inputEl.addEventListener('paste', (e) => { + const items = [...(e.clipboardData?.items || [])]; + const imgItem = items.find(it => it.type.startsWith('image/')); + if (!imgItem) return; + e.preventDefault(); + const file = imgItem.getAsFile(); + if (!file) return; + const reader = new FileReader(); + reader.onload = (ev) => addImageContext(file.name || 'screenshot.png', ev.target.result); + reader.readAsDataURL(file); + }); + } + + // ── Drag-and-drop files onto input ──────────────────────────────────────── + const inputWrapper = document.getElementById('input-wrapper'); + if (inputWrapper) { + const CODE_EXTS = new Set([ + 'js','ts','jsx','tsx','py','go','rs','java','cpp','c','h','cs','rb', + 'php','swift','kt','scala','sh','bash','zsh','md','json','yaml','yml', + 'toml','html','css','scss','less','vue','svelte','sql','graphql','tf','txt', + ]); + inputWrapper.addEventListener('dragover', (e) => { + e.preventDefault(); + inputWrapper.classList.add('drag-over'); + }); + inputWrapper.addEventListener('dragleave', () => inputWrapper.classList.remove('drag-over')); + inputWrapper.addEventListener('drop', (e) => { + e.preventDefault(); + inputWrapper.classList.remove('drag-over'); + const files = [...(e.dataTransfer?.files || [])]; + for (const file of files) { + const ext = (file.name.split('.').pop() || '').toLowerCase(); + if (CODE_EXTS.has(ext)) { + const filePath = file.path || file.name; + vscode.postMessage({ type: 'addContextFile', path: filePath, name: file.name }); + } + } + }); } if (sendBtn) { @@ -994,29 +1444,34 @@ function submitMessage() { if (!inputEl) return; - const text = inputEl.value.trim(); - if (!text || isLoading) return; + const rawText = inputEl.value.trim(); + if (!rawText || isLoading) return; // Extract @file references from text before sending const fileRefs = []; - text.replace(/@([\w./\\-]+)/g, (_, p) => fileRefs.push(p)); + rawText.replace(/@([\w./\\-]+)/g, (_, p) => fileRefs.push(p)); - addUserMessage(text); + addUserMessage(rawText); inputEl.value = ''; inputEl.style.height = 'auto'; hideAutocomplete(); setSending(true); setLoading(true, 'Thinking…'); + // Separate file paths from image/codebase context entries + const sendContextFiles = contextFiles.filter(f => !f.isImage && !f.isCodebase).map(f => f.path); + const hasCodebase = contextFiles.some(f => f.isCodebase); + vscode.postMessage({ type: 'send', - message: text, - contextFiles: contextFiles.map(f => f.path), + message: rawText, + contextFiles: sendContextFiles, fileRefs, + useCodebase: hasCodebase, }); - // Clear context files after send - contextFiles = []; + // Clear non-pinned context after send + contextFiles = contextFiles.filter(f => f.pinned); renderContextFiles(); } @@ -1028,6 +1483,56 @@ vscode.postMessage({ type: 'fileSearch', query }); } + // ── Slash command autocomplete ───────────────────────────────────────────── + const SLASH_COMMANDS = [ + { cmd: '/clear', desc: 'Clear conversation and start fresh' }, + { cmd: '/model', desc: 'Switch AI model' }, + { cmd: '/export', desc: 'Export conversation as Markdown' }, + { cmd: '/help', desc: 'Show keyboard shortcuts' }, + { cmd: '/pin', desc: 'Pin all current context files to every session' }, + ]; + + function showSlashCommands(prefix) { + const filtered = SLASH_COMMANDS.filter(c => c.cmd.slice(1).startsWith(prefix)); + if (!filtered.length) { hideAutocomplete(); return; } + acItems = filtered.map(c => ({ isSlash: true, cmd: c.cmd, desc: c.desc })); + acSelectedIdx = 0; + autocompleteEl.innerHTML = ''; + for (let i = 0; i < filtered.length; i++) { + const c = filtered[i]; + const item = document.createElement('div'); + item.className = 'ac-item' + (i === 0 ? ' selected' : ''); + const cmdSpan = document.createElement('span'); + cmdSpan.className = 'ac-name'; + cmdSpan.style.fontWeight = '600'; + cmdSpan.textContent = c.cmd; + const descSpan = document.createElement('span'); + descSpan.className = 'ac-desc'; + descSpan.textContent = c.desc; + item.appendChild(cmdSpan); + item.appendChild(descSpan); + item.addEventListener('click', () => { acSelectedIdx = i; selectAcItem(); }); + autocompleteEl.appendChild(item); + } + autocompleteEl.classList.add('visible'); + } + + function executeSlashCommand(cmd) { + switch (cmd) { + case '/clear': newChatBtn && newChatBtn.click(); break; + case '/model': modelSelect && modelSelect.focus(); break; + case '/export': exportBtn && exportBtn.click(); break; + case '/pin': contextFiles.filter(f => !f.pinned).forEach(f => togglePinFile(f)); break; + case '/help': + addSystemMessage( + 'Keyboard shortcuts: Enter=send · Shift+Enter=newline · @=add file · ' + + '@codebase=full codebase · /=commands · ↑=recall last message · ' + + 'Ctrl+F=search · Ctrl+K=inline edit · Esc=stop' + ); + break; + } + } + function renderAutocomplete(files) { if (!files || files.length === 0) { hideAutocomplete(); return; } acItems = files; @@ -1067,8 +1572,19 @@ function selectAcItem() { if (acSelectedIdx < 0 || acSelectedIdx >= acItems.length) return; - const file = acItems[acSelectedIdx]; - // Replace the @query in input + const item = acItems[acSelectedIdx]; + + // Slash command selection + if (item.isSlash) { + inputEl.value = ''; + inputEl.style.height = 'auto'; + hideAutocomplete(); + executeSlashCommand(item.cmd); + return; + } + + // File selection — replace @query in input + const file = item; const val = inputEl.value; const cursorPos = inputEl.selectionStart; const before = val.slice(0, cursorPos); @@ -1076,7 +1592,6 @@ inputEl.value = replaced + val.slice(cursorPos); inputEl.setSelectionRange(replaced.length, replaced.length); hideAutocomplete(); - // Add to context vscode.postMessage({ type: 'addContextFile', path: file.path, name: file.name }); } @@ -1122,8 +1637,38 @@ metaEl.appendChild(dateEl); metaEl.appendChild(countEl); + const actionsEl = document.createElement('div'); + actionsEl.className = 'history-item-actions'; + + const renameBtn = document.createElement('button'); + renameBtn.className = 'history-action-btn'; + renameBtn.title = 'Rename'; + renameBtn.textContent = '✏'; + renameBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const newTitle = window.prompt('Rename conversation:', session.title || ''); + if (newTitle !== null && newTitle.trim()) { + vscode.postMessage({ type: 'renameSession', id: session.id, title: newTitle.trim() }); + } + }); + + const deleteBtn = document.createElement('button'); + deleteBtn.className = 'history-action-btn history-delete-btn'; + deleteBtn.title = 'Delete'; + deleteBtn.textContent = '🗑'; + deleteBtn.addEventListener('click', (e) => { + e.stopPropagation(); + if (window.confirm('Delete this conversation?')) { + vscode.postMessage({ type: 'deleteSession', id: session.id }); + } + }); + + actionsEl.appendChild(renameBtn); + actionsEl.appendChild(deleteBtn); + item.appendChild(titleEl); item.appendChild(metaEl); + item.appendChild(actionsEl); item.addEventListener('click', () => { vscode.postMessage({ type: 'loadSession', id: session.id }); }); @@ -1181,12 +1726,14 @@ // ── Toolbar buttons ─────────────────────────────────────────────────────── if (newChatBtn) { newChatBtn.addEventListener('click', () => { - // Save current session to history before clearing if (sessionMessages.length > 0) { vscode.postMessage({ type: 'saveSession', messages: [...sessionMessages] }); sessionMessages = []; } vscode.postMessage({ type: 'clear' }); + // Immediately restore pinned files for the new session + contextFiles = pinnedFiles.map(f => ({ ...f, pinned: true })); + renderContextFiles(); }); } @@ -1202,6 +1749,49 @@ }); } + // Export conversation as Markdown + if (exportBtn) { + exportBtn.addEventListener('click', () => { + if (sessionMessages.length === 0) return; + const lines = sessionMessages.map(m => + m.type === 'user' + ? `## You\n\n${m.text}` + : `## Claude\n\n${m.text}` + ); + const markdown = lines.join('\n\n---\n\n'); + vscode.postMessage({ type: 'exportConversation', markdown }); + }); + } + + // Auto-scroll toggle + if (autoscrollBtn) { + autoscrollBtn.addEventListener('click', () => { + autoScroll = !autoScroll; + autoscrollBtn.classList.toggle('locked', !autoScroll); + autoscrollBtn.title = autoScroll ? 'Auto-scroll: On (click to lock)' : 'Auto-scroll: Off (click to unlock)'; + if (autoScroll) scrollToBottom(); + }); + } + + // Re-enable auto-scroll when user scrolls to the bottom + messagesEl.addEventListener('scroll', () => { + const atBottom = messagesEl.scrollHeight - messagesEl.scrollTop - messagesEl.clientHeight < 60; + if (atBottom && !autoScroll) { + autoScroll = true; + if (autoscrollBtn) { + autoscrollBtn.classList.remove('locked'); + autoscrollBtn.title = 'Auto-scroll: On (click to lock)'; + } + } else if (!atBottom && autoScroll && isLoading) { + // User scrolled up while response is streaming — pause auto-scroll + autoScroll = false; + if (autoscrollBtn) { + autoscrollBtn.classList.add('locked'); + autoscrollBtn.title = 'Auto-scroll: Off (click to unlock)'; + } + } + }); + if (modelSelect) { modelSelect.addEventListener('change', () => { vscode.postMessage({ type: 'model', model: modelSelect.value }); diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 1424a11..b898ac9 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -82,6 +82,22 @@ { "command": "openClaudeCode.applyCode", "title": "Open Claude Code: Apply Code to Active File" + }, + { + "command": "openClaudeCode.inlineEdit", + "title": "Open Claude Code: Inline Edit Selection (Ctrl+K)" + } + ], + "keybindings": [ + { + "command": "openClaudeCode.openChat", + "key": "ctrl+alt+c", + "mac": "cmd+alt+c" + }, + { + "command": "openClaudeCode.inlineEdit", + "key": "ctrl+k", + "when": "editorTextFocus" } ], "configuration": { @@ -167,6 +183,12 @@ "type": "boolean", "default": true, "description": "Show the Cursor-style sidebar chat panel (requires reload)" + }, + "openClaudeCode.pinnedFiles": { + "type": "array", + "default": [], + "items": { "type": "string" }, + "description": "File paths pinned to every new conversation as context" } } } From eeba7944f8a0fde7e6300901c919f9cece7e78f2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:52:53 +0000 Subject: [PATCH 27/79] fix: validate image data URL before setting img.src (CodeQL XSS alert) Agent-Logs-Url: https://github.com/codomium/CODE/sessions/2870ea5c-5132-4837-a6a0-036ebe45f864 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/media/chat.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 6d6dacc..30e1ad1 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -1291,7 +1291,10 @@ if (f.isImage && f.dataUrl) { const img = document.createElement('img'); - img.src = f.dataUrl; + // dataUrl is always a data: URI from FileReader.readAsDataURL — validate before use + if (/^data:image\/[a-z]+;base64,/.test(f.dataUrl)) { + img.src = f.dataUrl; + } img.alt = f.name; chip.appendChild(img); } From 84fe2c09dc689fe915f6befc6e1406d53f86bec3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 18 Apr 2026 05:02:24 +0000 Subject: [PATCH 28/79] chore: update last-known Claude Code version to 2.1.114 --- scripts/last-known-claude-version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/last-known-claude-version.txt b/scripts/last-known-claude-version.txt index 7b71b36..94349f3 100644 --- a/scripts/last-known-claude-version.txt +++ b/scripts/last-known-claude-version.txt @@ -1 +1 @@ -2.1.112 +2.1.114 From b067c651c5f03e769ebf0f4d13bf92717a9974bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 13:41:15 +0000 Subject: [PATCH 29/79] feat: v1.3.0 - session memory algorithm (Claude Premium-style) Agent-Logs-Url: https://github.com/codomium/CODE/sessions/663af724-8a94-428d-9004-1140c9262fa3 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- README.md | 22 +++++- vscode-extension/agent-bridge.mjs | 24 ++++++ vscode-extension/extension.js | 54 ++++++++++++++ vscode-extension/media/chat.css | 21 ++++++ vscode-extension/media/chat.js | 70 +++++++++++++++++- ...1.2.0.vsix => open-claude-code-1.3.0.vsix} | Bin 144273 -> 153827 bytes vscode-extension/package-lock.json | 4 +- vscode-extension/package.json | 4 +- 8 files changed, 190 insertions(+), 9 deletions(-) rename vscode-extension/{open-claude-code-1.2.0.vsix => open-claude-code-1.3.0.vsix} (62%) diff --git a/README.md b/README.md index d076f62..d60539e 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ npm License Nightly - VSCode + VSCode

    > **Automated Nightly Releases** — Open Claude Code automatically detects new [Claude Code](https://www.npmjs.com/package/@anthropic-ai/claude-code) releases, runs 903+ tests to verify zero regressions, and publishes verified builds with AI-powered discovery analysis. See [Releases](https://github.com/ruvnet/open-claude-code/releases) | [ADR-001](docs/adr/ADR-001-nightly-verified-release-pipeline.md) | [pi.ruv.io](https://pi.ruv.io) @@ -52,7 +52,7 @@ A **Cursor-style AI coding assistant** built directly into VSCode — no termina The extension package is included in the repo and ready to install: ```bash -code --install-extension vscode-extension/open-claude-code-1.2.0.vsix +code --install-extension vscode-extension/open-claude-code-1.3.0.vsix ``` Or use **Extensions → … → Install from VSIX…** and pick the file from the `vscode-extension/` folder. @@ -63,7 +63,7 @@ Or use **Extensions → … → Install from VSIX…** and pick the file from th cd vscode-extension npm install npm run package # prepackage → package → postpackage -code --install-extension open-claude-code-1.2.0.vsix +code --install-extension open-claude-code-1.3.0.vsix ``` ### Highlights @@ -73,7 +73,9 @@ code --install-extension open-claude-code-1.2.0.vsix - **Full tool access** — all 25+ agent tools (Read, Write, Edit, Bash, Glob, Grep, WebFetch, …) - **Rich markdown + syntax highlighting** — code blocks with copy & Apply-to-file buttons - **Copy whole answer** — ⎘ Copy button on every assistant reply copies the full response to the clipboard -- **Chat history** — History button shows all past conversations (Cursor-style panel); "New" auto-saves the current session; sessions persist across VS Code restarts +- **Session memory** — the model remembers the **full conversation from the beginning** across VS Code restarts (Claude Premium-style); auto-saves after every response and restores on reopen +- **Chat history** — History button shows all past conversations (Cursor-style panel); "New" auto-saves the current session; sessions persist across VS Code restarts; up to 30 sessions are retained +- **▶ Resume** — any past session can be fully resumed: all messages are restored in the chat panel and the model's context is re-injected into the agent bridge - **⚙ Settings shortcut** — gear button in the header opens the extension settings directly — no need to navigate through the marketplace - **Streaming responses** — tokens arrive in real time with an animated cursor - **Tool visualization** — collapsible cards showing each tool execution and result @@ -403,6 +405,18 @@ This is a **clean-room implementation** — no leaked source used. Architecture ## 🆕 What's New +### v1.3.0 — Session Memory (Claude Premium-style) + +**Session Memory algorithm** — the model now remembers the full conversation from the very beginning, just like Claude premium sessions: + +- **Auto-persist active session** — the current conversation is automatically saved to VS Code `globalState` after every response. If you close and reopen VS Code, your conversation is fully restored — messages in the chat panel **and** the model's context in the bridge subprocess +- **Session resume from history** — every past conversation in the History panel now has a **▶ Resume** button. Clicking it: + 1. Saves your current in-progress chat to history + 2. Restores all messages of the selected session in the main chat panel + 3. Re-injects the full conversation into the agent loop (`resume` command in `agent-bridge.mjs`) so the model has complete memory of everything said — no context lost +- **New `resume` bridge protocol** — `agent-bridge.mjs` accepts `{"type":"resume","messages":[…]}` which converts the stored UI message format back to the Anthropic/OpenAI API message format and sets it directly on the agent loop's state +- **Auto-clear on new chat** — starting a new conversation clears the persisted active session so the next restart begins fresh + ### v1.2.0 — Chat History, Settings Button & Copy Answer **New UI features** _(this PR)_ diff --git a/vscode-extension/agent-bridge.mjs b/vscode-extension/agent-bridge.mjs index e22d2f0..5ddf0cc 100644 --- a/vscode-extension/agent-bridge.mjs +++ b/vscode-extension/agent-bridge.mjs @@ -144,6 +144,8 @@ async function init() { queue = queue.then(() => handleRun(loop, msg.message)); } else if (msg.type === 'model') { queue = queue.then(() => handleModelSwitch(loop, msg.model)); + } else if (msg.type === 'resume') { + queue = queue.then(() => handleResume(loop, msg.messages || [])); } }); @@ -180,6 +182,28 @@ async function handleModelSwitch(loop, model) { emit({ type: 'ready' }); } +/** + * Restore conversation history into the agent loop so the model remembers + * the full session from the beginning (like Claude Premium session memory). + * + * UI messages (type:'user'/'assistant', text:'...') are converted to the + * API message format used by the agent loop. + */ +async function handleResume(loop, messages) { + loop.state.messages = messages + .filter(m => (m.type === 'user' || m.type === 'assistant') && m.text) + .map(m => { + if (m.type === 'user') { + return { role: 'user', content: m.text }; + } + // Assistant messages use content-block array format for API compatibility + return { role: 'assistant', content: [{ type: 'text', text: m.text }] }; + }); + loop.state.turnCount = messages.filter(m => m.type === 'user').length; + loop.state.tokenUsage = { input: 0, output: 0 }; + emit({ type: 'ready' }); +} + init().catch((err) => { emit({ type: 'error', message: err.message }); process.exit(1); diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 3653300..99cbdf6 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -140,6 +140,25 @@ class AgentBridge { return this._queue; } + /** + * Restore conversation history into the agent loop so the model remembers + * the full session from the beginning (Claude Premium-style session memory). + */ + resume(messages) { + this._queue = this._queue.then( + () => new Promise((resolve) => { + this._currentHandler = (event) => { + if (event.type === 'ready' || event.type === 'error') { + this._currentHandler = null; + resolve(); + } + }; + this._send({ type: 'resume', messages }); + }) + ); + return this._queue; + } + _send(obj) { if (!this._proc || !this._started) throw new Error('Agent bridge is not running'); this._proc.stdin.write(JSON.stringify(obj) + '\n'); @@ -248,12 +267,17 @@ class ClaudeCodeViewProvider { process.env.NVIDIA_API_KEY || config.get('nvidiaApiKey') ); + // Restore any active session persisted before the last VS Code restart + const activeSession = this._context.globalState.get('openClaudeCode.activeSession'); + const activeMessages = (activeSession && Array.isArray(activeSession.messages) && activeSession.messages.length > 0) + ? activeSession.messages : null; this.postMessage({ type: 'initialized', model: config.get('model') || 'claude-sonnet-4-6', mode: config.get('permissionMode') || 'default', thinkingMode: !!config.get('nvidiaThinkingMode'), hasApiKey, + activeSession: activeMessages, }); break; } @@ -412,6 +436,36 @@ class ClaudeCodeViewProvider { break; } + case 'autoSaveSession': { + // Persist the current in-progress session so it survives VS Code restarts. + // Called by the webview after every completed response (stop event). + if (msg.messages && msg.messages.length > 0) { + // Cap at 200 entries to avoid unbounded growth + const capped = msg.messages.slice(-200); + await this._context.globalState.update('openClaudeCode.activeSession', { + messages: capped, + savedAt: Date.now(), + }); + } else { + await this._context.globalState.update('openClaudeCode.activeSession', null); + } + break; + } + + case 'resumeSession': { + // Restore conversation history into the agent bridge so the model + // remembers the full session (Claude Premium-style session memory). + if (msg.messages && msg.messages.length > 0) { + try { + const agentBridge = await getBridge(); + await agentBridge.resume(msg.messages); + } catch (err) { + this.postMessage({ type: 'error', message: 'Failed to resume session: ' + err.message }); + } + } + break; + } + case 'exportConversation': { const content = String(msg.markdown || ''); const defaultName = 'conversation-' + new Date().toISOString().slice(0, 10) + '.md'; diff --git a/vscode-extension/media/chat.css b/vscode-extension/media/chat.css index 39acb88..1c60626 100644 --- a/vscode-extension/media/chat.css +++ b/vscode-extension/media/chat.css @@ -1355,6 +1355,27 @@ select:focus { border-color: var(--accent); } white-space: pre-line; } +/* ---- Resume session bar ---- */ +.history-resume-bar { + padding: 10px 12px; + border-bottom: 1px solid var(--border); + background: var(--bg-elevated); + flex-shrink: 0; +} +.history-resume-btn { + width: 100%; + padding: 8px 14px; + background: var(--accent); + color: #fff; + border: none; + border-radius: var(--radius); + font-size: 12px; + font-weight: 600; + cursor: pointer; + transition: background 0.15s; +} +.history-resume-btn:hover { background: var(--accent-hover); } + /* ---- Copy button on assistant messages ---- */ .msg-copy-btn { background: transparent; diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 30e1ad1..e247ecc 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -1080,6 +1080,11 @@ finalizeAssistantMessage(null); setLoading(false); setSending(false); + // Auto-save current session after every response so VS Code restarts + // don't lose the conversation (Claude Premium-style session memory). + if (sessionMessages.length > 0) { + vscode.postMessage({ type: 'autoSaveSession', messages: [...sessionMessages] }); + } break; case 'tokenUpdate': @@ -1111,6 +1116,8 @@ renderContextFiles(); updateStats(); updateContextBar(); + // Clear the auto-saved active session + vscode.postMessage({ type: 'autoSaveSession', messages: [] }); break; case 'historyData': @@ -1163,7 +1170,12 @@ syncThinkingToggleVisibility(currentModel); updateStats(); updateContextBar(); - showWelcome(!!msg.hasApiKey); + // Restore active session if one was persisted (survives VS Code restarts) + if (msg.activeSession && msg.activeSession.length > 0) { + restoreSessionMessages(msg.activeSession); + } else { + showWelcome(!!msg.hasApiKey); + } // Load pinned files from settings vscode.postMessage({ type: 'getPinnedFiles' }); break; @@ -1599,6 +1611,37 @@ } // ── History Panel ───────────────────────────────────────────────────────── + /** + * Restore a set of saved messages into the main chat panel and re-inject them + * into the agent bridge, so the model remembers the full conversation context + * (Claude Premium-style session memory). + */ + function restoreSessionMessages(messages) { + // Clear current UI state + messagesEl.innerHTML = ''; + sessionMessages = []; + activeToolCards = {}; + tokenStats = { input: 0, output: 0 }; + costTotal = 0; + startTime = Date.now(); + updateStats(); + updateContextBar(); + + // Replay messages into the DOM (addUserMessage / finalizeAssistantMessage + // only touch the DOM and sessionMessages — they do not send to the bridge) + for (const m of messages) { + if (m.type === 'user') { + addUserMessage(m.text); + } else if (m.type === 'assistant') { + finalizeAssistantMessage(m.text); + } + } + + // Re-inject the conversation history into the agent bridge so the next + // user message is answered with full knowledge of the entire session. + vscode.postMessage({ type: 'resumeSession', messages }); + } + function openHistoryPanel() { if (historyPanel) historyPanel.classList.add('visible'); if (historySessionView) historySessionView.classList.remove('visible'); @@ -1679,10 +1722,35 @@ } } + let historyViewMessages = []; // messages of the session currently shown in history panel + function renderHistorySession(messages) { if (!historySessionView) return; + historyViewMessages = messages; historySessionView.innerHTML = ''; + // ── Resume button ──────────────────────────────────────────────────── + if (messages.length > 0) { + const resumeBar = document.createElement('div'); + resumeBar.className = 'history-resume-bar'; + + const resumeBtn = document.createElement('button'); + resumeBtn.className = 'history-resume-btn'; + resumeBtn.textContent = '▶ Resume this conversation'; + resumeBtn.title = 'Continue this conversation — the model will remember everything from the beginning'; + resumeBtn.addEventListener('click', () => { + // Save the current in-progress session to history before switching + if (sessionMessages.length > 0) { + vscode.postMessage({ type: 'saveSession', messages: [...sessionMessages] }); + } + closeHistoryPanel(); + restoreSessionMessages(historyViewMessages); + }); + + resumeBar.appendChild(resumeBtn); + historySessionView.appendChild(resumeBar); + } + for (const m of messages) { if (m.type === 'user') { const div = document.createElement('div'); diff --git a/vscode-extension/open-claude-code-1.2.0.vsix b/vscode-extension/open-claude-code-1.3.0.vsix similarity index 62% rename from vscode-extension/open-claude-code-1.2.0.vsix rename to vscode-extension/open-claude-code-1.3.0.vsix index 436dbcca91326976ff40806a4ee9c3a5e5bca15d..410c3d2f675e74b55bb5f61e3b4a461b8381973a 100644 GIT binary patch delta 50157 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 delta 40524 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 z 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 diff --git a/vscode-extension/package-lock.json b/vscode-extension/package-lock.json index d53579b..cc46970 100644 --- a/vscode-extension/package-lock.json +++ b/vscode-extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "open-claude-code", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "open-claude-code", - "version": "1.2.0", + "version": "1.3.0", "license": "MIT", "devDependencies": { "@types/vscode": "^1.90.0", diff --git a/vscode-extension/package.json b/vscode-extension/package.json index b898ac9..1e9c61c 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -2,7 +2,7 @@ "name": "open-claude-code", "displayName": "Open Claude Code", "description": "AI coding assistant powered by Claude — Cursor-style chat panel with file context, code apply, tool visualization and more", - "version": "1.2.0", + "version": "1.3.0", "publisher": "open-claude-code", "engines": { "vscode": "^1.90.0" @@ -197,7 +197,7 @@ "prepackage": "node scripts/prepare-bundle.js", "package": "vsce package --no-dependencies", "postpackage": "node scripts/cleanup-bundle.js", - "install-vsix": "code --install-extension open-claude-code-1.2.0.vsix" + "install-vsix": "code --install-extension open-claude-code-1.3.0.vsix" }, "devDependencies": { "@types/vscode": "^1.90.0", From bbcbc11e4840e05fc0ad4ea6f48a24aa0d9bc107 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 13:43:59 +0000 Subject: [PATCH 30/79] fix: address code review - clarify comments on session cap and token reset Agent-Logs-Url: https://github.com/codomium/CODE/sessions/663af724-8a94-428d-9004-1140c9262fa3 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/agent-bridge.mjs | 3 +++ vscode-extension/extension.js | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/vscode-extension/agent-bridge.mjs b/vscode-extension/agent-bridge.mjs index 5ddf0cc..260708e 100644 --- a/vscode-extension/agent-bridge.mjs +++ b/vscode-extension/agent-bridge.mjs @@ -200,6 +200,9 @@ async function handleResume(loop, messages) { return { role: 'assistant', content: [{ type: 'text', text: m.text }] }; }); loop.state.turnCount = messages.filter(m => m.type === 'user').length; + // Token usage is reset to zero because the stored messages contain only plain + // text (not the original API token counts). The stats bar will show usage for + // new turns going forward; this is correct and expected behaviour on resume. loop.state.tokenUsage = { input: 0, output: 0 }; emit({ type: 'ready' }); } diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 99cbdf6..cc4618f 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -440,7 +440,9 @@ class ClaudeCodeViewProvider { // Persist the current in-progress session so it survives VS Code restarts. // Called by the webview after every completed response (stop event). if (msg.messages && msg.messages.length > 0) { - // Cap at 200 entries to avoid unbounded growth + // Cap at 200 messages (individual user/assistant entries) to avoid + // unbounded growth of the active session storage. This is separate + // from the 30-session cap on the chat history archive. const capped = msg.messages.slice(-200); await this._context.globalState.update('openClaudeCode.activeSession', { messages: capped, From b926ab7dfaeef729b1f238ff2b82d47d450ee461 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 13:58:00 +0000 Subject: [PATCH 31/79] fix: Cursor-style session switching - click to continue any past session Agent-Logs-Url: https://github.com/codomium/CODE/sessions/d7037147-ddec-499a-80c9-dbdd32539af3 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 37 ++++++++- vscode-extension/media/chat.js | 77 ++++++++++++++----- vscode-extension/open-claude-code-1.3.0.vsix | Bin 153827 -> 154938 bytes 3 files changed, 93 insertions(+), 21 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index cc4618f..4ad38dc 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -27,6 +27,9 @@ const fs = require('fs'); const PARTICIPANT_ID = 'open-claude-code.claude'; const BRIDGE_SCRIPT = path.join(__dirname, 'agent-bridge.mjs'); +// Maximum number of user/assistant messages kept in a persisted session. +// Applies to both the in-progress activeSession and updated history entries. +const MAX_SESSION_MESSAGES = 200; // ── AgentBridge ───────────────────────────────────────────────────────────── @@ -271,6 +274,8 @@ class ClaudeCodeViewProvider { const activeSession = this._context.globalState.get('openClaudeCode.activeSession'); const activeMessages = (activeSession && Array.isArray(activeSession.messages) && activeSession.messages.length > 0) ? activeSession.messages : null; + // Also restore the session ID so continued messages update the right history entry + const activeSessionId = (activeSession && activeSession.sessionId) || null; this.postMessage({ type: 'initialized', model: config.get('model') || 'claude-sonnet-4-6', @@ -278,6 +283,7 @@ class ClaudeCodeViewProvider { thinkingMode: !!config.get('nvidiaThinkingMode'), hasApiKey, activeSession: activeMessages, + activeSessionId, }); break; } @@ -404,7 +410,32 @@ class ClaudeCodeViewProvider { const sessions = this._context.globalState.get('openClaudeCode.chatHistory', []); const session = sessions.find(s => s.id === msg.id); if (session) { - this.postMessage({ type: 'sessionData', messages: session.messages || [] }); + // Include id so the webview can track which session is being viewed + this.postMessage({ type: 'sessionData', id: session.id, messages: session.messages || [] }); + } + break; + } + + case 'resumeFromHistory': { + // Direct-resume (Cursor-style): load and immediately switch to a history session. + const sessions = this._context.globalState.get('openClaudeCode.chatHistory', []); + const session = sessions.find(s => s.id === msg.id); + if (session) { + this.postMessage({ type: 'resumeFromHistoryData', id: session.id, messages: session.messages || [] }); + } + break; + } + + case 'updateSession': { + // Update an existing history entry (after adding new messages to a resumed session). + const sessions = this._context.globalState.get('openClaudeCode.chatHistory', []); + const sess = sessions.find(s => s.id === msg.id); + if (sess && Array.isArray(msg.messages) && msg.messages.length > 0) { + sess.messages = msg.messages.slice(-MAX_SESSION_MESSAGES); + sess.messageCount = sess.messages.length; + const firstUser = sess.messages.find(m => m.type === 'user'); + if (firstUser) sess.title = firstUser.text.slice(0, 80).replace(/\n/g, ' '); + await this._context.globalState.update('openClaudeCode.chatHistory', sessions); } break; } @@ -443,9 +474,11 @@ class ClaudeCodeViewProvider { // Cap at 200 messages (individual user/assistant entries) to avoid // unbounded growth of the active session storage. This is separate // from the 30-session cap on the chat history archive. - const capped = msg.messages.slice(-200); + const capped = msg.messages.slice(-MAX_SESSION_MESSAGES); await this._context.globalState.update('openClaudeCode.activeSession', { messages: capped, + // Track which history session this is so it can be updated on restart + sessionId: msg.sessionId || null, savedAt: Date.now(), }); } else { diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index e247ecc..047335d 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -32,6 +32,7 @@ let lastUserMessage = ''; // for ↑ recall and regenerate let autoScroll = true; // auto-scroll while streaming let pinnedFiles = []; // files pinned across sessions + let currentSessionId = null; // null for new sessions; history entry ID when continuing a saved session // ── DOM refs ───────────────────────────────────────────────────────────── const messagesEl = document.getElementById('messages'); @@ -1081,9 +1082,14 @@ setLoading(false); setSending(false); // Auto-save current session after every response so VS Code restarts - // don't lose the conversation (Claude Premium-style session memory). + // don't lose the conversation (Cursor/Claude-style session memory). if (sessionMessages.length > 0) { - vscode.postMessage({ type: 'autoSaveSession', messages: [...sessionMessages] }); + vscode.postMessage({ type: 'autoSaveSession', messages: [...sessionMessages], sessionId: currentSessionId }); + if (currentSessionId) { + // Also update the history entry so it stays current when the + // user opens the history panel without clicking "New" first. + vscode.postMessage({ type: 'updateSession', id: currentSessionId, messages: [...sessionMessages] }); + } } break; @@ -1108,6 +1114,7 @@ currentStreamMsg = null; activeToolCards = {}; sessionMessages = []; + currentSessionId = null; tokenStats = { input: 0, output: 0 }; costTotal = 0; startTime = Date.now(); @@ -1125,7 +1132,12 @@ break; case 'sessionData': - renderHistorySession(msg.messages || []); + renderHistorySession(msg.messages || [], msg.id || null); + break; + + case 'resumeFromHistoryData': + // Direct-resume (Cursor-style): triggered when user clicks a history item + restoreSessionMessages(msg.messages || [], msg.id || null); break; case 'fileContent': @@ -1172,7 +1184,7 @@ updateContextBar(); // Restore active session if one was persisted (survives VS Code restarts) if (msg.activeSession && msg.activeSession.length > 0) { - restoreSessionMessages(msg.activeSession); + restoreSessionMessages(msg.activeSession, msg.activeSessionId || null); } else { showWelcome(!!msg.hasApiKey); } @@ -1611,12 +1623,32 @@ } // ── History Panel ───────────────────────────────────────────────────────── + /** + * Persist the current in-progress session before switching to another one. + * - If we're continuing a history session, update that entry (no duplicate). + * - If this is a fresh session, create a new history entry. + */ + function saveCurrentSessionIfNeeded() { + if (sessionMessages.length === 0) return; + if (currentSessionId) { + vscode.postMessage({ type: 'updateSession', id: currentSessionId, messages: [...sessionMessages] }); + } else { + vscode.postMessage({ type: 'saveSession', messages: [...sessionMessages] }); + } + } + /** * Restore a set of saved messages into the main chat panel and re-inject them * into the agent bridge, so the model remembers the full conversation context - * (Claude Premium-style session memory). + * (Cursor/Claude-style session memory). + * + * @param {Array} messages - saved user/assistant message objects + * @param {string|null} sessionId - history entry ID being continued; null for a new session */ - function restoreSessionMessages(messages) { + function restoreSessionMessages(messages, sessionId) { + // Track which history session we are editing so we update it (not duplicate it) + currentSessionId = sessionId !== undefined ? sessionId : null; + // Clear current UI state messagesEl.innerHTML = ''; sessionMessages = []; @@ -1627,6 +1659,11 @@ updateStats(); updateContextBar(); + if (messages.length === 0) { + showWelcome(true); + return; + } + // Replay messages into the DOM (addUserMessage / finalizeAssistantMessage // only touch the DOM and sessionMessages — they do not send to the bridge) for (const m of messages) { @@ -1715,18 +1752,24 @@ item.appendChild(titleEl); item.appendChild(metaEl); item.appendChild(actionsEl); + // Cursor/Claude-style: clicking a session immediately switches to it. + // The current session is auto-saved before switching so nothing is lost. item.addEventListener('click', () => { - vscode.postMessage({ type: 'loadSession', id: session.id }); + saveCurrentSessionIfNeeded(); + closeHistoryPanel(); + vscode.postMessage({ type: 'resumeFromHistory', id: session.id }); }); historyList.appendChild(item); } } let historyViewMessages = []; // messages of the session currently shown in history panel + let historyViewSessionId = null; // ID of that session - function renderHistorySession(messages) { + function renderHistorySession(messages, sessionId) { if (!historySessionView) return; historyViewMessages = messages; + historyViewSessionId = sessionId || null; historySessionView.innerHTML = ''; // ── Resume button ──────────────────────────────────────────────────── @@ -1736,15 +1779,12 @@ const resumeBtn = document.createElement('button'); resumeBtn.className = 'history-resume-btn'; - resumeBtn.textContent = '▶ Resume this conversation'; - resumeBtn.title = 'Continue this conversation — the model will remember everything from the beginning'; + resumeBtn.textContent = '▶ Continue this conversation'; + resumeBtn.title = 'Switch to this conversation — the model will remember everything from the beginning'; resumeBtn.addEventListener('click', () => { - // Save the current in-progress session to history before switching - if (sessionMessages.length > 0) { - vscode.postMessage({ type: 'saveSession', messages: [...sessionMessages] }); - } + saveCurrentSessionIfNeeded(); closeHistoryPanel(); - restoreSessionMessages(historyViewMessages); + restoreSessionMessages(historyViewMessages, historyViewSessionId); }); resumeBar.appendChild(resumeBtn); @@ -1797,10 +1837,9 @@ // ── Toolbar buttons ─────────────────────────────────────────────────────── if (newChatBtn) { newChatBtn.addEventListener('click', () => { - if (sessionMessages.length > 0) { - vscode.postMessage({ type: 'saveSession', messages: [...sessionMessages] }); - sessionMessages = []; - } + saveCurrentSessionIfNeeded(); + sessionMessages = []; + currentSessionId = null; vscode.postMessage({ type: 'clear' }); // Immediately restore pinned files for the new session contextFiles = pinnedFiles.map(f => ({ ...f, pinned: true })); diff --git a/vscode-extension/open-claude-code-1.3.0.vsix b/vscode-extension/open-claude-code-1.3.0.vsix index 410c3d2f675e74b55bb5f61e3b4a461b8381973a..ff0917cec7b9d654ba69f2d3af136e88226ce0ec 100644 GIT binary patch delta 33151 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 delta 32057 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 TJ^p{Rq=rC3#C=g{HsJn0d{6nS From 6da29b3b1721867d953355996dc8768536dfb6ae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 14:13:13 +0000 Subject: [PATCH 32/79] =?UTF-8?q?feat:=20Cursor-style=20enhancements=20?= =?UTF-8?q?=E2=80=94=20welcome=20recent=20sessions,=20run=20in=20terminal,?= =?UTF-8?q?=20history=20search,=20active=20indicator,=20Ctrl+L?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent-Logs-Url: https://github.com/codomium/CODE/sessions/470e88e0-1171-4175-9d5c-58d31a2481f2 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 14 ++ vscode-extension/media/chat.css | 98 ++++++++++++ vscode-extension/media/chat.html | 9 ++ vscode-extension/media/chat.js | 159 +++++++++++++++++-- vscode-extension/open-claude-code-1.3.0.vsix | Bin 154938 -> 156888 bytes 5 files changed, 271 insertions(+), 9 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 4ad38dc..5079877 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -565,6 +565,20 @@ class ClaudeCodeViewProvider { break; } + case 'runInTerminal': { + // Send shell code directly to the integrated terminal. + // Reuse an existing "Claude Code" terminal if one is already open. + const code = String(msg.code || '').trim(); + if (!code) break; + let terminal = vscode.window.terminals.find(t => t.name === 'Claude Code'); + if (!terminal) { + terminal = vscode.window.createTerminal({ name: 'Claude Code' }); + } + terminal.show(true); // true = preserve editor focus + terminal.sendText(code); + break; + } + default: break; } diff --git a/vscode-extension/media/chat.css b/vscode-extension/media/chat.css index 1c60626..34c71e7 100644 --- a/vscode-extension/media/chat.css +++ b/vscode-extension/media/chat.css @@ -105,6 +105,18 @@ html, body { .header-btn.icon-only { padding: 3px 4px; } .header-btn.locked { color: var(--warning); border-color: rgba(220,220,170,0.4); } +/* Current session indicator beside the logo */ +#session-indicator { + font-size: 11px; + color: var(--text-muted); + max-width: 150px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 1; + min-width: 0; +} + /* ---- Search bar ---- */ #search-bar { display: flex; @@ -480,6 +492,60 @@ select:focus { border-color: var(--accent); } font-size: 10px; } +.welcome-section-label { + font-size: 10px; + color: var(--text-muted); + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 4px; + margin-top: 8px; + align-self: flex-start; +} + +#welcome-recent { + width: 100%; + max-width: 300px; + display: flex; + flex-direction: column; + gap: 2px; +} + +#welcome-recent-list { + display: flex; + flex-direction: column; + gap: 4px; +} + +.welcome-recent-item { + display: flex; + flex-direction: column; + gap: 2px; + padding: 8px 10px; + background: var(--bg-elevated); + border: 1px solid var(--border); + border-radius: var(--radius); + cursor: pointer; + text-align: left; + transition: border-color 0.15s, background 0.15s; + width: 100%; +} +.welcome-recent-item:hover { + border-color: var(--accent); + background: var(--bg-input); +} +.welcome-recent-title { + font-size: 12px; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} +.welcome-recent-meta { + font-size: 10px; + color: var(--text-muted); +} + /* Example prompts (both welcome & setup) */ .example-prompt { background: var(--bg-elevated); @@ -747,6 +813,11 @@ select:focus { border-color: var(--accent); } border-color: var(--accent); color: var(--accent); } +.code-btn.run-btn:hover { + background: rgba(78,201,176,0.15); + border-color: var(--success); + color: var(--success); +} .code-block pre { margin: 0; @@ -1307,6 +1378,27 @@ select:focus { border-color: var(--accent); } gap: 4px; } +/* History search bar */ +#history-search-bar { + padding: 6px 8px; + border-bottom: 1px solid var(--border); + flex-shrink: 0; + background: var(--bg); +} +#history-search { + width: 100%; + background: var(--bg-input); + border: 1px solid var(--border); + border-radius: var(--radius); + color: var(--text); + font-size: 11px; + padding: 4px 8px; + outline: none; + font-family: var(--font-ui); +} +#history-search:focus { border-color: var(--accent); } +#history-search-bar.hidden { display: none; } + #history-session-view { flex: 1; overflow-y: auto; @@ -1332,6 +1424,12 @@ select:focus { border-color: var(--accent); } border-color: var(--accent); background: var(--bg-input); } +/* Active (currently open) session */ +.history-item.active { + border-color: rgba(0,122,204,0.5); + background: rgba(0,122,204,0.07); +} +.history-item.active .history-item-title { color: var(--accent); } .history-item-title { font-size: 12px; color: var(--text); diff --git a/vscode-extension/media/chat.html b/vscode-extension/media/chat.html index febc15e..9c415fb 100644 --- a/vscode-extension/media/chat.html +++ b/vscode-extension/media/chat.html @@ -13,6 +13,7 @@

    +
    @@ -240,6 +245,7 @@

    Claude Code

    Enter send Shift+Enter newline + Ctrl+L focus Esc stop @ add file
    @@ -275,6 +281,9 @@

    Claude Code

    +
    diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 047335d..535dc69 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -33,6 +33,12 @@ let autoScroll = true; // auto-scroll while streaming let pinnedFiles = []; // files pinned across sessions let currentSessionId = null; // null for new sessions; history entry ID when continuing a saved session + let currentSessionTitle = ''; // first-message snippet shown in header + let allHistorySessions = []; // full session list for filtering + welcome screen + let historyFilterQuery = ''; // active search filter in history panel + + /** Max characters shown in the header session-title indicator */ + const SESSION_TITLE_DISPLAY_LENGTH = 55; // ── DOM refs ───────────────────────────────────────────────────────────── const messagesEl = document.getElementById('messages'); @@ -81,6 +87,11 @@ const contextUsedEl = document.getElementById('context-used'); const contextMaxEl = document.getElementById('context-max'); const contextFillEl = document.getElementById('context-bar-fill'); + const sessionIndicator = document.getElementById('session-indicator'); + const historySearch = document.getElementById('history-search'); + const historySearchBar = document.getElementById('history-search-bar'); + const welcomeRecentEl = document.getElementById('welcome-recent'); + const welcomeRecentList = document.getElementById('welcome-recent-list'); /** Models that support NVIDIA thinking mode toggle */ const THINKING_CAPABLE_MODELS = new Set([ @@ -105,6 +116,18 @@ 'mistralai/mixtral-8x22b-instruct-v0.1': 64000, }; + // ── Session indicator (header title) ───────────────────────────────────── + function updateSessionIndicator() { + if (!sessionIndicator) return; + if (currentSessionTitle) { + sessionIndicator.textContent = '— ' + currentSessionTitle; + sessionIndicator.title = currentSessionTitle; + } else { + sessionIndicator.textContent = ''; + sessionIndicator.title = ''; + } + } + // ── Tick elapsed time ──────────────────────────────────────────────────── setInterval(() => { if (!statsTime) return; @@ -379,18 +402,25 @@ // Store code by ID to avoid large data attributes and XSS risks const codeStore = new Map(); + /** Languages whose code can be sent directly to the integrated terminal */ + const RUNNABLE_LANGS = new Set(['sh', 'bash', 'shell', 'zsh', 'cmd', 'batch', 'powershell', 'ps1']); + function buildCodeBlockHtml(code, lang) { const id = `cb-${++codeBlockIdCounter}`; const highlighted = highlightCode(code, lang); const displayLang = lang || 'code'; // Store code in JS Map, not in DOM attribute codeStore.set(id, { code, language: lang || '' }); + const isRunnable = RUNNABLE_LANGS.has((lang || '').toLowerCase()); + const runBtnHtml = isRunnable + ? `` + : ''; // Use data-block-id for event delegation; no inline onclick return `
    ${escapeHtml(displayLang)}
    - + ${runBtnHtml}
    @@ -419,6 +449,12 @@ // Show preview immediately; diff will arrive when extension reads active file showApplyModal(entry.code, null, null); vscode.postMessage({ type: 'getActiveFileContent' }); + } else if (action === 'run') { + const entry = codeStore.get(blockId); + if (!entry) return; + vscode.postMessage({ type: 'runInTerminal', code: entry.code }); + btn.textContent = '✓ Sent'; + setTimeout(() => { btn.textContent = '▷ Run'; }, 1500); } }); @@ -585,6 +621,11 @@ hideWelcome(); currentStreamMsg = null; lastUserMessage = text; + // Derive session title from the first user message + if (sessionMessages.length === 0 && text.trim()) { + currentSessionTitle = text.trim().slice(0, SESSION_TITLE_DISPLAY_LENGTH).replace(/\n/g, ' '); + updateSessionIndicator(); + } sessionMessages.push({ type: 'user', text }); const div = document.createElement('div'); @@ -1031,6 +1072,14 @@ e.preventDefault(); showSearchBar(); } + // Ctrl+L — focus the chat input (standard AI IDE shortcut) + if ((e.ctrlKey || e.metaKey) && e.key === 'l') { + e.preventDefault(); + if (inputEl) { + inputEl.focus(); + inputEl.select(); + } + } }); window.addEventListener('message', (event) => { const msg = event.data; @@ -1115,6 +1164,8 @@ activeToolCards = {}; sessionMessages = []; currentSessionId = null; + currentSessionTitle = ''; + updateSessionIndicator(); tokenStats = { input: 0, output: 0 }; costTotal = 0; startTime = Date.now(); @@ -1125,10 +1176,18 @@ updateContextBar(); // Clear the auto-saved active session vscode.postMessage({ type: 'autoSaveSession', messages: [] }); + // Refresh recent sessions for the newly-visible welcome screen + if (allHistorySessions.length > 0) { + updateWelcomeRecentSessions(allHistorySessions); + } else { + vscode.postMessage({ type: 'getHistory' }); + } break; case 'historyData': - renderHistoryList(msg.sessions || []); + allHistorySessions = msg.sessions || []; + renderHistoryList(allHistorySessions, historyFilterQuery); + updateWelcomeRecentSessions(allHistorySessions); break; case 'sessionData': @@ -1210,9 +1269,57 @@ if (hasKey) { setupGuideEl.style.display = 'none'; welcomeNormalEl.style.display = 'flex'; + // Pre-populate recent sessions if already loaded; otherwise fetch + if (allHistorySessions.length > 0) { + updateWelcomeRecentSessions(allHistorySessions); + } else { + vscode.postMessage({ type: 'getHistory' }); + } } else { setupGuideEl.style.display = 'flex'; welcomeNormalEl.style.display = 'none'; + if (welcomeRecentEl) welcomeRecentEl.style.display = 'none'; + } + } + + /** + * Render the top-3 most recent sessions on the welcome screen so users can + * instantly resume a conversation without opening the history panel. + */ + function updateWelcomeRecentSessions(sessions) { + if (!welcomeRecentEl || !welcomeRecentList) return; + // Only show when the welcome screen is actually visible + if (!welcomeEl || welcomeEl.classList.contains('hidden')) { + welcomeRecentEl.style.display = 'none'; + return; + } + const recent = sessions.slice(0, 3); + if (recent.length === 0) { + welcomeRecentEl.style.display = 'none'; + return; + } + welcomeRecentEl.style.display = ''; + welcomeRecentList.innerHTML = ''; + for (const s of recent) { + const item = document.createElement('button'); + item.className = 'welcome-recent-item'; + + const titleDiv = document.createElement('div'); + titleDiv.className = 'welcome-recent-title'; + titleDiv.textContent = s.title || 'Untitled conversation'; + + const metaDiv = document.createElement('div'); + metaDiv.className = 'welcome-recent-meta'; + const date = new Date(s.createdAt); + const msgCount = s.messageCount || 0; + metaDiv.textContent = `${date.toLocaleDateString()} · ${msgCount} msg${msgCount !== 1 ? 's' : ''}`; + + item.appendChild(titleDiv); + item.appendChild(metaDiv); + item.addEventListener('click', () => { + vscode.postMessage({ type: 'resumeFromHistory', id: s.id }); + }); + welcomeRecentList.appendChild(item); } } @@ -1513,6 +1620,7 @@ // ── Slash command autocomplete ───────────────────────────────────────────── const SLASH_COMMANDS = [ { cmd: '/clear', desc: 'Clear conversation and start fresh' }, + { cmd: '/new', desc: 'Start a new conversation (alias for /clear)' }, { cmd: '/model', desc: 'Switch AI model' }, { cmd: '/export', desc: 'Export conversation as Markdown' }, { cmd: '/help', desc: 'Show keyboard shortcuts' }, @@ -1546,7 +1654,8 @@ function executeSlashCommand(cmd) { switch (cmd) { - case '/clear': newChatBtn && newChatBtn.click(); break; + case '/clear': + case '/new': newChatBtn && newChatBtn.click(); break; case '/model': modelSelect && modelSelect.focus(); break; case '/export': exportBtn && exportBtn.click(); break; case '/pin': contextFiles.filter(f => !f.pinned).forEach(f => togglePinFile(f)); break; @@ -1554,7 +1663,7 @@ addSystemMessage( 'Keyboard shortcuts: Enter=send · Shift+Enter=newline · @=add file · ' + '@codebase=full codebase · /=commands · ↑=recall last message · ' + - 'Ctrl+F=search · Ctrl+K=inline edit · Esc=stop' + 'Ctrl+L=focus input · Ctrl+F=search · Ctrl+K=inline edit · Esc=stop' ); break; } @@ -1649,6 +1758,11 @@ // Track which history session we are editing so we update it (not duplicate it) currentSessionId = sessionId !== undefined ? sessionId : null; + // Derive header title from the first user message in this session + const firstUser = messages.find(m => m.type === 'user'); + currentSessionTitle = firstUser ? firstUser.text.trim().slice(0, SESSION_TITLE_DISPLAY_LENGTH).replace(/\n/g, ' ') : ''; + updateSessionIndicator(); + // Clear current UI state messagesEl.innerHTML = ''; sessionMessages = []; @@ -1685,6 +1799,10 @@ if (historyList) historyList.style.display = ''; if (historyBackBtn) historyBackBtn.style.display = 'none'; if (historyPanelTitle) historyPanelTitle.textContent = 'Chat History'; + if (historySearchBar) historySearchBar.classList.remove('hidden'); + // Reset search when panel opens + if (historySearch) historySearch.value = ''; + historyFilterQuery = ''; vscode.postMessage({ type: 'getHistory' }); } @@ -1692,19 +1810,25 @@ if (historyPanel) historyPanel.classList.remove('visible'); } - function renderHistoryList(sessions) { + function renderHistoryList(sessions, filter) { if (!historyList) return; historyList.innerHTML = ''; - if (sessions.length === 0) { + const lFilter = (filter || '').toLowerCase().trim(); + const displayed = lFilter + ? sessions.filter(s => (s.title || '').toLowerCase().includes(lFilter)) + : sessions; + if (displayed.length === 0) { const empty = document.createElement('div'); empty.className = 'history-empty'; - empty.textContent = 'No saved conversations yet.\nStart a new chat and click "New" to save it to history.'; + empty.textContent = lFilter + ? 'No conversations match your search.' + : 'No saved conversations yet.\nStart a new chat and click "New" to save it to history.'; historyList.appendChild(empty); return; } - for (const session of sessions) { + for (const session of displayed) { const item = document.createElement('div'); - item.className = 'history-item'; + item.className = 'history-item' + (session.id === currentSessionId ? ' active' : ''); const titleEl = document.createElement('div'); titleEl.className = 'history-item-title'; @@ -1820,17 +1944,34 @@ historySessionView.classList.add('visible'); if (historyBackBtn) historyBackBtn.style.display = ''; if (historyPanelTitle) historyPanelTitle.textContent = 'Past Conversation'; + if (historySearchBar) historySearchBar.classList.add('hidden'); historySessionView.scrollTop = 0; } if (historyBtn) historyBtn.addEventListener('click', openHistoryPanel); if (historyCloseBtn) historyCloseBtn.addEventListener('click', closeHistoryPanel); + + // Filter history list as user types + if (historySearch) { + historySearch.addEventListener('input', () => { + historyFilterQuery = historySearch.value.trim(); + renderHistoryList(allHistorySessions, historyFilterQuery); + }); + historySearch.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + historySearch.value = ''; + historyFilterQuery = ''; + renderHistoryList(allHistorySessions, ''); + } + }); + } if (historyBackBtn) { historyBackBtn.addEventListener('click', () => { if (historySessionView) historySessionView.classList.remove('visible'); if (historyList) historyList.style.display = ''; if (historyBackBtn) historyBackBtn.style.display = 'none'; if (historyPanelTitle) historyPanelTitle.textContent = 'Chat History'; + if (historySearchBar) historySearchBar.classList.remove('hidden'); }); } diff --git a/vscode-extension/open-claude-code-1.3.0.vsix b/vscode-extension/open-claude-code-1.3.0.vsix index ff0917cec7b9d654ba69f2d3af136e88226ce0ec..b338ebd2cf2ff06cc2f684a7c07b124ecc7741d6 100644 GIT binary patch delta 41976 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 delta 39875 zcmV)3K+C__$qBl;2@Ft60|XQR00;;GIB&5GUIPL+Z?kLz836+OZI|m?0UVc|O#%?J zvjoQq0wZsed=DyrYmeK=a_IN@6=fqZsj)=OK9ZcsJL@w$o?XvbKjx0cyGgvpxQA>> z?V;E_?51QL?*RMZCZ7TXxmX~`3kSF#?uYz><${8c84IQNU~9O&y#?Dq-%6SY#*^TUfcHOt{S41jn!tWc@`%Ddk0^XM zR(}qPf?J>}9%X#NA}T;GIj}_1Y(hdRM&|V=0qo~O@;Q7@&lZd>;fN$O27f=#1kVOS zu3`#;Mf8khJ*)u$1K0~CTQIqTGm-%dc>?eM`u{*gBNh@#BM4_iLW(VwRgPIWgU2UN zpA7fM~{n!^y>1&?p z*K;ZanIil-$QcDOBN>f=OlcwqXBms86hwZOW;~=qn1Sr``J5z?!V*9W*CQBH342F} z@GV_+71@s|$zV){AqIClGrokeBr+FWMf4L5mJ*-sVta@oO^K3g`k?SNi|H0@54W~L zo(Ktl3!$*N3mN@w&NAwI`ia+jU`o6Lk&6CM3^RKoglU zDgraHr+a^XIzAYW51&6feR?n+?|pMHhF$n{XXn8dcKH71pWgrc6YSx{zS7jHAN|39 z{o5*7=~I#@SQ8K|nZ^`io=gWZTQrs>A`lemfg!yBtB+~MkeyJWsEZ0IKyV0o66RS( zZEQw7@uX(DF(nHcsI?HrM2H$h-)$k&PzcHLQ1Z+Vmr);Rvgnz2_>nUvg41vrA^nBR z=t1KRO&0iuCX41996szqlE-oLRm>89`c*!e&*L-cJ^q3@3tctkW_-#&eid`RN ze9i<7GAekypnk7eQb>{^G48^I#DePA7hCF&dgt2{W)tvh^?Hy|nP*9Nvog!+gDv;; z6=U%WRMNLJJR)+|hnKa*{i<(`K%r$Bjcn-mYj0_?z_;%p2!gWdWYNdp6Xn3y z7$3n)FJ&q9`cVJ-sw#ZZb514@GUB-m1eFI#$Rn0aeJ_`jUwJKv+r@d}dl8Yu>w_Q8 z^5nb+yI(eD+oFp5yP(QGr~^eY4=jdUwpl3L5DRNRaZ>Z}e}0sd@%Hd@k^F4{9ALWzOMa8^FA*SgpQBQ(pdf)OlkV+8*? z5P~z~F%4*z@yz#LHg_t}%<7fb2W-Ji+Um7y#Mn1|%cPD*dG7wvJN$D| z%y;*X-svwFz1Qs?E*$i;5o?4N*+9kXDtbdgwP6%f33NddX^~B~f_M5M?80xx&z}V; z$pqDPAHW5K*wi)Y2F^&N8Xb9k&@I;5X>#0ZPTeSXB3MnJ4u&jGe1pC|@Z><1Xzh4< zd)c*r1#(6c-&dq+7BD}5b~R>AMo+|UrGXN63)XN<3kfPodZ+V!v(- z$8=hQmHk1Gt9Jn|4A|Y>1y4wxdhp|q(0rj6jcWm3iHNJ&w>I@QO{iZkmM>@$`R|JL zoaKqvFIH}CjWrfZMg^@41((o7t!qsn8{+G_IP1boMoF}~24b#%g`7(e)J77t5d~ey zLL7K4PI%EPe{R0Yw8s4uRd8P^;{Su%UlO$n1)i~q+zy77l7*jbIHss_QrwCbG!x4H zQtF{BF$NK(azV^_ifR--(WA-eoT9ocistauB#+}lA%;oD=j!Phow6iB`;TvI5=R-G zvwU8duS|tGo%3ve)eB6E!-B=+b6PNd@jnFl3-g+MPOH5^+zwIdUijIYrh0kD(hz_A z5$-h9O*zZ>QX%y~i%~TZlL<(;L@5SouUpb*NwCbAq`s2f(6XCM*<_{1a~~`<$qaW& zB`|TU+r{0lKEFZ`zjqJrSQB_qR7c^G3)-PeW6>r(w8o2n;Bu;Ns?0fyHQvn@S8D$raY??Fl55K;j!yOuVL1|=N!c_Qgs z*=&I}-@DqB zu@&EJalPvGk3WKE^dP~Lgv!C^gFo@?_EMV7nc6X)YHPLKUj3!lQ|(1`Lh=}oYpiBS zg6tz@;kR@JyX6}2$&#=(;sQa#j7p(dVUq-#QRZu_?(?IAXM2Zb#dggp=hK)vYJT(l`8Q7vYBg)G51t-A zJM11&vS1M-rd=Dx`o*4^bhFuK-yJ?W+-r^3Y8Xv!yYSBJIY^*3E_&dG80^+iR#h$` zr>Mw(1u{i-WwEMe3AwUn6J)ApS*)sA!lta*oVKc27SlEB6MOpn(ZLg_eRlO?sY>rZ z*?aNm;B^1_ql43ByUghED;)? zpYHUk#>~u49v?pY_VC#^rt@`;>1m(LSaQyPl4-RN)qc{eGnr-N;xOg6uX!BNOgs!; z?!0;!&_-mQ9zo5x+9oKd{OL#;X0mh?+H4SljSAc(h*}%N9ql zA7dxnGG`PWV{#lyND{%Q-J#gGJ!XQydrKzY^x8)xe;tMBc3nPFRHEF-J+G%()-o~k2j9A-^y zq6s;R={U?-D#b{hU(}6|F%L<6Oa;%gkREf6rCzpVX+z&HGNukCk%0Xg27+?Gd6BU` zcyk&t;`Qo%*(VQ|%x5O&aj6qcseCLy=keD(GXV4*ReF~}D0#%9V;WMnpii~*-_Wq; zVrp6ZW=d5t9TpX^NPSL7S@kD%xQP5rDCldC0`sZM<0%)D&>1a%b78FA=8OoviNh}3 zx#PD=!EK5|_UAIu=+a7!4Ss_fjg5Vi8cp%&(i#mBprb~&B-JYJz}#?H+HFX(G7bf$ z1*P&zIHMCRgXWi*2npYfwev?t)t1*m5q1BB-Nss+#{7)L=#E0&c(-eJlbtU1w6GxT zf?x0U-aXjMGO`MPm{5P~uY<}GbnhOxUj;Eurg8>f!cH5g_<7h-5k?(`74+?h1y|rJ z;93Cv@R4yakSxh*RM|$fZ-*+Ip}$nk$z!z%3JxPDc%Y4f(V=Xoq) zQae#ZU8i~|rjDGNoLhnGZe|3VD{$^sq$OyM;Le@PL{WEtDd7LOmeaR3KJf zzUp0i*mRW{p%KtI7rg~(UXVYaYg-&fkKS6iIV>%Hx0CR|LdYuqn zXIRmrHqXs}L0OlT^=g80y>4A#ZoRK9`eK0_mZ5wQY1BSEx)Owx7T^StOHt4+K-cX| zGntPiCTSEJcA~ktUmeOI{o(h1(OIqi6Ov7-48Bo&X2)6a#^h5wmn-`1q9!NCRgL`_ zNv6ot3;tcUbt4ME7JgZrG&YS2IXA@(8utwjO0)fcgN9xB1}x9sxqev)I`+vv+_{5r z)H-lbk&pTnH7i*p|RBCGDTCybK z%RtQd5?%8jF%t7>hYTK)WK3fk%BLh*jkICSEnnhNe?rcXk$ZblgkI-H2670>E}F&l zq=tL%o*MScomX9gVh#UMgfKYa#u(t6y2dnrd#geriK6{Vu3IbWqR)SC{XolN*QWrK zDaVv#;cN{J;5m6LD>5j~(y^M7Pt{0%o6~I7Ns`^Xsv5$v?#Jr`J`d`aG|4WP%;_gCQ~--EDOraP?ia_)huQq^>_O4tDRnu(KIF@^@l$s!)YHp za9Dtf&j`F1iRw72`RjP@ffkSr@$vzw#=ebt#dsC!5xsYb6CzW!nGI<6L3b+B@s)}wyLond8QSEJVmL-7|Wu*#nD95zO2k2$Ep*jll5j`iTViWFlz>B*FkGDOJQW?b%^8YUT>1|NHGKnDa))I4pUZWILl`0H>QaX!$Y;?B3epL|@ zY%#MbQeH`Xgj*3Ip-YT}4p@nrt7yG^jQ9oi@|E!S_-kGnY9@1tbbb!ADTLE zNBOxCRsMgc)R0{A@g?S|;Si3r8;nu}imVTI8jeDM6dafYk!K6GprYv`BiiE4a0vTE z9b}%ZYHEfSoah1#dYEwrmq&yRr92T7e2fCs!9Nb6=@txXYG5f4iK#&G!;?-|ui{hs4Qb0;`G2$UBI+I(T8KBY z?>ToJps}DE95dVi`Z)X#pkrUccCHdoSsjL!A(gHs%P7lsc;!`MDXq^fFdLQepxgYb z-Po+Cs^S#H3Qp<{UDQRb>Om0!YAa_Qag8R`f=@GNW{YwHog0|RWKm_U@V+Jt`Mu;u z`z;_m0uSy3W(je{$$!^Ib&GUJ-=;jnBme3IV6EGL)LAJk@x4gr)_Lxv>l%-{XJn4} z^K6nH;Kb25fU92}861wE7pDf6Ua+I0Cxdz9IHag`@*-oEZv*-Csm9b`>AqT)kHfrFc*;G;Pw&aiQ zoxw5lYKBT&vIdR6Z&~G@QhCIZges2)@sT4%Qq?p1qSsutt?~4XM{uEpr`;J6biyPP zY&SulV(K{A{Y&)!z6|}Z+-#`uyHPn23@n*GvlEq5P8XXp71CVH)_L$i zr+280Wz*XAycutBK$HB!=)2m=O-tKZ2e3adpf3ljk$*;)Rdt2!SwRFv0D%=efIGg> z+*}0@w11*Yosq9)8MJ(&qNaO5gM{wGDxyxT-_TGN-Kx%t?WA&5F{)G?t09@7<}sCi zbF>D9)vWbVjh+B5y5jp9?M`>L6xRyJuA>TjUpf;(T1g`_IzdyC3(W0dkuyBnF(q%La$E05VAt z9!0ax%#59icT?e;hyXpPkwDbsCuu1$uRBM{XzW5i5yvzpDF3L)tYpHjt`Dn*=ttw5+p^T+bq+{rc4a zE;om)@upEJ5}W1QnJvq&4jWOP_!VyY-D$e2fN+b8w-XmT2i#2iSWDe%rK_s7yeXX9 zKyd9`T`>W;VC}xHsXD4jxOK+1M*Tg>Fn?63)TW>D;!MD3X*vx((VLrc5D1#Y-<`hH z#GUJw@Q<&QzprwJJ5UE^&DaB>9O#uVjyRa7a^+gfR&%9`LbJZU-=Mi-yEI6X4Veh} z1T!M!8VjwB4{RkiqW86!MxkxsV$H?J}-$k^>EKQqe(bZM9LGT;EMnc9Bk6r%)GN- zTus5cOgx?DgnELB=HhF_z37;iGTx=V3{{4e;{6Ffc#9}(MaSGMeB|=5ky^Njx(-5} zNHC!mXhZ)k&4)Pnhwu(w79-XH-hZfcyc)qv`c}Sz3m5?&5l&cQpJ!b(1kyWdZkWff z3^pm&e**}SN>kTiAjEkf^Lk{kR)n9lKv}ZCE@0MLiFnu|*E;(->&XAD<^5v}8mq4~ z^{8#Bj(CWBfLerm(%*5|2^vN4XK6Jv>%DGjZmdCiRa3)4& zX|Iw*A2rk$Xj$BnfY!#vRK_`NhbbE9>-I04qqGBaR8UTPbSaUNX6SROqjnyG?`>}n zw~?plC-=eI_Ienpp`LHFt}CNAOSInXn~wUbnS@95bk3tZree6g?e(GNY-J2&*t9ZD z`FYRbQ=$!3#iwE8E-c)25`WaND?UY`dYQ~p2}YOd433U28eFzJPf;5kp%D7isL0zx zgsJl)WAznx&D=|U@X!Sz2=PjrvcVRQdGoQx@uo41#yBLMr!kQV*tPp_I=awnqR|It zjk32{)Iv-qsis0{_h+e=%{9%F5Eu27CKP=^p5br51;kLKs2bP6b${0wcm^U1!Ap2T zy}NY+ysJ*U)%&|}zr;W&(y_|M1^3}D8r}q%&;d(Oc4{}Fa!Zwcgmi#S>0#f8yRGtU zKE0$vyyam8GbvLsYSy0cM0QuN3coU{;sdC`)Sv?Y)Y>gsz4yhP!C-%Ubb9n;Z~x%& z^CyoEjt7G;5x-x|sedGDSOdIsX|a3PaLU1$hIz*1YH-A37Ow6V`uOf$CEtk@IosVY z8^LMKKF6mojt_NTdTm;fWF0k!So1eUMf41Qvsp#&3yn4qS*S;;SD_v!PS(6vc+@2d zlzMmFwQM*Wwu*2r7}UkqmOI;CfH*u+?$bruo6=1X%VFkAD}Os{Z5bG@hO5kE;j1U$ zOt}#3O!?n>dtdE8I{5mV$A`c9_Q}&{&yW7s@%ZG$ci;c{U;HIG3nMz2&e)stc%Ja| zx0#UnV)=IUyPZ!y{p|BU{*yob)t{MWm9YuCV=7??F!%yK`}6^@`}b>BP8`hr-Lik2 zOtvTer^r+$F@NWo{+f{_;&ZQFqvaXTFc1yhAfCi z?FhU#Xk*5mzkH$sVbhhIDesIF{WGx!mL&^f3Aj@}0&mK_K4iJTni;-jhl4rR zS8w^|3a&mBJ5V35PNZbs*LMNd@qJqvhm~y4dHh^u&uL_@t-tho>ZHRq;-ji!#$8Cl zIyOS*0)J|z7rcHBAPtGqBggmt^Y?%McmMHke_PxN2%*l;6W|qqnTppTFv+Nx)jTt5 zMitwja&gIgii}-N;YvN<%ckanKCG82yISkYCZ*LC#hW&k*7RPOi-63PjWE=yXTDH> z1}Kky`5FzW2X6^_(2CIy$pBura*4gRAM-R9t$&9z!p`%-=Yv0fy}7;V`uTW@>90ZT z`+xo`7^^y%A5P6$a(IoKPzmh&;Jv;Kl}42iG&9Q2dK77;yDE)YQ(9v?iYcB@(nN)R z6?R@6Nil+=cc)RhZjj!{7~N%vZiDS#{suO*HX9rKQ*w^?b!HS+Jck)k4$2aLWa>iB zbAP(hx0<3m<@Wa4n>)9+!7P`{(1L(TX@XI6C-sfIWQ~(J7c;HDH~5ED(S;xT^@DaV z4J)zJFm6#mhhb6`%_!?xK$Gr`+PgP#bvD|2M2uIzGuB3L! z(#F?ySZmM6S-=Rk88sQ2jihh)WVw)jzS9+2R$M5UC;CF;j+V;9yw7)b;30VLe}DRa z9$IL+(q=Rn&=1M$*RQpqyBPC*t5?NzbcyRaixi2D=Bc)*Igqm!sE#3j3Ge^+za!xk z=aHs$8iAi;-tdZqLUk5#AH1G>3Y`OpP zIE#6BuETAx%aPtQEBaTvrW*TIz<;gJG)E2Cx`u)~(Dt^vU1qesZ9&fLJH0jBL!Ic2 znizDIFML@#d{+wHv_=Ru`Cpv{YB${>M3huNfAPCkS~^3yC7MyvW_o(ZohfB@dR1UJ zgt1PyU&ddVyUfwd*0?5xE<5t%m)(|{Lp$NPc48>;Q9nV*=oE7;XI57FvVZLwdM~jY z)Qv>;`0H=p6|;S=2RG6#l7tn2`hG@}$1I9yqBGUQg|#TOEu~k1a9`g6@3>0cHbGeL zOSMefMOEk_He%_We*Nn1ep@3n(6-tQ@P2w@wshG@FSCwf^*}79-sOn2dbI&zPCKqj z2IVP9K?vnBNh3N*P-#+p_kYcagWq|Qbgr_ocO6(AVq(~@_*;ips}}#!cV7weHHjDP z0DHyVDd3Cq0ZHT_2!dW;ozd?ds)zUhc%~AIb2+0KHmV5G;T(%Q$&zQ0>rw>u9!+(R zmAe>PIdqpKWjmi?KiG}#5x*r1k}~|^=x0G#v zsNJvel+(8_Q zScJ0lRPl@5T;eh_MHl^DmWR3xy~C|{t^Eb}1ns$igV_Ls*9sP0rGn_0s3%TI(dC4F;o`G}cW&h&TRw8~W%ZIq#(!$w6^`0+8it3J#S=zVw@&6? zxQ@15*gAbo>#c0&fVUA>fenS`ZVAsRUze8y74&FS`i{s+8|vM$l?aK>`*_9$#7A(a zg`LZTD?68|%GIIrU7C%0Iim?~KzPO~P&G`Z^vYJD%0U&c%F~w!)WtC0b=kN&!U)J@ zLPIGo5k}iwSiF%o=mL@Lp;6irT^9;(*x$w0mUdwbboL5$%VKH$>sx)G55#`~P)i30 z%?GnPy&wPpUy%R+P)h>@6aWYa2mt$SvoSHa0s{MOlj}1sf7>{g@AVY~3fZL6mLvIA zRSp{1PG%b2!1SWg>Dk3T(h_ZRN)|ODU6(Et(C_ow*bnS4S@0^7B4ycCNhXCFDS&{qqX8`PAv%%F8r2In- zi$b(X-=965oh=(enCPD*tIZOaKew=XlO(q^Ck09YA>_iP#5qgp42teLHt@gJ*eQs7;8odu$KgKLIK^}XHwYR-S`?z_DJkk=hkxGGWM z^qoWgqx!-;M->ZgbWQR-{h;@mrk60!oleP?+@fZAo}p`mQu$_2IdZ7e?n3;(VTlXK zcaz|1lb1DGe?OEYzv;ntnm42@S5V-dODX!zrxFViw8xlD_>UT+fd$^Hg@Z+XZ$C{+ zvAQhPkJqGPV%?ny4cb;LS;HMJA4cHyM@Vy6U?`Z<>k)YUJ#Ng0kEEicgmeUUq$0G2 zx!#r-WRC-YafVM|U6&}K50s(Z2z)4Ub@LOGo#f;OrDdHH2N7oZSmCFoqnf4(Y}`JwO;ZE;&q8Dl$ceG=VH_z)Zr&lRwLgAZiSUP6AJ!@3qoRA5?{@L>to zB@!gY|4j;mtM36NB`!3oi`N%1Ixuqj!t9%F8(iHe1!0FP zgUz!EpYiET?;~NDl}PNyB8qGx*Cig^sjiDOjT7A67BiFx*0Tf^xoco8CyDya!YD8zuyhMCu(vtBOoCF>As-4fIU>yt94Gp+A6 z3->5V4kSPM%p}WX7qJ8^@eY zpnpjR5WYv`x@6#-@TGi4_Kb^Hj>#43Y-TC6UoM6Mh$_`zaj3dePWBb!%)^?Te;+}B z>a_$5k&|GN3aMwDQ3KIMock(>Rivo<)NAsQ-iu567fJ0f^OG>yxC6^i@%JbSPo!Dh*TEghv4U%#8X+(59XXZ67 z%iwh+JYGQimKWCxpP&R^;hGN}S-r#qA>Jk1;d6O7(~y#Okw!c{8ecw)0L&abVStk)t=`N?gtlpuB>rI$E`j z3!9ZVueLGq+C^&*P^|_=_!Wmes4JHyYJ1Am-5y*~QtlaYMinL|Ff$ zrD~Osq5pl8%+psFF+||Q#c{#B^?;-1>o<>h5aWB%uyTPHL#1WDMdH@;4G7>wcXG`O zB3C=}`pDUwV|({jiLeB4;D7|kvjE?MX$lgM@m~}0Ey%7$V6|u92BBK;!gWJ-QhNrd z*q~*nJ!d`o$a7fce{VdB1xes=LJu{1bfnbzdcBTrUvSyv7E`<`Q5fV0)x)-p%gMNj zgDJjystAmlRWz$A&>HSbCUhBhvN6m#?^JXbMhPPyenOPO4Wg~0vC~gHO-yT1$-@%B zJtNMud)r`Zgkm-DcZ9I5f8NCZpfV>r#7(mZRbm5o z>d}#=!H7Kh$DT60en<=llY)W4hP`(IBv!4>XMHDYUohK=TBt2J)I8m_h5D1(;aGwk zJhs~u`UPm4fbGP)BG1EDWMLR{jeheqb%v_Fk;GlcvzIU4+p5jvDsAsWfBy0NpMU%g z{);p_SOPt$e|l=2TT;mukEfiLJOhPsTER-Cf<2~)?dzl@8{+O{Dt00rt40;pcSpS{ zhHIK^8eF(|#h-|Y8(bs|?P@NC61h&g1lhXbe|=rtS(&2^PE(}~+7rjMUdLMW0`?u} zl5k~Nf)DX6ZCE|(W-?b>Ww=gm(8CKU_W}2ZLte_{e;B^&#=J+|qt$bDh%oDb5~+_B z-NRj7qR4&j0B@WPL?az8Ak6_Y53|$~A|h(QZ%$)0GY7`z5E~uWNx5;kk5nAmUuh7~ia*)nlHga2;6765kg;kKuqbf6dLR_%ebd)lXhZj7U2DxgodW4kDBd zPOG(g@teJ+2cgn?;P!5s>Uf)0^J{4MQJTU;@Jr~}S3?XKYx9SWr2 ze>Z+cDqEn)7ZIh#)_?_iaW!cPw6YYVY%y@i!S*F>zd`GHh?@m4F%}UJ^X{7+x4yML zTX4)m+>SG@8@z)}Ou-&%N%DkVXoendpdG>3ap4D>a3i;zp(3m+p#~_ZK?(9jnA1Yv zpPrmOaQ@$JWUzp+{YxDXNW%Q9ROUh5e~?|xD0s6XY-_IB{{h4zE(ED+yp%PX7SdCp37S(7E#RBzCdM(Yl@|eaKU;4?K*yO+d2n+;cB~a*zD-$q+8=e zYtgOmN!^-Yg?CC!u3>?GtR!#%f)piWFI4KY|GYsD>jv%+)r|xqb3^Z=?E{Gzf97XA z1Qa|8BfhxNm@ZkYODZ~WHo&+14Uju`^xZ{!!TCEyjfRhiiWcpY9b!$vhVJmfi3XW9*O_QO*ZN;F7z)M(fBWLpuYi?ro1W^ny5WXbjq&C(uY=hmxL2CQA2 zGyH-!s6q{7NU5xVQ~*+nDT5UQ#^a%xN5k8H^_Z>`Vo;|J7^HJ;awHY|fA^n`xa=Ar zBBX90Y}301+YrH<*Tdq<`hr@cydp%~DvKsU+MU?1>E|NwAQ2wH!$?yks|LZFB@q84 z{7Fa2sT-6S8}$(GU^Cb+Csrl(erE_((`QS%;^V1d`7YDY_fA_ldlSK1$W+Xp78X~o zK~aCU5sX60GREjZo5ULgcRV^u@?vSo&<_*EpslpbHjL%Z|NGZ# zPjg=J)G3frAZ(GSDgdt5xWY2HB?cBttCj;ig7nphD5Y+ix`W8qETYYIC`eA^mBm#lG}*P09f7YA)c8I$vI-OQL`{JK_ZE{f@N$zYK*LFP+L|MMR%j=ylg236@_SII~ z92niK$G!@VO<6;#jm8JtLld)`+P%@vU=k<0CBO`pIFCEzy#9=*2Ybfj64n%n`?~mF z;5OnxE8wf~r`dX#$_fXfJT%c2w ztD(lkAz|mi6f4`8rIuO3Y7?^%AMcFwgS9O4R7vholS4_QCi=^)GNv zxK<8YW#@dpxXz1(ke$2*WewNT?G}p7>J~ZK?U3|of9e(sczr#ezYof4)vMa?R;Y2t zUCna@+i}w+;`Akg>*V;f=wqFZbR$vc>h{+O)WZ4VDT_U<`iPzYV+7^N?uK-sT<|mZ^6pmDI zta3Vuz+Gj~WG0iN=kt;Nn~u||GMS43MCd^vvR6+a@Ba~hA?Q208*3wj>PAQOpC zj`dP7$K%2j6kN9Gw(0EbKxZ4`M&`?`4PXO&e~j*HSQV%M{$!S>&=3Y0dUKr?Xk!Ch zoS3PA;)ZVfE@UAzt{f>Hy!-fc5|S^rReqB8S>@yVY?t0HT!<8Fe+{Dhk{z$IAN2l4 zO_)7a9)(*qt}365RX&+qzH7?i?Lj)eqRM#ZSaJd!!!qKCu8-Wu8A68XLSutwmpVUB ze_wlaF2{)s^9WuUN{e-t@M6r*x<>|h-+(d*$7Rk0n5nSe;Z}f`6$b#L;ObF+eTYWts7w!!cQv-UsoSk zV{RVKx45Rt3L$gf<@0zbi5s8STlqxY3L?4Sd@?@$$(2?P7GijY+fLu594z6~Z#iKP zF#!9j*iF#$fS`QPK2Etd&XXfO+tD>OCF*vdupF z$7)@#9|XFqg@3VJ?08sRfzkvMync zwxle&)a6HFYZB_SHufW(7J~tff2}IDe#P(?N6C%L$!FJEi~7r-EGQhZT{Q+%(I91eiFylEzRnZgj-ia~m(1cD)>H~714$Lv7PeLx;h>*@`U9v%U!Q4mSaFX04EVC#M4f{CZZP)j|LpHHpNbz1b3iN)pR5OKx6TvoIj zsWH@KW91*nI*SZ43O+bx7Wt#oN}XxIIkg1EWy6&ZU$55LnD0)kzKevRoymPob(XK` zJT7?McBgKziK*ou0#RXoe^to3gO7Rb%pl8ai)wZ|$$N09m#6K^j=hDbzS}dB6P_T! z5GWc_i^wH|CeVHzFM^~!#-d^jkBtD|0FhW=YRL$O(^zGfzDR0I$g}WUf~!IRB2`{| zjyf4-y$WaF7igu)fig|d7Bp>-`Qw&m86vUoGO0FUjENrA-nj5n#T z>on4JCc0Yg2D3~Kj`YrBWzKcZ(W^b6Dz-$Q>?<5;?l?U+{Vj!~)-lpd?;_6P6ck z8fSsm>qIm-)m0jb{u!>Rg#5zux%^s$XU0uF*}Llxi!wouz8|U`MZ|_WBEtA=ZJJO= z6CVc_g^X=E%no|+Sq#;n9pNSR0-+YpRlGZvqd9k?f3n4ivTZ~5o2|pBuiClMKliW% zL6t)X9CIZ60aHer2Oty`Z7Ae;x0NsSwIyJ}7S;HzRzss2K|r+$WeAz-c>|Nu)P1;J zkY-QeMf$wTX(jWP>??|SF9-PQd4DI=a*u!agbTZNhtDb7ZiXumzmLS_K+GrfUCR%x z8=#2Xf0Pg13*Z{xBVo9XmB4kbQ1Y9|%;jt16<#`^Cii4ewTGn49`=%Zm0i1G(ng|u zsj^yu5^0*>U#YLbIl?6t{Kgz-hbM%Mcu}&heP=+Jczc0$k3|=^>bQMEk!hCI!WqK^ ziyWwi8rp8)#vpI`l6uvp}(MwT{0}mN&WEEFSjQYwMlzS3olpIW_ShfXla`kz@f@E z`t9dVg|z1y=cLBnFH&snS?)UjA5cpN2!S$6(i0c}06={J08mQ<1QY-W2nYcC0d12^ zO)Y<4ZzH*pf1giLVe&A8xLaz;_IM4cv0jgN#<$}cW9&_^PYbHMq-I2seI)fSPxFw+ z0}e?xizEoJ2@ouB2i(I2$lHAye}er82a?@VxBgl7&fEcp-Axv&i$4~NRmF1WCokTf z-+py{0ht-`_({k90ZzrBOHdHofHaMt0CaywXecBZRT@o~e0lqMa6*^3VD}kGv}x?L_;7`*zXe0^5*L=-(3blY^Q(I z@bl^PWIB(ZbW%0}mUaova}qx(gn(B_Q&doVy`;%ps}mKVqjM@M&4Ck$#CL!B9%_PG zx?)J3QJ{00Sbm*G$|eO#Z)}VdkZ`K?g0N=<@dKGQQq6sX`(T%xXVgH^QOIVcn+(7% z#%FTYB~55TbPUlkfj;BBON10iKpTH0hu9^_SSb|dTym+(R=-kR5`{+#rU0FUse~gW zvo1Lykj&j5)g{NIQK8BupK~S
    <0zU2<}81Sbb45H$~?=90A2(33&=^2$%a!_e?J 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࣍sIa>LV)u87%0FKbxX5{zW9R!mfF<-2Y^su5B8vL?Tb_k%i7bE4 zbd6>LWIzux5Zxl*MuiYvV1DF{3(QFtEq$k%^BkCc3NjVgBDzeAieeEJSC|`}Qk*M@ zkB5T-M!UiSD42tSs^Y&vT4b9X%!o|8{#s@z?Jh^5!50;Bqf>VSpxGV@D6$WfAPjt8 wAxHCN&b#>#nBaR@3`THEG*y57@}Unia+?^^03i$p2mZ~2uM9eRAX&`+0PSFt8~^|S From 278aa8402f5f47ffe6dbebec1a5ed1321b7da04c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 14:28:45 +0000 Subject: [PATCH 33/79] feat: line numbers, word-wrap toggle, timestamps, streaming speed, add-active-file, template slash commands, msg count, char counter Agent-Logs-Url: https://github.com/codomium/CODE/sessions/03a1c651-e118-43c3-8701-7e35e840a86a Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 17 +++ vscode-extension/media/chat.css | 70 ++++++++- vscode-extension/media/chat.html | 11 ++ vscode-extension/media/chat.js | 144 +++++++++++++++++-- vscode-extension/open-claude-code-1.3.0.vsix | Bin 156888 -> 54736 bytes 5 files changed, 231 insertions(+), 11 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 5079877..a03686b 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -579,6 +579,23 @@ class ClaudeCodeViewProvider { break; } + case 'addActiveFile': { + // Add the currently active editor file to the webview context chips. + const editor = vscode.window.activeTextEditor; + if (editor) { + const filePath = editor.document.fileName; + const fileName = path.basename(filePath); + this.postMessage({ + type: 'fileContent', + name: fileName, + path: filePath, + }); + } else { + vscode.window.showInformationMessage('No active editor — open a file first.'); + } + break; + } + default: break; } diff --git a/vscode-extension/media/chat.css b/vscode-extension/media/chat.css index 34c71e7..99b24b8 100644 --- a/vscode-extension/media/chat.css +++ b/vscode-extension/media/chat.css @@ -604,6 +604,35 @@ select:focus { border-color: var(--accent); } .msg-user:hover .msg-edit-btn { opacity: 1; } .msg-edit-btn:hover { color: var(--accent); } +/* User message copy button */ +.msg-user-copy-btn { + background: transparent; + border: none; + cursor: pointer; + color: var(--text-muted); + font-size: 11px; + padding: 0 2px; + border-radius: 3px; + opacity: 0; + transition: opacity 0.15s, color 0.1s; + line-height: 1; +} +.msg-user:hover .msg-user-copy-btn { opacity: 1; } +.msg-user-copy-btn:hover { color: var(--success); } + +/* Message timestamp */ +.msg-time { + font-size: 10px; + color: var(--text-muted); + opacity: 0; + transition: opacity 0.15s; + white-space: nowrap; + user-select: none; + margin-left: 2px; +} +.msg:hover .msg-time { opacity: 1; } +.msg-assistant .msg-header .msg-time { margin-left: auto; } + .msg-user-edit-area { align-self: flex-end; max-width: 92%; @@ -821,12 +850,44 @@ select:focus { border-color: var(--accent); } .code-block pre { margin: 0; - padding: 10px 12px; + padding: 10px 12px 10px 3.6em; overflow-x: auto; font-family: var(--font-code); font-size: 12px; line-height: 1.6; color: var(--text); + counter-reset: lines; +} + +/* Word-wrap mode */ +.code-block pre.wrapped { + white-space: pre-wrap; + word-break: break-all; +} + +/* Line number spans */ +.code-block .line { + display: block; + counter-increment: lines; + position: relative; +} +.code-block .line::before { + content: counter(lines); + position: absolute; + left: -3.2em; + width: 2.6em; + text-align: right; + color: var(--text-muted); + opacity: 0.35; + user-select: none; + pointer-events: none; + font-size: 0.9em; +} + +/* Wrap button active state */ +.code-btn.wrap-btn.active { + color: var(--accent); + border-color: rgba(0,122,204,0.4); } .code-block code { @@ -1111,6 +1172,13 @@ select:focus { border-color: var(--accent); } font-family: var(--font-code); font-size: 10px; } +.char-count-hint { + margin-left: auto; + font-size: 10px; + color: var(--text-muted); + transition: color 0.15s; +} +.char-count-hint.warn { color: var(--warning); } /* ---- Stats Bar ---- */ #stats-bar { diff --git a/vscode-extension/media/chat.html b/vscode-extension/media/chat.html index 9c415fb..5cf54e9 100644 --- a/vscode-extension/media/chat.html +++ b/vscode-extension/media/chat.html @@ -233,6 +233,14 @@

    Claude Code

    +
    @@ -256,7 +265,9 @@

    Claude Code

    🪙 0 tk $0.0000 + 💬 0
    + 0s diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 535dc69..06025e2 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -36,10 +36,25 @@ let currentSessionTitle = ''; // first-message snippet shown in header let allHistorySessions = []; // full session list for filtering + welcome screen let historyFilterQuery = ''; // active search filter in history panel + let streamStartTime = 0; // timestamp when first stream token arrived + let streamOutputChars = 0; // approx output chars during current stream (for t/s) + let lastStreamTps = 0; // final t/s from last completed stream /** Max characters shown in the header session-title indicator */ const SESSION_TITLE_DISPLAY_LENGTH = 55; + /** Rough approximation: characters per token for streaming speed calculation */ + const CHARS_PER_TOKEN_ESTIMATE = 4; + + /** Minimum input characters before the char-count hint is shown */ + const CHAR_COUNT_MIN_DISPLAY = 50; + + /** Input characters at which the count turns warning color */ + const CHAR_COUNT_WARNING_THRESHOLD = 3000; + + /** Interval (approx chars) between loading-text speed updates during streaming */ + const STREAM_UPDATE_THROTTLE_CHARS = 80; + // ── DOM refs ───────────────────────────────────────────────────────────── const messagesEl = document.getElementById('messages'); const welcomeEl = document.getElementById('welcome'); @@ -92,6 +107,11 @@ const historySearchBar = document.getElementById('history-search-bar'); const welcomeRecentEl = document.getElementById('welcome-recent'); const welcomeRecentList = document.getElementById('welcome-recent-list'); + const activeFileBtn = document.getElementById('active-file-btn'); + const statsSpeedItem = document.getElementById('stats-speed-item'); + const statsSpeedEl = document.getElementById('stats-speed'); + const statsMsgsEl = document.getElementById('stats-msgs'); + const charCountEl = document.getElementById('char-count'); /** Models that support NVIDIA thinking mode toggle */ const THINKING_CAPABLE_MODELS = new Set([ @@ -415,16 +435,23 @@ const runBtnHtml = isRunnable ? `` : ''; - // Use data-block-id for event delegation; no inline onclick + + // Wrap each line in a for CSS line numbers + const rawLines = highlighted.split('\n'); + // Remove a single trailing empty line artifact from split + if (rawLines.length > 1 && rawLines[rawLines.length - 1] === '') rawLines.pop(); + const numberedCode = rawLines.map(l => `${l}`).join('\n'); + return `
    ${escapeHtml(displayLang)}
    - ${runBtnHtml} + ${runBtnHtml} +
    -
    ${highlighted}
    +
    ${numberedCode}
    `; } @@ -455,6 +482,14 @@ vscode.postMessage({ type: 'runInTerminal', code: entry.code }); btn.textContent = '✓ Sent'; setTimeout(() => { btn.textContent = '▷ Run'; }, 1500); + } else if (action === 'wrap') { + const block = document.getElementById(blockId); + if (!block) return; + const pre = block.querySelector('pre'); + if (!pre) return; + const isWrapped = pre.classList.toggle('wrapped'); + btn.classList.toggle('active', isWrapped); + btn.title = isWrapped ? 'Word wrap: on (click to disable)' : 'Toggle word wrap'; } }); @@ -643,6 +678,22 @@ editBtn.addEventListener('click', () => editUserMessage(div, text)); meta.appendChild(editBtn); + const copyUserBtn = document.createElement('button'); + copyUserBtn.className = 'msg-user-copy-btn'; + copyUserBtn.title = 'Copy message'; + copyUserBtn.textContent = '⎘'; + copyUserBtn.addEventListener('click', () => { + vscode.postMessage({ type: 'copyToClipboard', text }); + copyUserBtn.textContent = '✓'; + setTimeout(() => { copyUserBtn.textContent = '⎘'; }, 1500); + }); + meta.appendChild(copyUserBtn); + + const timeSpan = document.createElement('span'); + timeSpan.className = 'msg-time'; + timeSpan.textContent = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); + meta.appendChild(timeSpan); + const bubble = document.createElement('div'); bubble.className = 'msg-bubble'; bubble.textContent = text; // safe — textContent @@ -659,10 +710,12 @@ const div = document.createElement('div'); div.className = 'msg msg-assistant'; div._regenPrompt = lastUserMessage; // capture for regenerate + const ts = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); div.innerHTML = `
    Claude + ${escapeHtml(ts)}
    `; @@ -676,6 +729,17 @@ const el = getOrCreateAssistantMessage(); // Accumulate raw text on element, re-render markdown periodically el._rawText = (el._rawText || '') + text; + + // Track streaming speed + if (!streamStartTime) streamStartTime = Date.now(); + streamOutputChars += text.length; + // Update loading label roughly every STREAM_UPDATE_THROTTLE_CHARS to avoid too many DOM writes + if (streamOutputChars % STREAM_UPDATE_THROTTLE_CHARS < text.length) { + const elapsed = (Date.now() - streamStartTime) / 1000; + const tps = elapsed > 0.5 ? Math.round(streamOutputChars / CHARS_PER_TOKEN_ESTIMATE / elapsed) : 0; + if (tps > 0) setLoading(true, `Generating… (${tps} t/s)`); + } + // Throttle rendering to avoid layout thrashing if (!el._renderPending) { el._renderPending = true; @@ -691,6 +755,19 @@ } function finalizeAssistantMessage(content) { + // Compute and record final streaming speed + if (streamStartTime && streamOutputChars > 0) { + const elapsed = (Date.now() - streamStartTime) / 1000; + lastStreamTps = elapsed > 0.1 ? Math.round(streamOutputChars / CHARS_PER_TOKEN_ESTIMATE / elapsed) : 0; + } + streamStartTime = 0; + streamOutputChars = 0; + // Show speed in stats bar + if (statsSpeedItem && statsSpeedEl && lastStreamTps > 0) { + statsSpeedEl.textContent = lastStreamTps; + statsSpeedItem.style.display = ''; + } + if (currentStreamMsg) { const raw = currentStreamMsg._rawText || content || ''; currentStreamMsg.innerHTML = raw ? renderMarkdown(raw) : ''; @@ -1169,6 +1246,10 @@ tokenStats = { input: 0, output: 0 }; costTotal = 0; startTime = Date.now(); + streamStartTime = 0; + streamOutputChars = 0; + lastStreamTps = 0; + if (statsSpeedItem) statsSpeedItem.style.display = 'none'; // Restore pinned files into context contextFiles = pinnedFiles.map(f => ({ ...f, pinned: true })); renderContextFiles(); @@ -1388,6 +1469,10 @@ ? `$${costTotal.toFixed(4)}` : `$${costTotal.toFixed(3)}`; } + if (statsMsgsEl) { + const msgs = Math.floor(sessionMessages.length / 2); // count exchanges + statsMsgsEl.textContent = msgs > 0 ? String(msgs) : '0'; + } } // ── Context files ───────────────────────────────────────────────────────── @@ -1458,6 +1543,18 @@ inputEl.style.height = 'auto'; inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + // Character count hint + if (charCountEl) { + const len = inputEl.value.length; + if (len > CHAR_COUNT_MIN_DISPLAY) { + charCountEl.textContent = len >= 1000 ? `${(len/1000).toFixed(1)}k chars` : `${len} chars`; + charCountEl.classList.toggle('warn', len > CHAR_COUNT_WARNING_THRESHOLD); + } else { + charCountEl.textContent = ''; + charCountEl.classList.remove('warn'); + } + } + const val = inputEl.value; const cursorPos = inputEl.selectionStart; const before = val.slice(0, cursorPos); @@ -1619,12 +1716,20 @@ // ── Slash command autocomplete ───────────────────────────────────────────── const SLASH_COMMANDS = [ - { cmd: '/clear', desc: 'Clear conversation and start fresh' }, - { cmd: '/new', desc: 'Start a new conversation (alias for /clear)' }, - { cmd: '/model', desc: 'Switch AI model' }, - { cmd: '/export', desc: 'Export conversation as Markdown' }, - { cmd: '/help', desc: 'Show keyboard shortcuts' }, - { cmd: '/pin', desc: 'Pin all current context files to every session' }, + { cmd: '/clear', desc: 'Clear conversation and start fresh' }, + { cmd: '/new', desc: 'Start a new conversation (alias for /clear)' }, + { cmd: '/model', desc: 'Switch AI model' }, + { cmd: '/export', desc: 'Export conversation as Markdown' }, + { cmd: '/help', desc: 'Show keyboard shortcuts' }, + { cmd: '/pin', desc: 'Pin all current context files to every session' }, + { cmd: '/explain', desc: 'Explain the code/file in context', template: 'Explain what this code does in simple terms:' }, + { cmd: '/fix', desc: 'Find and fix bugs', template: 'Find and fix the bugs in this code. Explain what was wrong:' }, + { cmd: '/refactor', desc: 'Refactor for clarity and maintainability', template: 'Refactor this code to be cleaner and more maintainable:' }, + { cmd: '/test', desc: 'Write unit tests', template: 'Write comprehensive unit tests for this code:' }, + { cmd: '/review', desc: 'Code review for bugs and improvements', template: 'Review this code for potential bugs, security issues, and improvements:' }, + { cmd: '/docs', desc: 'Generate documentation comments', template: 'Generate clear documentation/JSDoc comments for this code:' }, + { cmd: '/commit', desc: 'Generate a git commit message', template: 'Generate a concise git commit message (conventional commits style) for these changes:' }, + { cmd: '/optimize', desc: 'Optimize code for performance', template: 'Optimize this code for better performance and explain the changes:' }, ]; function showSlashCommands(prefix) { @@ -1653,6 +1758,18 @@ } function executeSlashCommand(cmd) { + // Check for template commands first + const slashEntry = SLASH_COMMANDS.find(c => c.cmd === cmd); + if (slashEntry && slashEntry.template) { + if (inputEl) { + inputEl.value = slashEntry.template + '\n'; + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + inputEl.focus(); + inputEl.setSelectionRange(inputEl.value.length, inputEl.value.length); + } + return; + } switch (cmd) { case '/clear': case '/new': newChatBtn && newChatBtn.click(); break; @@ -1663,7 +1780,8 @@ addSystemMessage( 'Keyboard shortcuts: Enter=send · Shift+Enter=newline · @=add file · ' + '@codebase=full codebase · /=commands · ↑=recall last message · ' + - 'Ctrl+L=focus input · Ctrl+F=search · Ctrl+K=inline edit · Esc=stop' + 'Ctrl+L=focus input · Ctrl+F=search · Ctrl+K=inline edit · Esc=stop\n\n' + + 'Template commands: /explain · /fix · /refactor · /test · /review · /docs · /commit · /optimize' ); break; } @@ -1994,6 +2112,12 @@ }); } + if (activeFileBtn) { + activeFileBtn.addEventListener('click', () => { + vscode.postMessage({ type: 'addActiveFile' }); + }); + } + if (settingsBtn) { settingsBtn.addEventListener('click', () => { vscode.postMessage({ type: 'runCommand', command: 'workbench.action.openSettings', args: ['openClaudeCode'] }); diff --git a/vscode-extension/open-claude-code-1.3.0.vsix b/vscode-extension/open-claude-code-1.3.0.vsix index b338ebd2cf2ff06cc2f684a7c07b124ecc7741d6..69b17622afd0eeedb25af63f82ed9fc7a02a53ae 100644 GIT binary patch delta 40921 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 delta 143797 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
    )I7yQ0Bqbr1NMeL`Za>)yI}d+|!`Dg=C*Z(h zM;G>{dWLI&lj2=n+v%NXk!QP?DKra63b9WgYj1uFh+`LL6~Q#0xJ#PAG|J?4X- zu|9$(&Zt$kDi=;V@}|9|Mf1|+X9li!Zn$l2^JlM{r?fNu-cJv3#}4ChOk;))R{*7@ zp>eu>v!H~5PtQ%9+eZ75v)N*2zNX20hUYUO`)Bq2j#yh;)lY(3EE&$qg? zh~xO|5+FrzgUMsL<)c+lV*gKZqunYLyL-=iiyGOkT9SGb48%TX_$s(rU#6<+&}W&GC^f zV^r}`h8U{4L()^R709Z)gL?QeZnV3b*PPd2IDnxcwr(GN=T-6VPb96adR0ZTkox3d zUohr$GwkAy>AqX;I@Hn{LY9dIvpa)D{D=AU>53lAiXL?NH^Id&`M4mQCm#aG=gREo z2&mqoOj!@D1dx`de_8j(qX!$copgGAwAI-rHQ1i>i28Q`m>H#3RPS}>$u9xB&ACVa zXaIcj#C*eR=tdwA1kJcrK!Aqv_MpvoUKaZ(J1fPzoYF4`xE=n+*SnZI67p8DFfpG{ zCL;=WeEr~mB~9Z@r;*^}T0rYQUnB_GsxkBN)`%;9c%&8I(Jq7=ZKQxJrp~gTPw?4X z{pZtS(eu78LN&7Zbw~j zT^P5^m;nTJqr1~O$hErF`=t@;zUhT2B=wg=i6sTYw?i8(=Y))^7Wd$XI~f2pKWaf ziPR#Uvjej&?)%yAh0}g<3~j{u@L1_u*L3Nee}3`xpkWBlFaO$p9WBMPeVuBn7@S(CErL0}anZ-zT|=`ff+rJU@HEFZ(5HXbfp#&_%faYsi&A zml7-&<%4h^5SdUfEW@R309U!M;_rIZ*1pi^7+!_NIy zAeJa}i9}&*RD-gfDySd zn#88BAE^i_McqELPjDbb>ixi1Xq7@FJ$9^MbPn1*_*eqc#i-KeU7k~6 zuBWc{RSNt2G?u!zRjAh)mvC~>|2aRqbZI>6S>nwmSkii`?${)r=NO^-7@}7^@=1$_ z*up4ishtF(jvYk;|wA zlUpLwt|BgY3%n^A{`+mPydu$t1=C7GqzBaj9YZy27Gf}5PN~)|qDFyIJj+VZkWo1k zrlovMI_jFRBZW^Ma`CAc{5qgiFFp?W>*AaduWjzCB*y3NxN1= zmb3m?!{lY-YDpY;%~gb>DccZ=ATg1`Ws7W28dYwK~wG zT@`R&Yyd)cL^Glsyl}Qw|Z4%!UeZ4Q zD3(y{%i`6+uWtw_9am90M|K+4VZ{!li1%fMV|;}RF>q{qHD@A2K)&1vG_auFnIRn7W#K9Wag4c2k4!N;S5fy(m*5|*EVjg1 z>;7R=@qHwPrP-+ZXz5VUKLd-&>w6_w<^c9JT=KL5i`HMd`)uwNrsU3Z>j%mhw{%j& zj%2{=>eykcZ8}eM4Ztw1N?`5njmvN$7_w&W|=5IE%&rz(V z_hH&k@NWO@KYOd^J3Q^(NcO>hu>Tid?-XTev~25E+NiW`+o-f{+qQF7+O}=mW~FW0 zHgB%I?|C`ckF))6vyF%`BBJ*%?5@@=sI8_aCi73sw0m$%5X3@Mq2WUGO4AcOQZnXh z_m;e!3}C$%V%Lscb@iOA+EXF6TE2U0$N)3r(W`^l5u$zHQ5SMGrduAXR$|dXZ5kH( z+B|VJCC?MwU0)0SjULt8kiFH%~t4`mhBk7>XsJEE^zvAu-USZFE6#$n^= z-5rvyH^>84MtDd19cahbpRvkZoL2orn)^FP*!*&6aS4SR#!wMm-G3#8zZYcznzUB& z;hj_?wWa0Me8DD4q248?i!Rv;!3^YbcP2WFK+jlbUSsFw2hOl0G8raHhyrp4*y??m zDpD9E$Ps_)Kavo1n;CS~igH`_XnzJsCbBWgT`L;p>;^p%Wc2k3+;k^*sVd`|k&6X- zRIWo-@pB3B3*HJY+2cS`_b2|!1i32@eVyd z3kuMjjtyi61^I^o5cD}bX{AN{Z!H7tA@BCiFKEdezaZ)efOW6&1qLV!VTh(cb(X~M z8!E8-={yY4T*%ag40IVmh3&v-nbUy^0@X6LRtd+vmFPlgcuQKtSqfpW~iEg{x>{& z;RNJ3iQE-|9FgvdE%Y_zzu_C0aWLEg>V9;im+Vf*!Chc2n; z2T0_?Oob4Xi#Irs1&}{$OOFI+CMKlkvS;-ys9FOPRL3JaNm`{ujWY9u-~0>J2&jI- zoSBn<(myt3g}+9!$#1UwAV1*h{B!?PjUQLM5y0h#nfL%MTZ-Z94*ZKjT~#G)Mx3v0 zEai1-arvJfxX~kBLE}-P?q#gE;kOw*_&zzl*w5dX*Ao7ku4o7ZpezuUr&N=#guPze zquA{okymP-;GC|Ak8#-jIV6s>$oj1QUYzCWqGxvcLCrlCA>hLGBrR`?7A_)E@Hu>a z5j~ezS64*okj_kgYORa{mt684@L18xqHo0RZ7!5fwepi&O3~7s=aM0Lf*P)^|B6@m ziZaPhW!P|{F1a}Y-(_zJD4ghC|Lgd{gVoa9VSi*rCdd$S=P56Zg@YS&42;GiBm4 z!~7EROC1dCf9x$q+y%z_aK}%j}_`U z<@gnduZrpnfCd>fVz}y*NkYo>mx8WAWimnM>}a0OX{k|@)6VbGoq2#xK2VJtDhQ{B zkiDgyBl`=xEm)!U9T~`x}LRy3gnB>_5t(ZhtQ8KPkNzv~ULqIHK zJpeZnU(|)|ZIMA)%o&KV7e%-=!WyBK^oQ4&#o;k}xQ092i-hSP)Tc?YUNeAfNMfbj zmKRVmD2iLyG3W06y3J#;#2`%*(A6~QR78^UbrQJE&@O}-GjPvBRu?zY(D1(-f&^{L z|8wjFz(HhhU*K;MBua0@5~1u5X4Hf>ft=C?)di=eJ!2j{Fpho<$b%UmG!_73urcKx zM7*He0kKP#+j4hJ?8 zOM@4yV*MS89ulddFrz#pjeW)tfPmi-6-VL;XjRgV`|*{XYhk|2HC?cXlvR^)D2Gz$ zm8WY#liW#&VYD@-&>|T-rcRo+{yxN+q6??$nzPRbPMwUHQQxrykEi>KvTqbNQ9FCwhp`R4M2Lhq*FaLH7(IqI}|7TaoZm1E25hdIT zP&S{HM)sB5z$}F}CC|TYnVhVb&&)zxm2uddslY#&l>qf2ZXpx?kseLhLqolk#C@Bm zwi(5p);q2J>TdIkhs1eFo9OViO20&sU0I zugF?Khk3{&>8v~nm(%~3mDE%oT-UhYyRl{q<+oYkd2I&5Jy<5wFNH?CKKt{D-YJe_ z3U-0?fL1+RW_y=zN{^yQKuzn5j9~U-*i(2!su97$o}6ts)}r>@flE|*S+VZJd?p)AM0ijJ z2qk%Xl5R5n(y&9Z{47dN*AdHy`hb3~bhgOjWoOHlu7_LbiGYMQK(4fb_#qyGNV~QN z>LooRCh)WFs4p}VJqD6t*NBrcCt6A*i)7L-3}X1!o|JQ3Rww^WF6$V%5FpJevc48x z@MQ!QmmoBBu6>pS@kO#pD=7Db2rxv744OSmz|sc@Pinv~IaY7^)pp7YDNSM1_+AGA zDATU4)zJ;QUA3S2-zWy7$Q{ShUr4V%IZ@qwVfwt(-oC}z`EIPaCS(aPY%RG0B%I^3PafjCqL%7mU$Bu9khkh1Khls(w0f7S6Oy;1PMwsKxO&8Gr_+d@>e2-WE1kv zyWpv;4cFK?G7&!u*@yj0aV4-N@1a3LSzTUVwRy*Hdss``v(@LjZ^lxnQZvhZQ;*GA z`;IaLevC%`J*1P6u%Q9sKu>OOb5EnJU+O}Y>KxzSyo>Tk56F|fTfbt%k>4JOT)v3A z0@8RR{*0d+1HMllLY}Xq5%h8{@$s`i-EXch**wa*b{w!&H%FZiASDG&NdF5E(ALYNkn3 zySLsKM z@NJO7y1K<82?~5T$}R&*4~--&f3+v0tY(K(Ol1RA4ddW${%X2Ph`5PJ*QnifX`}H7 zAXC6K9Y|9-nix%#iK7qn35KT2ks~V}Uw-u(Umd&+4OZ^-E}lwJp{WFat#>3SiH*}y z^z9SO1O9v>I3L*_KU5ckz&c{6}CI7iJJjoHh>PYnIpD6X|!Ta zSEag+ zvms-yQ3g%TattoEjM@-dQYNs!(|~oZZDG(Wa53MDFu_ zwfW4Cs}6U6n(+Oj@7SGH#iIVJ#&~1!aKb=qtBuy+Y?h%$zKsp(3p?Q()kD0MNzPvR_sd(`|ZoCnI*0D!_I($@8$VJ`fMHr0#)f zh(3RX&$~}aRo_lD?8?C|D4D`_xZFr^Xc92OsXX|1fpgjM+#i}r0hKI){_2pwqU_3C z()X$QWRr%BK#-e|uHE~#$#2xrtS9WoLhbH3PSA4tdrMI~3Mo!-GoB1q20)!x6fGKo z^J%w0y>o(^Yoe;=VKE-#d!(GSXJ21<^_ofAH^6~aSZRY4sH50dm$F;jiSmHdMkH`p z(l0&y4yTfidD{`bYThd=X^BZb^C&H(6&YX}K-(3kBDeC)qgogQyMV{002Fq=R9|~2 z0r^YnK3P3iAbd|Y%Va6Q3NU8G;m;kU;~$rZwXiAVmbADM=UP`1X0|w1sqB<|4sdYlz0}vCF+Wp7LtTc!m zrnYEEPG3@vBsT)UD;<@Bt!+lLgUxUxTe`p?W3Y$C?PB6-6G|GQ9Dh2Yl@M_ViO5X( zGsayy=--?q5N4Heu7P**DtvmD0!Jkm!n)8PC^Iw3If~Q&bvF)Cei{$9%hfPb9YBMH zvTLZXFxW(gIY>pp0|73fWm~Aqx#MPVY0%$(>vh(cC#xMSI{MFCB-6fbY)bj;1gXZH6Dq_E4MS%3T3m zKjY6RH7*iN4rN%B1Ee!k ziQVf&3!O8t!#^f4LIym|86Gbb6AiSEr`Ytz)}P8y$r3{q9ii(@5TZigVQHBF;rFqF z*-Rk&IH`e~?v3y|XuUFNPceCWD1){^#3=LVY5$o6FZE>NBk_i^)e5_F5*g>5r95rJ8^H=bzC0?lvxBE4*;&Zf}`>!v-i%aCA^wD zt~Xv?9R50-!qRj8LheG@R!XhGj)9>j-(h)l5_-45GSNdLucV+U>}@H&3ogTpGEW?sEoH2~u=b#X;bvGH`IL>&<)o~*E;yni!?xW&ch!O$U) z;`!pgL{eI)J0l@CtZ1EiuFyIg>Ux=@jJe&=&q_1!7_6}=@oYCy(d$%}HKFUmAX~F% z?EywzEB-yzkpgv;b0?I5%f`Ym1LwnT zXMs`}r{IC#Z<4&Ikm@>yf&M4~b9XrHGf*AY$xQsg7CY~Y`VVtUQ7hfg6)AQ70jnS8^jXDh)ctmbmm^ddzzCX`7C;_ZKl=qYJJ zkw&?kzokR2W@UAF2fR<2*}Z>$T@TFg;^ESRo(|u<>QJI7A5cC;Xg}rR;xGK*5vMBH zr=<&fSj|Xb71vgL>8$nnbz<-0@6@HgD|EL-zV=~!$$X4j%JuN-It%x@yp62gY_^ml z#nR8m(CPE<962N!LY-I*3TGe`1j$a>LzoAik(X{zh2q58GWoYcR{e zhe&prcLecMFn?w?-oSE4hvY=5eN-f(hy{g%v~dOBT~KrO{1BQx;0>i6fo^Bg5g!h7kp#N;tEegp@)RrIx+^rVg1W=7~+mg1`~RvUz%TO>w%xO@fPvBSQlhUY3u zU|FPl4m~w#C&^oS?O$+rju31Xkm}C}yEQ4FQzrJh;E3`*XFFL=fU*fzkIjgVbd&5k zop9(`ABEpnZ<7suGLvnP*v58eamgk&$3%(FKi}zoZ?5it#kd9_lKn2fy@#8 z2pHP#gsB+5$9dutKvKYi?z@tL&cUm^!|RoxM=zU)IlC2a$1C5{hA@Du>nd;ghogk| zeYE@+pvDq^_9Jj_P#uGP@}FIER3+1!&f;E5e8h5#`fM6D&&m4`$9@>6H<>QMPR;*( zR{x6}8j%r&;OrH+dmt;k-TVCajwMG%nEV6n7Ai-9GHsd|P<=M<>S@>WPk6f@LP}Ae z$IrAiN<1&wz(@e~yI4pF+Hlt~+Qr4h;9E|`leKZTi%qoNE(-e+cV-7N96F{{9*S~Z zznSs80)_|TH)x{QT+kP8jxHOGYbIA~{5q;yksDMCln_`Rxfh7*`(PMylK_M#^%}8Q zoxSk0jTX^8ART2$OL3gKx+sQ@mG;6r;>6f!#tm9ys8}T1C~3vm@fmtyWDD+X-F6bT zWYbBhcy4x<8y6pdU)F&U$1RS}X{yih81c;00R~WR%JlNueGJt%!lFg?9&K2kqV;t( z72wuLiF`_CPlv6@l+x~Loo-lPd{x)dv}N|rmnlpJG!-+14%4*vlMp0wgQmF6hQ{RI7n3Jn zdj{2XSh9{zTPN^)Zc3c4+^*p^52@QejcyinnZYF1Jjz-?V3HmRnYr*H!?D}!8ktFPcH`zub9YEWYC_J(BBlt+qr7vv7p>MAAc$><6 zu3jf+EH=SlADZswg#Fv*W^8k4zmBr2%{O)cnX%5{Eu--OJjWXdBj`!YTQ>gtYOETdZ6lRy!nqe; za+d<@vkMkE2y=c+K-039fGN@m(iL|IKJB>Mn?5~1!Ja)Vs!z?a3Ew+pgAaRCKv<4F z8t>tvMi`F6=l z{fxx3MsG#i>;`=Tp!WCryr2`~Wj205C0=Olgr)}?z#v}lSMqE#Bi2r zZe>psNyTwt*dFvk>;nBs3R>|YsGVfhN4rZLW9o2XVmFekVD^`&eU-5)B8^94s5jj9 z_ZNh)YGJB@EEW+S=?i5%CuLf{B$fI>B85gM01|DvX7yKPf(Q<~vso?38X89cx;jZ} z-rgxp>0gqQDzb^(QjqN;rZw~ZKqT2-RDUvAB7Xu@?7+i}q05?{IvVhOOeg4(-g#wT zW^+mb5D;-J2(-U(CcXCBSyrv|OcP743wZ)y@|Rcl)YS z47DT;?3Ma#{XP1F!$VQ1c!=eiU6%vtjhy%b>-L2FepF1B3_AYC!VzRY23+Ugs}0+B zr!aNwgt4RnI{?mW8F({`oNl%puTHk&#ZJ;$vfHW!a&2)mbiH)mHa8&T6fECF3&76j zr;o|Ra(Af(GZS2I(W}cw$~>!$L>JJ1X9oY>|509mM}F9x9<$W;yYl_U12tGE$?9*H zWpm9XVya2BT93qlDm89Cd2v9 z8GTU}@MAo}ddlp~Ny&Gz{d{{<0jx-L!P7lXwyzT%1y*}LUg%P$triu?qcbf-79Cjy zrXurCbbPAEy8#S@lax5G>nl_`Efm*EO-;{wsa$G)A4PpMG)P@LHos>A zt5u1RQpMKO4JP*cvC7E$Ep(sIL68L4gR|~+e@>k=uQtCBqVsNuL`@8$s6As=aOA=D z9^U>A(S!DsK8MNtuF1LYtBrmnF7XS<HppK_MhN2H!-rZx3l;mbNwfT zi_|uwGk?TDIVBwE3V%^yu*;IlHDuOFDkRI&i_b*QhN#9ocNsX0tc^3WvSa~qZ-_qq zd=e%M0YGy3r5mtDIs7?J-P0itdxl`>H^?TCHBu9nz1- z(AB&uR*megM^p$m4Q8BQo(XVIQ~(uCbk$DP&upL|m>Z-aIr_s%f=MhBeOj73hpJsz zfm&rr$ch3DO-Tg_jjD|h!8%){!&b8|N`}yc=34QMtX-q}vT)6mpNKr6)&CET6i4mX zuQG{l54xR^baBN#1q+GS=AaIU{F~r01be6^lpKb6f}ojLrLZ)#JADA_{1rR0w#8~{ z)Qn~SFokKUa{T2zLwKdq{YiYeabknr^86>Gz!KK1$(@8epL-}_?LSyU$V_kW*$HI{ znJs4XvrN` zpde!WdgCtYj3oqa!>mIS;O*K;h=ok|WU%1t?Rv4!7Z-S(?+I|3Debq*7miq`V>XcA zQ$lQdmW@23R93un{BhhT>OFbZclMzTr7~ zp(sp5oX)4onDOLG=?sK|K$c$wmvMg>T#QO3Q|<|e^Q?b|nV#6y=3~}yR9AeG)5dr43u(zroakTJc_Ws+s4p3ehqzqb|VU=fF&nn1~ZSj>6mt>8uiIaJhfU75_3^cw@NCx{{z5!BE%94MZM1THj);fURuDI z^Km`>kT!$6ab}r6-aE1oV5L+AEdsO$SmBulu7IzvEC&W=NBhaic)4mX-hV3EH*Yuu zK?V{Y@N|UrnWsi>1I2xEXKGm(K!r6Mc58SsMAj^wjl@(wvSg5PcCz2qgiA3fG0QJ^+NiI(Z;Sc#&aK&J5;PDHuOfx`F#D zW+YNrjCuQ5Ref4#Kk{E;gUX5fGxGUqm#!4}9$?$?Cx#f28N+Fz3F0N6zv)uX5|?(I z{7G(~-4&l%@XhO0q1=%#L0Mt>^BkYg5$hWL;_1sp^4#3>uT~b0bI7twh#!c9w(6VT zTY&4uxz2$2Me{Zgz3ZKei|JT#g2>leBmS63@zxjM^lb?HL+_SM1LFftMP(yEc8>n> z1xJ2A1}BETx>fh<;D%kvKE#WxCllm^Dpz+a!!06!#>wuIal zTqX*VG-AYL!Tx(viNwIb1}~I&iZM)@Qf2MRe0U6x>$p9Q?Qi&)b;N|B25219uU9!(L~VfBF$-k zh8K8c!c=ELUr}v;ZHXXG8nEe zU`lC%pny~5huI2TJY*f*|Br)@o0p#}dqbK}J5$@2Ui6nF0498H z2(Ty#h>@a0A;FBRudJxA1Y~pl`URrn^wt0a&_WV$bT<^?6R8W%@ZtVG)PN%!p;03*75uGVDWlCR+JWW3~X94l%07l zw+d!oT`h1*Er5tvF$;#LIWXz&XGi!VTDwaL=2QaHx~@Qa@9$BCH2@l#{|Q?YY!0d9 zyg!%6p1veWac!@le3>~g?=TQPDzqpQb;4ILu%b4RR2*rA@501ETyhWH;wcZfQ~pP{ z;g9{lhRUzrP-#1iV9}{Dk74#Q3F))Zv~)us%DzD9@e2}H2M1VA4=z`ieQFK9NSR6%M<>xh>&w>X42GLs~UkZP-BMKEI&&SdP= zgaI*V)hnH^U}T7=VB!13GwhoIP7ggFN$!TIxiYNyW^_V)ne-^cZq%Z;u8nkp_xb5| z;`&}yoRTx<2iKNq#_oF77)men%5OzM^0xQw>+wWcUzXR91Tf08*1%AaJ6A-#=&RUW zKGTwSHFN6zP3!hx2*_r2=l*V=|5E$RxD??awfs#g-jKb>Vt$qS)%@zz*?S=SetjuQ ziPOf>)p%5wJwIo^Vh8D$hH&?4_o zm_Mm-o^yX*CIcWg!{&W$uOv)j1Zc(Xk;kF6JeC4nSdt3W06IAk8jgZBIG*Clfw@T4 zE>=E(A^mj&L3w1|J~HR2@0aylWjS8Fu>nn`D{&GUE5L+$2Nq6;_wrG8cDwPynOWhH za}ly%LmfT>gaZd;F^LHWgqOp7N{yFRGMm~H7plu`Vq&J*<-KXHtE+Cg5m)bz&B}8f zewwdFLlL;01RS`%CS6?tY6H8?!T|1=HH1gFicS&;ch^-jjP|#Jgoh}$4;;#>9ZB(n+`GY8Vf~U+atRCKPO1%Bvp*>J z*tr9fjvvikCgfX2uz+jdA_DZxiVbH?FtWELJgHlSo+(M0E2-HdF!Qt3-b0n-mEw3# z5I`PFOL2Mu#>##?zOv9O;@;oiadj&_h^Ec5Id9o#+)Fle)SfdEHiB^9lgCc~-*coNSUZ$lLz;Oo z(_ozJ#Bk8rs+VU(Ls6!K)_mK*5^W7H9iSdobEB~#(d^VhLt?A5rg+RRrPCo`S#{6# zDR#N#G{oPuY+2sB7|z03xM)Nn3puYbx#Ilz>L^=ivXr}GGMn8?=o>3|p_kPMAu4Zu zb3^lcXmUg1epwk+yNltg@cgwneW}e(&G_B(0XNH5cX`}K|LPO~_bkipYJsY{4am*v zU8nxsG(Wb$VvOH^dwZfTQepp+%>6WNymz*^o6AtmtC;lVzTmGYM=FM!$7)fmdB4od zo|Vo!`P8q;&4xhgQ!BJg=st4yy7`!(v8tSmYA=!d#_3$FeeSg zeqAOKg@3(b&lsk=Td%ll>(Rx21N3d5?`DzLyl()jgCNBzToc)U!gK_6McIQ^uhxF_ zw}0kp1%Ix!KDM4}+o-{+$!>IulI-TT|CkqRQU{WPC(nIc8sU0zipsuo#}o;I%F$w{ zZX@t{?gZm3f~&MT4EN{t7!|CT(Ggf+D@IWv;)}Hu`r@S|N>;}rN)+@J0I}p0y-*~y z%+~@z+EbqfDwhySZEpJ#n$44WYTf1T+&wnTc05XpqXoP&{02AtSY@G1HEWMv z61WWLdj#-K$|>O#tM_oWLEmtNOqN6R2F%TU1+%UP3;i3F_p{8rh!5#eOYQeR)gA<7 zB@>1{6y&d8@7VwS-hljH^yP%QNgTlck6He&o{YVtovXzUX8FI0x=pOhpT5i;AltB= zLe*@ValY#!qC~rCLx!yodYyjO3EnADs3S?5xK@{2X8O?Ci~!zV!Vllqi5IF z7sux;gjw)CuaM$bgBipP?3PJb{#Dct3|9VMz~_EWEF)JDhTu<$0Lzgv2MGxyuyc(m zdH8d`n;{86^&ccgv^~K0%6CrACBl%t+fOOexJw4$X_t&nh48vhdL-&2RP({phaB^| z2j%Vb!Ez~@B-kSG<;%as_E?595D0V{kPcFsPylJ9I*utLh!-1%#syLsPv49xiEt82 zM6rMG5bQ`(wR!*mpAPPv?f@9G+MipQ0IcBiBcK~2%?LkJ5wb)L9<|}QFDyyYWcyh{ zvMW9k{idyl|Jko$sx%r(Ao zd=)Xqo^3k!H;Sgo<+^vnBRp~jJU~OuYeO^nk3l&B*%-nLkBq$3l6n1kM&IJ=4ffhO zj}jyL0|KBxx&$Fdm+&{m&Z%Ya_+!a;7i0d<&f~VFW*^7nM1{|>m<{C}|2>~CRrt)6 zk=bBvOw(%{#}jGy)&fv$Pmw>pm>W^DEx%4sVDrgS6n8tL?Ovwpx>yn%%)tD~*LKkQ zPER=-9pB{hK+dn8c+RU@DA8yBc_jS4DI21F{rCW2UWv+dn!7GCiSR9k>hiH>W@Y&i zC*{&Orq8Sm%_u)8i9}NEwquB*^a|%29BM<>Ka{dO%YxOd4~vN0N#rZtG?Unv7nQL@ zm$2%asAiHI`7uc;SM1P2ufSB)Y)pBE2ZO5gz>)(=#52OZ$KIFqm>`X?cxUzwN5R^D zwc`V7{_z~D?~h(ByG+Vq?}?4)1&oM>`!vv(Z;R&9+ zr)voUxr}ztUS_nsMKX>H-zDb=yzU86scr|jv|x@*iQ)~1Psd6`)O*mctp2(nB}w|j z)FOQ0gr7KS4^hF%uZC29SJj8J(i85mn1UxbT~!p60)haOYI+ihhX0hdv` z3;ZuvFQ3CAVet!Php^CkP9_tihz3n=xM+AP-;}U5#X?eGII8zL?){J z4=V**kF#DW``92O-Vl(waQNbn%0`PD#eZ@#U&{42dpqwAS0GU4Ik*G+FJuo`d9JKY0-yx#Kl zQT67+wXe&ug@dyksF}&KIkBI(L=lm6nmq&4xw<`5SpO>A@^^j+EojA4Z884L`B#TZ zc5@5X%4~}qCN12brq5;8Rs~>gK4ZnON^74pU~5_u(MNq29Kd_Hth%^RKAT9_%Z%B7%LrwT~Dw~JQR14}5%L}CtPJ7k=c*a@pQP#o5e z84*Ka%GK!XV|g8L`#LnV^Q1bm;O>6P^7xuGfZ-KuAD_c%UWNrexhm8&StD%D%j1LJ zsNTZz_JTtamHJPFM@lf1W02won_iDdStR{(g||+d+rGHN3q4HvM+eZ7E%#A2YTA~h z9mn`%&E?h6pt6dY_=lev=hd;otn?zMcGUeusdaGRg+97Nypc^-kCsw{Ps zWBsO0&x#Kjd;0Luik_(I2DJz!SR>_{^6twQ@sLw}H`0`2KVG+icsp+$FOOLe>svPN zos;XF*G&L;W(O9+Divkd%)!HXdHVClN+r*@B$vZ%K*m;q0Q_5rpuvDpu6^oC$69`96Dg zQVqnzC`SU+5SBm*Nx$@xoxB`jJIU6_XK0aOJ1J7$!(JEi0%@ILDVcV^iECi%Lva1k0{CMXV-ifslzDiWI zd}0QWAyVVH3_HBIH>;J??KX|a9jQq*lSE2eAFQ6emP8Zv>>0)4kSS$yR}rt6$Y9Fc zowy+0$Un1Q>y|9Yg((}Fm1~D$e$LlpS~q{}8nNUz$OGvk%}Fo+c;{vE$w9;##5ABY z8PY>9xJr&Yuk>V$%Tk=VvKSiU%88Z9l}iQ;V`DdnYGuD+tQOHrZ{`5BVkg+O30-G)~%W+0)fk;mh+_bZQCAaDvJ4+zXQoi|Bv~bo#9mz1)epRU3W>)ho*8()2 zr_j<-b)&tZatKlJc-q$k^q;4(pAmrnVf=>`Zcg?;_2Pa${-3z;|9UYy8aSKKT3gsy zIRAGeZb(fhW{(ZU=U8on9T>z9(}jw*0e16B@=~1pEL@`uVUaKO09f}!z{X4;H13V~ z4F>QoMYZlnB0JNVw06f7yWw?p+cvVCtB!B0`5>Wv75!%;7-~&6J zo+vCJ7PXRKG9$NMc0soiVDS?W)1ys){ayG1ruwUvS3RmqoV57hYsmf3pL|6m8k&kMM*F3wFYl-drZ7XqQ*RISe>Z4tX3eC=HySG z{DAgHIgWOdTEC%e?DnQ-Hqg{%%AedYS#KdSnt(XSn&IGo+x#OunK#u%iKUzg9k_`# ziG_-Bii;g$!_9$U=Bb!!_RETdk_y1<2U0mBO@I`*589}pTU?4zGB= z3>RjRp=4LRz3?Kq>>`dLndH|nx%o` zjtDj^>iTKNJ@D$WmHY3x!*w;-#$~#g)s2|p5@QKb`NBDO5BwP)oPB!m#~;{X!K-{c z?JQ{RF^7I_ou*Fs%y8}y>_+dwv%FlVuha0kW!JV<_yOXWLbkLvu+xT8 z3{cj(afwyo^hIi@t5_d19576Wt7@*7=ya7Shf$%6wEs77*z@-LVoje_nyE-Wbx&J) z2sKxBmfs4wlut)WGXW5LoQtLo|I;W#Z{6tb=p@)=Xvf-!c?TK~WNC7P{?&9MF@eS(t8$Ebz>znt#NHLqNm$Y0Zj4UBXr?RBzi5Mz%+J+Je9cLKCL%FLoW=C*e3yw1j$?!G9`Y`o%qET2SFd3e6x5Rhn>()qxaoH_2Fz`~Fx% z>%cC4bBiQOJ1GRYsR`{1N;CDtWDH0yw175C`1Dnpwnpb(v4u=CUrq)ni?Nw&5XDx# z=3VpKv%Vj>nRc?jyw-*Qj6_s!-7FAQfzpe$DqYT2M}GwAuCns=5thmgQ)ClIg9Gd^ z*jCiQ;c=-^FQ_l{S5(~U`He<28)_dVNSW3iphIC!Bc?tKb($B`* zA(B+H`@|7Udvf={o!ST^4w-B48PIMC`{j4|r^=%pXy2C9KDirYI&!Ouf@2D^ggkRk zCzp^H6qgy=BK_^MSy=<#Peod3WgS7yuYLwYSa(t~IWI0o|NHl>9t;T-PLeo@`Wu_9 z$t36ga+XgcBp+RI7D zYd!r|g)PJ%jM88%&@G%Gl;YZo$l^;M5UV0fy< zI(;(ySUp}@>lGn56cAJt_ct>nHYwd==vt2yZrYD}d^6P=#1F=bRvX@bv3`!MW||4K z@P_GYpL<_Vwua~d@a8`UpIDK^9oNB$jD^iarfZfh@0T5=Sf-@aPBl~>40run!u&gK zPmcG03*<=)o^jES0SZ0Bo`~jPgsbo+qP}n=y2zG-hHtD?|=7qk5P462Q_Ne8gtEc&Dp_d7MvbF$#Kh)WrWsHUiwh( zrZ|grTqitLH5dBqwh4*L8tAD$yAUqGHUTX{%8~G?P;qj;;_e5-^MtYOa+{sS2KEvt zt!k2t0VU_pM|nTljqTzG zKz=x|hGNWtfDm~!B6Q^uRbxq_9|iSIMJ^t_4e>l%U19n_mhG4{R-1GR1?A;z8A=ot zWp}=sd_!2Kb9>ZpnZ4;tOczLZ=a)hoTpPjNt2}Ou*?QV3UVWO!opNtBx@s3bt^Bqf z64I(NnQ?P|OFx_c(C0S*&whFCN};;zB_9xX99EHRS*GoJLSXDQh^z5#u11El*5m(Y zp^Vmsi1hijPu4{J-)7kVT6y#D4C`d#^iSd5KS7=aHATCx5-#7Ts^(B2XdI~6WCSDj zxyN!Vy%nT2!{LPmHm*3gh79>EaS3NgMV^3RmwlIUz9b-lz6sEld@`_jb1Av$v$bL2 z>B!=brk6TILz@kB#1=`Q zQd}aRjDG~VD2h+WiLr3xi*ZSi$~9=aiszkpGbL@E;d_(Tb`*zOy-|%0oh{aQz?vM(b2_er~Bx>QjSt ze^y@)ol3x*RK@kT@1HQsy&^*Z4$-=W<8UCmg!UuyR&9=6+_8bdH zvZi3up&bwWre;Qhmw3)NSqNN9YSyv*c*MXQ@yn>$?;Q6Fa9R5NbueXmFK4){TX%6K z;zbzn_s&3sH=X2e)tW?jSJ9H-+Ku^6q{^B^*vKCNSZA(QYKsR9>6Sy0hf(lvvR*fzcuub9a3 zWssKHqFDYe(qNPvUa{K}Ow)s=&i@24Q5m1>GdEsY0 zm`sePehd#oJ|Y>=u2fj0*Rm3Xg1cm)jYcwqWxRK3HF6+`f@!0qIpd22eB&beZV9ua z?o#_sI4NGC>Dp|XY2Ot}pwP&;06!_bUC07tU)Ql?gXrQb`(wB5xY7~kOSJxyw4+fJI|?DtMxh5aFz&3Xt-D4oDDWZ;H1=Bzb`j5%h-Uw3_IZ%A(%AFkNJe3sSPtck3%NZn{rR`4jx;m)W(X`MvE33 zFeCSf$Ymj4^(dE!URcb9#WY4=!Mc*}553{KKGzDCAFo!-<*yXKI#RGw@>#M$^6P|u zg{x(d;k+{A5}=C9J9^vm;NvRcB+?h1SN@=c{}cFGKBf{6{FiN}-Lhp|@-;>m{f|V= z|2;-KJASo$eKE}b5xY$Fui!BU_7}qJjV?q}j(}@z0Fsk=ww$5bT0@JCz%>?Dlc}1pS#v<}%F0a;U$H;r^x%5_nxt?3N^v~0j~}FjezE2UlAK-b6>u4ceoWNprZtMC{M z>V|@I-L;-;sW7%(8s59JDe>s&yYt2v=!An{P>q!-))e5w8dDr=or z4r_cq#`~*p__C0JBZ^VT(5xZ#rSxP5{$`f&peB>4q8D)Psc1r~)$iMwW0rW)2L7}f z0b2p=KgR?oGm7xY3`M?6Q&|6fgQG01_nYmmqEYM@91P8XgAlb<2aOD%h;Ve>H}>R< zm0%9I009Bk_Z5KplZ$<;!|j4Z-pYN^cg>rz5X>~}W#H;#_wI*!Sgmxgg~u3=9O#{f z4=n<#EA1boS=jOfum(wn=k@Lil$pTMm~nAdWK% zS;kW?hOC@qEEd6n>uZ?3Y(LKrv;j-w?}n#sL?_y0;9WXF%re%feod1$W$QUME;o6& zR*c zFGdYyEiv#z6kb7WLv_Y*DQ`itkFUX#c@@;^rl6-L)4&XI#mL1$4NvB6dGgmp9Cfw$ z23XMvp{y@IqgK{l!h&0&^v%zbq@Zr2Bl!Crx|ZV{mIz&xuJ*f0iUO4(Y*67JIhmfI zKP90|5T(M^rS-hEq+_KoyUuXaWq;bABWBNlj&AOmPa$`EloC3G5%gtr0pj*04}I{J zcG~6)&3?nJl15;i)k6^`S&D^59jQdCbZN{SI+7n^3oN*;My{+h;6^Pn?w`Dlj7aS; zDJNO8RGVp)bRFCZ8CZ@u5U{?u1k|3ZiKnA7y=rvEmhkt{4*nN0stFj&FydBo+*Z!O zwFd|~!*yap1l$>$3fA-<1vDgyD9%L`P_62y1yn%~+*1~crdpAZb2)~n=J?p7CPidd zyxI^A{SKxKma~&NsXw_h#g%$pUayCyoToW6!J9cJ7L1khC}R4MT{<0Jcs70+ zBOKcMe1KDd`#>E$8pV6gK}ey4mnUv|#*aIANwI|czT7I3BTt!T1?pkmzF8yAM^;2V z@Q%tV?S$)6gaj7WIH_9U80k1NWSC!ddoRUDS4^%`w1Tu}%el*t#n#cZx@+`6df1bB zY;SEZe=~0Jumly_-g$fc!4Q^%-IqVQ+BfKRjmUhRo3P|@b&p9k=je^D&>cVD2vak9 zN3h*Ed2UQe`txEtPoy5^$D>NLQz#e%vFyW3F$e_HQBz zMi=Mk!4ok|ITrd(hwKYC*0Od$)SNl_a8YcIO60zi%OoP6(N2;f^-bF$wqP7KPQx@; ziSU>K&Wb)0)mI#zob&!JIL+d+>M+nxXY{8SUjANyKtkm?pFyq20)KRo)g}10ZiUY2 z2JYCTrCXt$epBqC)8F&(Ch>i(WmDady1LVPxwtbWzB?z@hQ`)qEky(%eCK0mc652n zMkC@}_q_@SzL1leyyc_iJvyLr(5>L_>Zfz~B_rQ@A}9jC*UqKd?1TB(=~6?et^OkN zx)U82GwyhUkHo`YMis>k=vV5B-%;gtNqZR~f#XIQFTE1kK8n*;e1oM_y*jO#(%A)D zp+b0pTAu=(t9CTRDn=6@T{kxZsT2B^@=CbS5IYG+!7q59^I18 zRBkh$7O<)8bQmQ)9nV>@In5iMs3m+|BxW0<;)|6f*0aWQFEYQ)+y~;swX9aCFB*8J zvh?%Cqx)W}?N$8_DJS+uC%ZfNm-Vo$e-z_aA#|Qeo3>H^olzC|^7{DldZv6!>Aiem zmCJ)OF;Mkmz*k}%Al_wo#plwca)-K3rrK3nIWf13CyV0K*!1nykvI6NX;J)ei&Y@Q z{4OPOYN_c?~F`4Uixp@mT+T`v0PR{_{|My}m-D z|7W-Mf5v|gCub8IhOg|0jlJ`~X@1Qs$2HEl&Yl~i0njVRShS_R*00?*LMcnilT z?W2kHWH zx1WT4O#>pFyP2~hx4Z5LuL#)Z+p7Ta5@{W=3M51th9;+%%gbG4G9b1`>CikLOdnPt z&puJeONNQneV{L|QygpPx+$N0LM(Ad@y-OcaHh-fwA=jRj{oGfkFc zjaG3O-MXQ`v`~lGxpKCBbUI*;8!ElB26;SOi%gxVHcssDwX2=3!2uJKybEd7+L}hG zT_LaD>O#K+K~fA~x&gH3Hk~UFT8WE*dW9*Ldu}w=xix{K*+etuWy%%!o3OjNHsyx1 zDalf#4>r@lwx>cvLCOLuc$s+r7VY*uj|?ZWk&k>1)?5&BI-SC%vwANGm~)NEI2{EPAOr#Vl`wf-I<1kIPatcMP+pM#nOgsrO_c|wbK{kF&B&{A zzg?oOlc=ToyNvE*aOytc6pzg?*tegfV>Xcvj6y9nm{1mpU%uC{A-yIFKb9kq8QLn< zq<)pbxEcNDrJQ*W=HGmsGc5=>88MUC)uwrw1SK7G%>ymTr4(Br^BtbGi-}U#nfQ@) ze&T>h;vN6eAW6b-lj-Nvif)Iy*WbOrWyx5twK57DCy)>s~!N~ zhIhA$R)#gwDvI<3$jo?i(8R}vKXVo^33-hvi^BBGNI|_$vL+On+B7!2d#Q3i%<~|} z3+5;nENQ+7A0B$Z;Y}oPm=5%k^Z*qc+E5%Wip5Qa>V>!jv9j_8s&?)CPez7tcDaXsHkm zwJ7aN8|{7XF{iO@x^v2Yk=h}uC)mO*;?%YzqR^Z~5sB^rKRVFG(e1Bz&bN&`(|tm4 zUXRt`ajj|5e+6>XDJF{-ncKu|n(mE||M^pD=x+)|WTi2l&F?E?4Cg=1k;WV>AH^JF(FZ+g%^IVPt^JO%La8KPlW)6W=)?x{?lSL> z0u#vL_5IBr5N5qj*b{85a2JV4Alu$58c|7y2Fl6Z+p*hbqM(U%>ldqqB|{ltMxN2& z9Ev~v2di8!V;0*+m@l&0+VMC?o@ke5o|F1&f6g$A1!E)aL)}(ig|k)Kj-yr{AEX&= z&_+RFb6`SZm2|_@c%{dw$7>a(GqyJGp1U3R7pIw}@8A5wD1)z8rDRq;67`X zw2bp8;F+DgTcjoC%Llmz9FOVdJ2#d0pybb;kuJY>bBU5xg$v6R)#{3FA6;PI)sGip3Sg>Jz3#c@0-DNhL1)vtN+ z){9>b?4~i&XObFL`wBT|5+7mrl+v3iyhF&*GGY4^MyVKJ!|X3iJ0sk;lRr;s$sA)w zM;BIw!XYy@b3nE7EcG{6)_x>2ZE5RvcmY2i-~S#ksj&;*bO+V^)Wj%;p0YZa>3&Tv z0y60;OA0~p)@bOv!{})TUYS3TZiHdQ z>eWiqG^nsA7udUfdwf13^>ujDhAt5%0{YVDnVs$cZpw~6Pa||ID|^eR$Bsvk{uH^E zv!5uAOTFserfaKoB#a<)0K9~yFE*IzFs2R2!049;K zxTke%5L}*6lpk2~wV`+fNB#ATC-6Eb>TdmcxLq57EBj3+O$PUwmO)4j&|e1?F!-Ia z4E%!>4hHCv_Qo8H6?Ooz3%Mzf+D}5Eh#x_V=H5vmXGbpKL+X+^?4@Y^Q|Y;w*AjY? z93w)qHWI}`6KAIyKr(I}UZOpU4h*VoGN%v3)j=5+C(=O$BQ>FZ!c%D4;DYSXgK>BW zz+UN*(BXddKz^G|CdYrAYC^nto09)HI5E5C#KxRQ-_d=HB~M{OZJU?d&sxp)ect&E z%)=-T9-#&$AwEC$8phFA9czv(xxx`8`azwBaf~e&g|Y_hC_*cF$Aq3o0JfPaSN~Lm zuB%AbZ+eAIA#irbHksSiM|^5y?CuOz_hg2OBQm;Gg=L0H0z22Abe1CpZO?UD<}m`} z6yPS+x;K?c8`1>ig-cc&OcF)lmfwcjJ0|pw-8Dh%o(pxhyh@+eO( zYki;Ymlqk~BFdar7BM6$@e$cVvj9L0B7sRDwt07!hkKYy%6h=&k2076F9X@8qBtBW z5{LD2HCx!ntuz6X2(Q`?ki2KqC&+QusbzpQ?LVBpycY<3L1*%`KtLSyxs&B%+v{dV z-DEcb`fAP-Rs0##0Eq8^e`J-eeSu_XN6(b6NR|3mtL=FA2VuL@_mm%5g=k7OtD|D$uZ);nz4`f!=lt9O0B5|Gw)Q4H@nVY_NU_t`^s+izctbqpbn;NNvv&d%3p!xh zPXi3FyCh;|cLHOBOtazIvU=qq$Na|kQp4`ko04OrfgZP*^qNYO;FBG_vQU_!g?YB# zg1D!P*z!UslF^KneQe0ki@m*|u`I)IJ{D>k;V017y;dBZBv=`6Q-<=LpR?R#M7M3CyV#l43ZH-Ul-j_iC|yl_#ZD- z5Fj0kJ9Ztk)F`rXuEVR2_${yGA1zs#|#e=WgqDIsnM;ZO#FVV%t5P?}Fm&kEK<+9JUIW z!1hj}`b1;7C;+HW*=ft+=Y&Is@j{ z#V;|}$DPP9ZcdQ8#Zr}?N}aOSkXr}(BeYr=7>9^f_+F0WR=Qlxk#ub-plUng+I zN3-UsZ%z3gbkNZ$by(A5)h-W*-e_K7Zy6fgUFSPsa;3oVT}DL?UEz?acsfp$bM+zlPdamO|*{^^db= zMDk6ib7UdodTr^$ASenpa7~;f%tm7ps~Cc2pHIq=in_F?sfD{K`;&AMVEj?eH&SnH zBlVsC_!KjT#f{)E=^ksr%BupBU3%}T7`MX|;Sk0O4%Xz^f1}qu^RgELH_j*)hDV{8 zD-2w?j^LyctiFSnjW{Vz_nG+=KDWjzqy~R&%GT%8!@sCLbGbFj>Hw$~-Qefqp}!Cd zxdsN%&e1K!fU+xHoz&-a=+sz`OFLzp@tctP3DwA9_IvYqirgJqa~~~+dB$EF`lRX7 zJaw6h_WVQh06Ahf(j{1+7x@-j&m_?#$(-fB2tlrQ-13J3_3Vw7gk>KOK`;4X8Qn>x z?Q`&fmYq_CrH_vwDxO1-EzXVr{8&V}xN)F4_h@3a=?a)!tAl$F#^48IFR%0U83nv^ zgzB8oqL+fTz|x8s;NVIWVDQj|M4X5Oa`N&7>=t|dD+(Fr-vI@@4H+Y^ZVt_4d}5KA zrJ9kHI3;_r7dQ?0u2)px=Z<8*0}aW0YYFwWHa!}VaBZ^NM#GXm9_A}v*DQb=ai zoR}ZPU~@h5I@RX3aSKRfO;#1Z`unMd|DpKK=x(|T`Cz%{O~Z_-((HPpV^5lthudwC zab)_BIE#30pc5M~tscXV>Nkk>jRV2JT-@dLLKAXg+?>)*olr{A{!;PPdRYr`Gu zPamro%@&A5UK9`h=^Ef6%fcma@Bys@S1wTtPiJ&~YdmWKOUp;smzfG#p6|Y+Pa10i zVjs6zeV=>d*|R45opzibdM$%LpMT0@x|yu@GGU`$Fr@&f#vc|s1bgTORW!p8Y%Luz zO2C1ona1RP6iu`&a!97T`h9(=pjz9=Uwofzxq-}8C!Wd_O6}=$@A2ElDgq|a8(V?g zC)hu6nE(S|jq{hq-^%>ot&V?<4v_z`=mdU|P#uk!%Cr*Yl(+#+I|Od50&v>Eu^OMKTPi_?8cjne?kR=h6()H+o$D) z&##|CGn$&euf#6d#G7}62tG=$IE$)7m$h0|Vqau~Jgm7j5MUQ|Nn>Iq?K_DPWg&S_ z^GyNMsRqJZff^f-v0JNh4^+CgDGk`&mdOJdot60stD7ssHHXVhN=lI!!3@ExoK$aL z4^E0q`irIyni?!zO0hBN18W4wm|oam9%%9QjB4vpM8HoJb^USnT;Z{2 zFA{&OOzR$|6pfXS!jC=6Orn%#q~rcX2IAKe-PReseUt!Q8_cKY1ME>a;BYU>7;r{l z#TuRFHSOgb=bERv=pUc38%|Xrg~Pzo)tN+n{M%1Z!PJmD+mx650EQJpO4Q)eJ}RSc z#w}pVO<;rBi%}}W4C6%%=)Eec7NZ%#C3%8dbo-9n$O=!4?-6AEgPoBB1}l#I8?6nZ zp-Ocl0eNDMbtYbx6R=h+<=dP9Z>4BOOl<>7*i1~I>}mHn%Q6({;tJ*$5mY|+RF{e< z@p*1j9lQJMtAnAF<%8*_dE~b150K0xBK;yIwhKR$@HG*lqH$9j8iL+iM2(V{|EM(n zMHLxGbqLxXq3G2MT|CAfo6&ay*{7A01R|M6iB3UnE5}l44z!=fmI3`+Sf|$!a2Sa- zW`YwDuB!JnJsZx)7$w#ff+h)G!u*`%)G}4TGmlPdOjt~&q4+jGk?k5LRpi=<^E*(n7^kWeC!F0Y8%*phAjf_b4JfEl;c9)eko%UwsIetg$lPZ7684q&tjP-K~AtCKL*3gQ#bvl!Ax4W4| z&ciay1y~MmcQ7T9H(}XV=9G`6?9bYpr!hW&yHJ1+TwRz!9IE?+{HmljmYYgJ8qqzD zavJ)fzI0?cg)EQoFxRJ-e9dl=(_cv?DL)!Q^ZeCGXHz7CNTRs&N8;LhbD84Yyi2&m z6njX!Sb{YNZ*!~q`d4FeciJXNS%v)X&sKcvIMJp~xvIur=dxLOy(At<8C zI+ZFxPp=i*hmX?{1j>>A^IC_&URXg9Rxuwc$FUfl_2Lcr*Af@S0jQ{2OJDn|kh3xq zeqc2{z!U0kR=W!eUgS@z_c6lD_UW}sncfwH$z2r zU6Ye`0mAHCpjIhwhr7E|5v>`t_x&q#o6?PLN6A-qpwI6wyX#HJIX9DZ{mYrB_S4d4 zYLZso73WQn-1K7ytvgMfxuSZ*!i0*Ah(P^}68FbFztsraSTkDty?CElZeO6cxA*$g z+}Vk%O+Zf`6h`N-d?iwH&qXOcnAQhMzSGsr#pqnD4SSt&?<_dh`MQTBufS8)kQEgs?rqy1NQthErCywqj7D68~}5 zYv9;n(Y~B@F!cZJ@8*kv^?w`d7PiJF?*HzXHGuDqYaFPbdh#_ktQd)s#u?gk7QCI& zWv$_thEzs8$t?gDM43wRe&TM>9P8g@ssAZs!2@{%5gL8S{6xii4c;Jf#kzLeA}@>^ zp*VoKMX-m!4}8LsnWz7jNzCd3I}5xtPO^i=VyM!wLR#4x(2$? z55xPq17l8-5@1!jR88{BRCF%@t56Q8)SJRuLr%l(zxS6%5{KQBw2+lHuC6YBzfU7i zH#@rvi~&Y1IHr~38Wc8x>*uI7FBT51J7~o9xzajkbjvob9a{=?>^$T#OpH>bhO|RQ zRdBOXj&0%~ejd?=tEGrpG5Y}>#7UY0;tW#vFoP6(Fp-`hiI~6AoaxpO#hf!xRk9`* zM@qrOAS2{B=Bxo7LbeDKIy91|9o2B4Ixam~Dsp|`=eHf4V!F|kQlH{S0H=n=wtA9t z)X7g0>LrXV9-3QW5vkd)Pm%EYK%*9)U+pKM;w@93njuyg(^6<{$M4xQX3J}Fc|=qS z7v0NsIE)&(!Aw%xXO50nk(2?JC$q-CbAFZ%zUFSXAfKbFso*?Rln;oImIWKkxXCIV znL1JP{pHx91#DOr2f@U#!`yWoO1Da>G@wdhh|=;V(6I+&oIXXAU#}Av6%m^_iyQ0t zf15_pQ;g0UU(KNvl17Axo-@4c-n>1sh;2qgc2o-|)}X>iq=TuuSJ(%R=M_=y2{uR% z=AJJH$bky<&;1GZy(-fkZ{FV%rpF5bAJPiyz%%+AIQBd4~H#T2xvU2r!cRSt{ zyM0Tu>yXo9i-zip*IIGadjgNB^5uhIAb#Emm~3mzLMQ^FpEg=4j~QzzIewW%9+ZnK z8B;{4SdXoZ06JbmTpDeaSbl3;aw9K(Bs>*Da+7{WOCV=-=pyh>%uZZ_4BkyLa}HYL ztI)Icm_73&{L6k*;vOY@u4GP>@k*6SX|_>_ci~c2uVvw)q7URQR|^*tg<6)jY$?Rq zm7rtbtrE3>F$M&p;20{{BRtbs;*fP0o+?w7EeI#}G3>^h8(Munil_+JS#b>n7NXx? zgIcT>SKFpYvI7tm+Gv-1BxVaVUkYltwk#zT;d$m^MAnj56Pu&dl^RynQs-NX%X)%~ zAz(@)(x`0?w*ld_MIU@cTlu54$H-%s}qa} zzs61XFiy>_8Riow!E1NY>q&3Kw$ndXaIdBmG7T3jd=`Ko-2IHkbGmCzEFG@c#2aVs za@}YCzQug&!w;VsSu%Cio97#C^)#yyrZy)5rWdz4P}w z;`Rzro8|G2n4cBvA0YxC*R4jfIBG^oEH|@tUE{jHilPwPav$f2uyGA5Y73Wj_xPK9 z$7a$Bth(_SV5nu;R+ZKDCS+zMEx(L$eLM9ey3XSymn*BTAx}Fl_*Az+F5~hxtESAy zzX8D56McKcSFT4>hV+0_FW&0RY7RFTAOGCd^?U@*&60^twZzWDTVyN1Y?--()@^-cqSGBm|#dORm9v#6f9H`cVWf@Nb zGk6n5smdZ9afe`%B9fJnE|U#UlRhhgpC&*oX(T>_lT-AAU!{L?h8ow!7WjSOe$qGw zy)=@zv+--SYi4BpF4{n5r?dviAMw2knSCar<`LlL`w(b=c=~;cJ8jDc*cQD`{es9| z$>Mp#)b3+6o})$2K%rn&Z>wEr1K;srO?6WfCPhoAGI>%V6;Jc#yI@k$bdbUc(zt+< zhZ9!qM3Pb}6jq0Ua=06+WyW9m-5O{07>X-v2AQ%I&!wV3Fl^w@fZw5MY6n49z{M}# z1Br68NX0BFfPbxIqpR`b;`{_koIU;w+bhHm0mqF98#8eb-O%Il;O@}$rzhvGXG&W+zpN0A zdmmkxtkZ~2OjXnVf^49Gp?^cuqpdG`MVHN++G1LD+{8=K>AdQ0On~U(rU#DiS@A8j z4po@rQ&GrD?&#`4Ip+D_mO=bTmA8SiZ4jfBBM=M?d()>+?bY{Q%qvwW6ov^FHTi)1 zz7)ro8Wcc2?0Bm2_{))m;hO*dSv5U<;C+Nr^--^*dT$&|BiEJ96|3{P?@Hy2Ms z4`VcVm{ZqQbfMcTU!&hP%TS{)^4GOI%3Yw#r>&2f&_*Kv5avD$*F5Ws0<%BQ?gGQc z+j#A)iyGeBYOg2x)*)KRv|fK-TNf@JzHbRspDaauKC?YvHTGsG83e9E-Pzl{=wlZP z;d#pb#W*Mv?DChIyZKAW@AdxJH}LmtU}Ou6s*2k!?C_-gcYzR9mv`$*+uJie(0Qq~ zt)af?@4F<>IFA>cva>l1Hqn?LKB1re}P*o#m&2Tfn%+&C|!5 z$4AXd2eS2R%W5Z16esYYj5Au`h8Z)EusP`#nZDuk#;ZAh>h||$7h+eLkK6>v2Isq= z{De-4&kQfY?V7a4!|4-M&MAZ|)2I80sAq6$$ITPjy4&M7jyCfQuS@Eg7C`!dgO_RT8HK+{I6#CRCJ3#ywmi zW1;XD$n(2WEh`JKj(my>y;7Xm$r4x5FQzsl56QmvwZNoh1_cOT8fDlfNFCX`v}pGv zl_Jn5n-MGg$pC<7?<`Um@lQ7MUM!{V&Ou{@NO6>XCAPm=*b5J@r16_SjEj?{r99}A z__gQU|02DV5_6{l<|}^L44z|cWoKgx2PX&VZA4R*$w$dseW2}XLsgv_zBdE+&+=)Q z0@$erG6g}A%nS_8c;7(A>rEbz87b$5B#uk~Sh@`1g1FvvH=RDS0U zps8V06@dqZ)u|qM3IA9bzFMoz>)HaAA|?vQAef6;R2)EA4^MTFvEAmnWnz0qxHk%s zl1Vc4ZU;5S+Ax-mmKsvPyF=(MzgCr^`GDt!4cBk>y!5rrkT^3^(IZ2LVW-AJ+jS1)g?OQFg%eh;Q{crv#$&>p z5zPI_V;oJufY;?1}d8Z;yEARCLF<^e*^K*YGxy8rWtiQd{YOa2uMJqKU1H zg@{kgpZuqD9G)}`V*6-tx%Gcc{*ZcGJyc~W1&KL4cY4T+vuCd>Vc2#zakiZzhWEox zt+Tx9gqxHst=euH#&h=9^E%bBsoJwH0$lWmqT_&}#A+&AG>NVhV$GBq<%c;O0d}&) z*)To9pN~+FSvL%Ib$9r>=kyqdc0)RAnjGiUmFb;n^TxA{bbgdcR%hU)8}Em%v)^?! zK5g3*{v6A8`)2$3#mWGAhNt&I4W7zg*G~3E}KM1vJBdo}dey+%YeQ){!NSV|- z$A_J=+Zm9vvtGe0UnWou7XM9DJbNrcm<#sasiMPY#mLr$_?QlJE||ku@io@zX)O%7 z>;^2`an-r*)>=((Gt+vaARz0W-_rqk2zh}F&a}G7gOZ{=3G_bb)in91xF(oqqf(7Q zrL!2Lai?Bs0dXlGr5p47Vw#P90(mhBbuD!Usm_kVQkNDo7-C$ZI-45o6_J%0t5-Mx zdqhI{SlPZ5V-&dt#C8~7RXoqCfW7VIwX086K3l~0B3imw1GB%;4q{94oo1V@fI?u# zh(>;r(}obOKxuz}b=I1M$#HS9z{a1;%8~(=efcmcGjY~s4GD#T$5PipQupt2H7@gywKNNi z@3)0~t2J<`Kb6W^UYqrzF)IM$N+O zXSYp%KUXuM;r*>tMRwKkMwVt&#<^Zga_XP+;JHPTC_E>5f8fVtze${z^?11yzqi@E zjoT909SQj-?b4!!z9jk6Y^(tpz&&7#*{m;qhL)?MDRK3%*4)*fqM^qLH2F!6*J}xMED%Af-9tycTi6(a%G2l&~-9gU-HQa`G0G63i%JJ(Q0#(yDSr3q8}&p=V_B zbcLSlX@$3&dN>h;8!Fgjg?@vRq(ASU@q!^tHR8FH zQd^TICVvF27@*@BYAO5i(wS$w-LbY>ZuUu{AWYixUd>=0^%yr6)I0qCyt`D8sNUEb ztJpg0Hv(+mULqVnZmQI3vk$Ieg>OV@-f3RQb;V4#mZO&7rDa+}M0ghOaB-(6vVcr5 zrDL5Ebq`*Wo3u#qeA37@{J+#h?}-0wORnsL065SfKoBXi|84A`{%`)(KVyfpqk*lH zy`7^ogOj56_oQDCQikd;e$jut@t-A^Fu{UBM%|k0;457RvBNJmMQSj2{ zC26B~pqE3Jsn)50IMD^=0;++C*m}lsPoKVS5>s+=;`X4@WwAEPnS$>YF1uBT$Jh~m}(xJcce)5 zQ?cPF+^5Os8}WxrI?TD5LXCp3_45elFvDb9Rg&grofHN#Uh!y3c3ZRcQkhxNrhI46 z+tk!z%Q}|;0bzAaS%i7hW}e`v{-NsRp(j)VA=B|mT_@~dv2*z1ldZks(=)GXUj}>I z;~hYAP9l+%%Yjzy9avhA#%vC+cB=#V6ZyN-mI}bgB~`Od>h5zz@Ki9=P6 z?5{KJ&FQKVzw8^A`-5!0+n8O4Q%?P~6D{D_cIRh^YOlPkgYX+HGLj@01hc#GmzH|I z>|HbBN&!XIBBV`aEte>Gh52j?oJ0DPy1CeqlqN92wRIH(dxFGJj0DuxOz&45pJKf) zK$-p=pEOe5HRN~yWe<;F204HyT_>QltuP?1uWD=zDO`eH?`oGX2B%f>2>CrGLp*+P zAz5g=zvhE@tfM=f~{ zcZ1pW00_-yx+N`!rrim88uoBtFz*X$}P#Hi*HyIj*unRTh z)lcEQdp9oeGaF zWFsH$Jjy%9lFo+*cNE6?@a`H=SN1lK?!!w&OcR6ST{Ro(-u#@t${$3z{;2GtGQPj# z#kir;{5~&fwnOb6Ect?dH=%!OmUe>AnW#yIWn>(Hzl z@qd$4%KxvV0-63_!s7qXRHy%}q1CRwZqSgwvi8lO5dSEuemCSYaw8*xDm(yhp7D_c zK~tPtOUgv)pMzTleWV(y^>}y*sanx7jgTlJ(v)_dk4v}DlrQ`+$fQ1hS5UCA_JOeF z^Vx3!gXmk71NUfcVBZ0mV};-kP-&8#mt9J1znMm`lY_&|opxjBD8-w!;fqdVAQK@ogZir4z6Syv*Um)F#(IN+-=EfXC zKt61kUuEp-Y8*l*g54Qdj*%7HKTEXVt9K)`pIpB5t>h@Owg-xWj&aa0RErW&_{!cD zyFgS#OqJBhp2?ycR2FSpc+a90pkmW8#8!07#M&c+Uxc|pj9$toR&tL0>0pF>yv|W* z?2u00?usi0y|FnaUJOUa6PYSZ5Ps34sh~477@36!?v*g~FY(mou+0V2b|E4O(Loi> ziH!A5L{r`yU+VU+=?A~$uiS@5pJSnRqLSKWOU?)Hi|0_$XwovM*?1fM5?$Z#1I@nI zYMbN8&JB4rY+-ZETFO%#tLWRL1h9g4oi$3|?0gXP2kb!;YN!$?$W}JEf6wN~aD@kW zK|i4aSDG-(J%8qO!C47_y*^C1kS+Vm_LYQ3jKuh+n6J62Yrv~y6|O$<-%YKbDOwKK zdJ5S#Z(X(RFGPCQ=_TT=`KhZ~`jit8AIQ+AD^N0wPyPK$s#?zl79WmTX4anP0Ib_c zMSXP6x#;R?A6_PX74&N#OxiXw`>Ie$|Kx)My%T03#N_f5zL{ACsTn|LS$O`b@8CzG z&%|uA0Wo%QJw0`8aS5ERm4z@iY+XK-WLNoqGO_MxoTgKVe+Dyy-;@_uh)+WvXM^Z* zjPQz2rFbg;wF_6ye9rpz9U{(luf|aWH}`Xod74G1?I9$!*Eb$~Mbo+)$|D!G%j7;3 zXaIC#!&o;r8CK)=XNKSLR)1pSInJ`+Ow^VqZsL+dvL%$qjeKkR8~WrAqYXD2DCr?q z#_DG(p|ON?bo_GK+R4MM`unv>nDF)IAimpmvivdosc66Q^|9Eo%%<6&CJEL=agLT9 z*&ZX0tU{Fh(3yQ9m=B^*PK0(^_(!f(AY)Th+vnUfCG6+>c_a8-exX51f_Xk`viyND zU4x|AbMHFI3K|T_a|6X-RodB%$kfS9Bf8bj@f)0;K+%Wx zhA|27)P$B0_3a?42}nAAU-E za@^e0l_P+)x$i)D|9A0@Dr%(^3H#gokzREHL}H2+EvJF~U7yzUMCWoYFN`T!b=oGK zO3n{xFNi{P&HaELDM|I8zjV-lj$EVd8@5$&PJ}DMdzJoBZ4zz~DfvYUd=6*+qYt>1 zmnWL_^LLH1_cbNGwe1(jdJ1N$3@OcdVu z6?`XCIJp)lH3N+vQEnVOqvld4@ClFHi#=UVNOGC(jtL=n;Fj$01^OwEjj|M~+3)|M z?480aZI`6s>auOS%eHNI*|x2&Rkm&0wrzFUHoMIJ>wWj0Yxc~yXXg4(*6}*HGoOr% zj0h0xSX7EdP*^_2Q^|cIF!35gfMrhGj?@IzvJiQaG0KgnK75GLnP5iFmO>I%s1wM2 zdxsD5??3)O5%wFmE4@EqzwY^Ub-{tX3L?~KIw>$RjjHQ>IV&N5U|vYS7YG#r7~k@y zkv#-o)+mN~H)5G215mV-!z*vi`eB0S1zG|2;?X2;glA#LJA$M(PZA4BfCJS#Ey`wP zgLnyL|4VydWZ77yRKR+CZOeFx{?O6r0x5fCnmY2*^neOAM8a~uKx;dfyw`8GV*3`~ zwq*yaNUMA8C(sk<_?jzp3($zWC{!=2wHPJnv`G0_;?CT1@?nlky+gcJm2FVmC;JwO zGvy5Dcxo#pj;+TNbcW;nNEhoIMXT# z)8CIX=0JzGs1N__H|P%XXA;}mW%MmWB-Yb`7YjvEe~u1i$HWli1F&u?p*T^X^+I2y zo2ovTY3UqJefa$X*v(C|?Y)8O&XhZdEi4@~39G6Wt8-E;y4&W$IKpk3_#YQ(4Zz$$wYH zc1md21ri+bD=34q;k8<5%J#A5`VM1U>hNq2x8!I_G2v-!MY?uhuj_VIR8f+=M6n8# z*5CK0oy1HAOmB2No{THu33}0e5o0bVr!DjD#1Zkah$YqT zi-%k7d3$j}J+zBZgk&TH5oeFSc4!^Rc;qoxBzr;k>OD3_kdK*%LA5jSXblS)vhgn$1W`&j|9 zcJd4Cu-fWjD?&W_2kT7uR=d&IB){w?*L`oZ5N0FU2v5WsGt2LX+3EXNb=8JOpC{`} zbBxX_x9;%!?hSw7#H6G(mJkvNm~z7$PI@@1V*6*rAOLH1bS55M|D66wK~1&p$Q=J) zebD3AOkl-V9~Ag+jsgF*5B^(hY;WRdWAV3Riqk)Gkp5xHmGxJQ+1Ekgv09|A(5gad z3!ge7w3;di;G2W>3hi%1)ZuV$RCe7fCa*Xub>LT|mws z@FOWHNZS3p=|bw%js6L}(8<1$j7tM*D_S#kr05jPLP=o{*$yFkaqsvq508$z0b%1c~&&*ki%mX#S z5PBFhgv%rRDQ(4jQA6U}aF=ADr~7@@lA*$KrKR(t3M5dA*x+@0ci8D+*W~KosG2yi z)NaX#)NtfA6M%Zm^DSD~k-8DIqA$-vZ?gN(eHl^+Fh!o-YDYWE?^q>FWdmJUgUeLY z)ca6%0go6r$lrhpHCMx#Q-zwc7i6~PM>eCwWAmG!%3YY=+&_+|-Ys0+m;voM{2O%m z1Q>2P*|yiVM~$r2vip)FZE;mrBo-OJmE`n!zyl(s^J=NAhLvD9)L7OiI2cbl68PX|SaBLdj^iFkPkzpk$z=EG`V)rgh9 z3a0XrAQE2qgIORPBy1`=GJT~R9`gM0O)>Aw`d6%nCY|G5O)YU>N_plK$^9M2oU@U zqymbxMTt?u%Hi*kAas3?wCdLg7RA$d+qjX0w>+-1e!SF}1S{SIrd_bwo>`nS4=)vP zt)YS4CAPI+mnhS8)y-n_D0pVlibHeydCTZbLI)5}IeNGwVfxYap4U{lJ>6tN06?fg z*-;jIkgDlM7iY#5szA&Iqrz_8Fz*@nVtpuvrrV-3#2YZ%b-cu@WiGG)rE%_MC?Qkw zJQ-r|kNbm%8j0H{<~2rSqO?R(dzT;xP?EmxJ)9hB#`fBu-kzN~ZBBaW#x8o3Y>fE? z`>V2JeUp!Venp#&ei3eek!^tgaJ&DnrTuk6{QsV9{cCAk*jkzxIe+;g(f%EF_SZ32 zl*+o}F9yV)Gio%j!nh?-1k4HX$-sEQ7$=Q4%4k&U=OQA>Jer&~2R)TBd2M4|bjoRGzU)gqVZ$@8p#m0(L zQ|B+zJ$$;?q`KYxbmlfKfNyohr9c>i_QLcTA2s{7WNrpQV}4r5GIW{_4&{~+M<6GI1Ut&(uTV&!^|X;H4v znd_q^XM#3Wu0+4_3PW$PdO?Qq8bGZ_WB!oot?e{s{{B0%>#TQEOWldYoq~Gfa!em_ zVW1Ef4|i?4QLI#y6Unt8mz!_LW*AQ1Kr4$z^T2`ED!pkDk@GjQ(d>~Jl68v!PajsG zru4yC=`LT!VxHCJC3bi|F70!yg%Q!1N>SN?t$41QI9^|~vnc7#s%$Wq1>m7Gb;dy5 z0Y1a%N=-6AOue6McbcbY(Sf#*99zgi$v;By#a`88al^_=aX$|z>t1HS*1e=rOqM3z zhWQkqtFnRCXF!mP9jO^uPBS{6`jvpm%F)>@qM4pAAFM+p*1uBP@JZAn{Tok;2MtAn zHwwq85Up6khhq-T0J|L*FTgV>A|j;np{4BB0uYB`&d=gUf8MHVB$GAp!|OZc49~R% zqZk8!Q1?@T?a^WsqU5pCK_IBM4G>v%+Ylxb$&%0>@SiU>-%F{*2QW;xAc|E~QgI#$ zg06&bg%19P2NDyrnEh6m&3LvQ&06wZ!L0Z1O-TaQ13U3o8R`MPk|+LW(wqAKDnok% zXY>E8z$(?vznm}sCcs6>N~#y&PKFF2*Js^@?U+cQ+9Nn5EKWxaN#cNK>U5S_YeQC0 zt^ktY^T@K_;cI~>WCsTZVvgUY5wfzg;C5hr5?K3{?ZK9XB$M^Pq^ovvdOm}bN==9` z^BVc8cEa_ei`XFZs~qAfV2{Tl2Tmj@1QMQEjIdkp|5;I?p7=4jqNcLoyrSlW* zKta?j4B`wF(6iu6VoU{6G?vw9jN0;aHT)ai&m3(zpPo+4ZS9@Gu(l9DK&LcaS=$TfcMnEmd9>49V)u^KxuDsBpqO1 zm)L;Q#jotFC-#Jhw+I9^h>rqP&KR-Hr})S}#cj$yjLYc=+&I6ttL7fvF*0Z;V}4Rb z2r~+o!NpRnq^M%f^(L=KGyzsP#g{Sdd@HUXt+vs2k$C?^a$fJKwlsU4T%qdr zq#c~^!EXt4vw))wXl6jHONC^I!O#rVA34>^SOX5viSglu7uuFsq0xFZgXVy1s1Kmw z?8%@={p|NhPSB&yZ9|M=Q<`m>wZ8XrI){=lNVMx3IKaQnR*A-{@)N*X82}QMVeI@i zr&(!y96mJZRIY|4=#v*2ufXsGF_?^NH{lG<=gFl*J$~iWA&mEoGKD^}i`-mhY)h<+ zlH-%JmV>FqnqYNaI$UgL-lD${AFoI<)9LA2ns0^U3? zkqDjSBwHRQgZFzm^|X2jPXWn&ib5k^7c4ni8rnbOGq3IT;1Eu=_Bi zRE2fFapikPv}x1{JcMXqf91qitl;~=DPnV`!K0;_pg%E=Kb8Krcnv%_!qv5fv2e{1 z3WI0jrB5w7-}af6CfCTlggRCwd15xcDDrX$x9z42zBxn7+=x`NUEA-!Rv-!({c0ee zj@&~zc8ld!a^le|<> zq75En{GisB>27RsD|w-h?E?A*&vrHDthh-o`8)A8E9&m66@8_h_7!4IQhp8l;Qwpd z>A!VI`PYfyKOIt%RMu^A*#8m_;X;7B9-blRri746ont%bYJU&KJLqFDv~(*p86smp zs5}G&5$6)j(O;yX9_W&;D$Sn>CURslo57m}?6*+t)p zRN$&lou5<(=2cLtUvP?1!X%$kqEN9BH8KLABIhLvzjxTL0@*2zfq2))TloIsw7Bvj z-q*F;AVsfV1--j(fvmIGLl*IU+Ip@+R6S7VY*w0C?z5+K?5{0mAS*kLechs=*mPz1 z#ZS4*T1Y2lD<8uDCZ`cZL=*OvNZPc-9EX@3&m7sEc+gqz!2hhdH*Xn|G$X;~$;t{4 zi<_-k*4IKlfEA)_fDIhx^`wY2fmAyMZBY7-4=t)-8tXy(i4bB-`g0i z+XqYyEDfvjOk&rZNpN9LtSaVDttdtB|kiV3qTB@pfc!5)S!+;EhIQ_s? zJ4W)L`G~zqHjI|R-Zedjw@qYw`4c{%WVU7#M?hAZ#eXO{Q}HQq?3}h)i*v}WL{|W} zCf)vA&*4WDy`2NQ@2st)>vBspiopIFpCR>KE5D(WL9+2oU_on4*m8L|wkc8DQH$QP zPE~fu24QSc+pI9X0b=#k)?_*{9PiDP6t8+>N7F*9jhc)a^|o4jTt6+@cPuWzohu`0 zKN9hF#ax7Vd(d0kT`>lSZXK-)aq1oruarzSOxEjOME*A)k1f6JF7LoIuRlQL>>dl) z*5qhE=|IiCRWHEUBxC!qdw%_cv2QE-Z+5MrF={$=YX}WoDW4K?*-p)3@lfZl@_T<2 zsgk!Psv7>-;U`MDevVFE28*r$yvKD2V?p|IuJ0hrM`rW&TqwTnU63cU96M9xmvQ#ER_vmWBTr;_J8x*|X!tM}Hc5nP*~KxnOwmx2h`t1Bb8jW=`WWVHmSx{r zENozB#9hxy{j8-fX_~zS+@T`~zpsoSgo+g?9t`|-k_Q1<%29>e^fjHR{SzeodyMdZ z!ha_NTVq4Jzl9!)s(pWLLc89m!3AsMVJ9qW;I$hiyr`Q20#C8R$i0ai^{sglw34e( zonPSpqu)nTP%6=QRo86phexgP)MUo4{g!?Fi#NE_vk0i{A@yHmc&%EYzf3Y2k}?R2 zf`g%B*|@q|YF(yDu9nNf1Qy5Jc3P>PTI`a=_}sU^vY#TV>hTvb^3-;y`_!h0mZapO zwwc2qD9V5<7h+jIOE9##HB_mkbzmW)t|Ap#Q)cg~LZ(=Ud>4Xe18|_&mCY5_kR0lK z2`C5~RFrja{13WpBJeihB23ZJ#7TwoA`I81FfUUj^MbQU2{g~3(mUf6$`yU6b3XZ- zhjXZ#tOiTdUkn7+)uHn2m{8^Dy@AbhNIiFlMLGbF4on$8qr_=@%dark)HHB>6O&Zb z*B73f{kz4>l{Bn?9)Qi_cuc5=lO~t@dy5$&zX;T=1)#~|_ z%2Z_H#KjUld(kGP5G-eW&icHeLO-bULK+tG2YbLyc26MrI$xtduaZ!=6rTex8BrWu3WWGTSZ2}`tM1heOUtF$t z>W$7=Oye>7l~$qgKIU9P@2QV*nD~RkK*j^E%*urvj!CaL(bjG<8-J#S%W531jmc_6 z4bHeVe14r)W2nXa9BG6lq8woaL`QGfI*T;jx?YYK`PXi;n?M`GtHHi1c~&SKO^+@r zO8WuvdDm_y;|?vM-k`kO!}ro<9GR$`6T=$jsE;SUVI`&MOpj}X<#G|7+Dt8`tYWbwe`+@vR{WyZxh1DXbj+9W` zc&&uu3)ZJq_`k`kd2t^^8p-GIcYuqMn}#bd&KB}aqJvQx#>zQpVrSVvr$`i9Mw_Xl zUMX0RgS}(QVj(J_+6gdzXJs#$Z$<#PE$6Hcvu0_Rr$}?Ty4Bf`-AQA=%9;gpXGv3$ zjfJO5zbL8AvGzB!r*#POy8LmAbTM0FGGv}ESYO8#(kVe>1l!oar}!}?i)!;p9Ve^t zvQYHX0hR^_7`huPcBn0kSbFKlcONBp@sj6I)AUScMrYr<6Co#agqnTKO72iVGdE9I zonm~i9Ty3j{~@3FvyyZM3^$M4Q8TWyU#9%d+^QlspR2K|x_l&EXYdu*_t$Qs>5GZk z_+nzVYf^y)NwMk!yV1^VYXl?FZLtR*5)4QiS=NeV<3J@>x2iEt#1CNZ$iT?Xd>nl9 zz3WsnC+5=9gt_=QHTs}B&4!X4TM2rNUam_(`Ye%5g~c>diblb>5q4mAaGTQa4YsjRVVP&`TvAbW%& zZkqO^P$gKFMmqb8;YUgoAZY`~CTrXkdQyh2S4}^y*+pzABf8S7FHIWRx0zK@Wos&CARXT(q za#!q^h|9z!`XR;1R$PrN9=L1mFg&g2Qa*~MO zu7@u1$d5vdR)4CCTb^y1g_vv6TfL};z02Zl$iLwxk@^!^MidiM(w<_)y0O{YL$cZb zbZWMIQFxOx?=T1dWKWB}39~G)fq9XwCiFc6(P@;+WkYf-pwM(>#-k*)kW%57fedlP z-ckw%T#}u!VyY10asz_uCz|87!8Zd&&rbS)Tmm{-B1>&gVSr&K6?Aui>>}FeM!mRA zGUS|G7}Vl8$LcJq9K*Z5onaw&P$m;aSuw$(v)#NM=3Em?CW>vx*>K_=!t_zgxV~m# z$mlm!Amztcu)0owc47`;_Z9CmUe0C>OB7fLr0_MDbQCUUFauUAk|T}t+&=wJk&q4J zH(>`HU{juyh2&BfZ%mCJIHoOMm!01^f{RJ~U_hEx50VYem)ZLDhxL`xd`$d}oU)bI zL@orup^Jd}f1QmM6swf@MQROD5A8HM{AvVsf7mrteYK&jJnQH*$$Lj-R$^$Vc1)pV zN*-NWMXdf6hl;zqn8)JsYdF*Arg5cpiyfvU{*?I;SQsJr(?jv7 zP=)g>T`U*B&W4B6Lo-tKl#k2(t%5eV$Rhiw@OLIQA~G7Ivi&HeNh%#=kxC+G8jmF$=+>_mxQSqcX0KxC-c_%Bxl(_9 zN<)X%Jsj&WH9A(!_ao1hYm&E9i^b`L|Qda@o6 z+yhwUn%z|;mI1b2=Ue*=z4-Zq)ya&PnUmwjr3BzucmhfT;c}C$FU{*(O=gr{RhD5Q zkO?MW&WKVp7(AuIs$>m>2BTF+r9TuRP{@`a7VsRKy1!%$L-g)+F0 z5nVN(hK-3bRvDLsv6i4tuT_r;SMT0%0&kqYS#rzCZ3gdpdTdS+NZj6KWL&8)h!893 z=6d^&0Hs8+!0Lx~ING3vv9g0y=U#f;+vBmqb5^ zoB}v<;P_4+gOK#ZUlVFpD3K93Goi88GLH}%(jDw89)hTVb6;8Z_6!u!4i-zL%s9!^ zKSofxSz8IJYzJ$A)}%%k1C@$WH3^*7_tuVOv6ha4T}(Yl#-jj)L(1Q`ii(K!AR6Gy zptf7KT^UNZ!R7-eAK=TEn$Sop#Yv2t7xN7$S5j(%Yf(syq$NZeLuM%Y6wAInSXxQ6 z;8zw*;%MWuh_heI5sX(S+@!d_!Jvz=;Yvite4v?#X)L3pB4+{BV+)`vl$6?CS(B-I zqn}5|3?`LOC7Fom8dHz09_M>%sysj@ofFmzDQW0{76XHIJCPy1#U})mW4Wy{6Z^PWyqWcwSSqW0YS2)&W&=qA^y28V(>k{~Z(G zV9NP6IqBZ>haxK&trhfovhjmh?JG502I|+lHfak*N`}6j#}A_I z9QkF)AUD}U*C?uA?t>5X1V4~Lv0#Cw3u12!#fjov%@ zs6y*Q3$E^-N}{^iJhQ|(dkSzcwnVkUBM)p{^VYcA!;;9AD)>|BG7046>DDF2Li5jD zCfzlcuxuvRzA`RLv-UWP#YEizS;9@TK!-AFVJSkK8cWldY zq_$pMm~7jckvW#tHbFC&#Uh7lFHw&-tsM`+XsBD6#^B|%@qlUEjV^(LUdJ!iSO?em zZ7`$x)Owx@g*T;%P8XpvwSV+qx2kuLru92poW1x~y2L#U_2i z$f~5`=PA5>9$z+7ChicH)$*L4oF#4!VQuZ6;rQjy4uvD;CNfpGpZ0$HFg{r^X)>#be8AeG!M0${M9%LV9v5X0c1Jhq z-4UUp!h{#ZzQGP?@+s9~n+qr#u`bD(ZsZvimv zVuvRUGdh}Sn1IO?Y|}-mDjUpIi>Dg5VKRcpd^#G5SguR9MvKyC%Mj#9lj;9(F6Qyd z;q9GtL}t#O3yJYCwvE{}{$96vsb=4qVT4{~l^UWefC>QW?~1*dEnT+i z#BVLrAA1Lw`ZTDMPA~@Uj+Tsa;0{qMi9(y!2yn_l7&@A7SU#{NHDrumA*H%EwRK{= ze4Zrrz62z5d^)$W0mz-m(LP_2j435m2>Cfi8MkEr969i>$E-wP@H#yaw9VQ3*_Cf| zwcAlmW6k6vQ&RujbiW18PTKUKc&Eg@Obi6~;z$9c8-=WPrzPy~E82CR#K^4g{LSWL zo!&}3d?lbrApQUTqWtrN;^<;)`;S4|<;R5WIs;=v9hQ~m%RN^3w zqoYM(J+`Z;M3ZKMfkBb#bnU$*Kz!6Ht?hMM_@K}_r>-zbUD^gWUJ`ZAswhfS6Vh~B z?Zgu2Tkjz2#WW%TwSh=jl`fYI95gKx6D95QtN)}Cp-Pgb|j;|21j{kGf$Y^-i zz3E5UNhLNK`h!GE^nxy9qPSr`$e4RODLf|RrWO*<3L&5D?{;Q_26#vyuM0Y0BBe z+Qi1h+0ldkKmAI+Hrs!}$S+$gKcHmX8rRM4RRx?8YEYX@@X)LffPO=5+kE9@ATgNZ zfqNa&Y|JReqcn7U`>-pHv!3eSWF{xG6Gu7$KDa%k8bz(hJa=oMCkWur1037r4Qwg9 zy<}+%jWFbw>5<|TsCi`~Ib8$=d@qqsX+O|b9w|s6;fSn`Z+TfcRQE=H;9W$+)5QJj z`z2GCZZZ9K53p@7fKUTSJ%2Z7a3k0j5%WM(g_%x#wM7bKli1pdNbG)c8ZjB&7#}n( zK9~y~s&c8sPXIX4nuH+)RASj38}zQ(bEjUs-?H`Bc*b% zE@jQTKN4GAMN_3TtU%*wdLYdx?5WwUw#r0ITas{s*tuF9K%yt1zb#VxHMu^c_vfrJ z5zk6AC6{y+%~J^*878{j7Ebl(Wp{N-)YQyJ+{=1CT!D~E0z-^IfCLVhuanzA#IqHA zc*uR6_u6of=;jlts(!CE4y;qw>mSX?K;MiZskU^&X~$KxN}btdH3TE;2-zPpoP&#& zrl?c)T*g=d2tg)-ZT8npbH8SnhRKq-2k-7d7Jp+V*uhx>{jH=rN70(gke?o1QNGZlR7BTNf2pUn+mWcXPiAc6-PcDW+X-iU5FzY&yzaUXz!U4Pw1jecO%%N!H$1GuGIu&) zD`|iC{KTh$z|G(9h0R^OG~4)?woY^Pa(bpMBEIw@H_>`)E#{92s+`YQ*_)8;@W!Q0 zB24qPp|Lq(CpU$P@0|!i^6`#5l!Kb`+1h26u+=H#F9YR=Ww5nbI!h=j6ettklKxPj(w8)D6!t#|sLh%Xw{tF*r z&q|sBPo;DrCSH0|uZV2**=KZV~_>i-a4 z0hUWz(FDm#qBBEm5STjiR@aCGI?!c<4I~0mahK6*5$fby<(Xm=jU`>< z;WBg$Z{7b~`?!rCJg)>8xwi@A?JAAKe!lL@=lWNHG35SE))-GeC$pC&oND78FQgGd zpn0=0ZdaCw^Wd~twY@JEphz|3v{a5B1xT98I8hS2Hz!*bq3top25~yFD^uFGwziqv zTILy3#^bZ5K$#L=D^OK`vCk?H8Tt!8DbWR%ePchJ>9kL=e3!w@Z_-y=JsDTiZ>88Zg$?)(UJFpBbkCWBE{!mLcaf}*^dbmRhNL8|S>cy{SWcLOc2(f&W z1q?_A$k_PWaFtyPOoAo`B9f-oGyRHVbh&S3?%H}K$hYEBF6PbvhQ%NnWD;Zr4|2m@ zzQQ2-af`f&^60Ymw!I#lKS|R1``rE6=msbBrY6Vnuyf9ui1;F3T2i7{AJE6j60*B* zdtoq3a|@vU+A$Fg?j znvnZS=(K!LPl~pIq2tkOm*fxD$BS+5w+ODgfH2`C8qi*rJ1s7r89CeVKaa8F~I~`bCu78ttnRDDd)4 zGFsngn;XfEZVv5q0;HT(T_hWEaH`3wux-1<4DMj?)#U^RNFpP05XDu0gx<97=l$97 zL`KWCkN3l{!UucwF@ZHUp-=OH~OX7a_Dc}a@VQw8{X-MN=Okq$9lpxE<1S75v!*{ z+Of>-45W6dr1`g-Sp9Pqy;9CK82_L`CG|Z)n21Oy##rMSuKa1#dNfkgIfjA^Ul>|H z7IZJ-3X5wO1*EJ&UA)p@t6xNSS$N{>ASvZ*6IQb|MiCevE33oT1TL>$wd}cUW6fT$ z7C|&IgeF)92x}d(UFW@B2JWpeb{NM{lRHBZt|@R@nVI;lG5yx7%qzh1#1p*W^D-%@ zel=2BirqTA7q$S>aT=T!D--tI0phb00%8w|Qjn7I@@p~dwa&#(h6z@4;(j3 zGt@J(@Lnv~hHH4jI2CLzdbqtICVHlY)aPFiS8VfV9QQRU1q`NKy5OY?{6EaU@BJEA zC}R*OZtl$+792d2Jqnwm1BI??WRKMuX#}mA=9xkk@sA*(>>tuL z$oH6jf>pG#qy^W6w~(M%LTMZO{v6MwC-%QS4jBhH0Rvx{<>J3xAph%{-}xV30VgY3 z7pH%qlOp9l%XI<7t}k?=5R0q5TJ+^+i45I!pjzrg5pA(lp~!P-sg|a*3RRc)kE4Ss zQt|l9#@Q~3inO11TNxTr)6>8l0WpswQKG?VjL<%R-oZFCXxw&GAw{uPVzvByLx8JD z00n|4pqM&+?UO{{Vi`C#jPSiATVII{4MGGE4l!$fVlp%mWT{H={UBK27S2+cDsPFh z&GcISeNEst_uTXF8WQ4Gfs>>hmFHTBvHDcdhf)mUSegt$)HBikzV#cmAYyS8^Xj`H zQ*4>w-}qi(EgD^-khVf#+`nXXjidI!00TVekWV9jRi;C-W2(nJm6_rwLI?}VDl26; z5ia@-jJAFmnKS=GM|ls81)81$XBW#hM>fuSlE%vmM^@3dZ7uU9#?v=+&4zYMQ)=(H z9oW$1_N`qVH!b$Pb z#dObdi}JexpI)8U%V?7rvtnTNZnD_3SAFH9g(4#vKp{~4_S{;e0zKdQmd zz{&hC!mCPs_b=t-R|t0Nw{N81>oZZ$eOG^k6rTq>PpPs{*3v>DYx1nikSURs4W^O& zQ#tv4u9;>+vR%d3K!fzUyW`FM{owP;7Q%HmHjOfqDyf$r@Bv5J@U{7X>y%QTM$)B> z&iY*ZP6+`B@IV4R2*Vo;By)7JDz z$b#j%m4%B`rxuwzmD;&;N9`==mXpZn1>5{Nc#+dH(~n-;@bm!J8TIR#lrDa{*90J* z8tx0!EV;_UI{WwEEfaeDncZ*po*vI{r{^f4JNkcCmut0r;Gib@ZVgHT8klY@kkG6EuHA>~v)tWNLwelk7=V&L>L3-#e@Xu~rl3H4qvnuP3;NQ{r&2 zJFj*`YM0Hi4le;@i>QB53EP0Bzgo9vwtSn!h@d=o+yjG4Ecu}=)Bs%zd?|=jx!Qmx zZS`oJ9j#!u=H!fytOVjSZhAAtr?cs3IadA+m#08n_PbRwKFFtV)Tt$G%Ma5&xgZU( z0krfe4mMZ$sX2)<(6o)4d%hIZX-iq&ct&a1rLF~AR-bV|kQkpY^Gx1vx^e^d^I$T6 z<_K|Rx1LI$7S*wEkJ6@jaAJ-QOuCRk%=emcusr5X7nA`S_8)*<#6XR`T-n-wRi#=@ zrb;8jBe`M32GUjV(YSBK9Hy?=#X_pg14F$ZT^07V6rZ&X!JX;dijlSfL-2*uhr5o^ zJ^1%j`T4&9uyT8}oxiBiz<=r$D2~Co5_!(u#OHz;d7#A|!>xlWp3?>ph{h9!lp6LQ zaZCpm-2oBDdc-dv*GW;ZDu$MSo_Q727xbnrM|1%#^>;yHubc{b2-Cn1%(Cty9?B*> zJ7Y}*5i^+*3)A~PTt`fSP3ZIxDE#OYO=TKG(Pk0=9Ioj*2AJAd%-M)Yw)RsE<;8c8 zq?zaf`S45~jwFZs7KCZV=Vq=@dbiBAW_Xu@Nu4|rQ}70=W+loFUc<8=VaNwWYXaz; zHGk{nqAYiV-unQE=)k277}3{OfG$uEl?-a@MB!#+VHnG%MZ5!+(tdx?3erFMEppl# z(%wk`oV;fYZZ(NL{R!GDy8}E1NQ3rVLKFmK3}KIEx51LljWZ8m_iNYfj4LNKfo3Ye z7v0Y&w#Ffdg)%7u$WT!2&Z$h0QH(v26w)S=Q?20qWmw<+s0*h}CTWmc7U0f;0uAFxQO5Lg)A|G=(bsuHfA?^Ue3m z&Ne!@b~8ItyT8Ll5C#=8A~e~dS|n7PdYX#{vur;Xt+-|(ZY+sTMZz;hiq{Xhokq@y zS&tpfba$yYXf1WLgH$6HuAB9P59eMBJ5^{05BW3^Q6ABQLaxg=@GofN840ttTt3+W zItu9H>`68GkdFj2gEA|Q;&A$Aa@!_}Xqh4TG(eK`yw;ndE&zmV`Xre8^`-f2$8H6F z$|TGOl)c_R=HF$>FD5M_3e90N^c@zhooPdcsn4v7)MKl}^J0mlbZZpmbf`x2J(09e zSzA>}K!&NJt{$w4p0;Kcl+PNClH)`HN-_mwIILXx1;&6CjV`w8ir%7=s(ED%^hR^L z87#~tF?=O;o3-!)liS2XZagz;lg2~^L*k?@s{CXNo5kd+bjJ*_Jv1!K^x$RDKBlMj zKq;Fp6!eU9tFU%e63+p!K9EsR0%cd`*VEsqzIBsFra;-#MU`7qRL+flAje@}Yqrwb zDm5M!^Pf!aRbnv5@?5GlixidK9Sz9DXP^t>hDoMSng{r>JK@pF2i@zBn-vBFgUM_k zy@KZ`GCDv%jzRM~|DEJP#0zri7h(Ns#IAo!5GA$Fit@36<)`#q^aM}WXLCVzn#9$iploNMoiKQ&dVgX~dgivDrb_E<`X|fI?j(b|PqOb(4 zmb2!3H^4=#+w`f!je>nca5R7-$9F6tOEeNV!jvnWf+cNeV9wt>x`|3y>XzzM8ooUX zpN*U}X=7(bp4RlnUzfRSI8pl9j6oJA<>U>#??)0Sl#LF@(>M$uetNrj)B*Nqhw3_6 zMI-aj0nn!QEDx`pRr^`nX0?w%K%mt2z&>8*;#WMPSrk{^XVq?EkTQT_SPE(uiEov| zIthbKq;yhNN0Px{84FUUW~yYA$q`yIGO|)VN@K`LyQLiqv66OBm17pXfs#6Yv>|7Lb%(gApv1p*$rei`2fuMQ5*}6hv>pF{a@>#*(swg$p{z z*Q-QNCb&AVMucz8*ar~hHCqwp-X4&=Lr1CPo2EVD_TNj9#@6xxPT-WZsM2zm7{fcB zpD!n3zLzYIV0`_2H@i!z*~-=>=;`4IS+xfLj3a=bFIUxC#9XWcFGf_VUiFvac9+?? zpt#q%$FV~s$OiPo^8J`;-_m<}J>K0tx^tG$!MNfMHy=wJ_PD&#M@&3bn5)vZe!Esy%|xywbuly! z$H=adga&Nk-CE%9@U1QJFn7qs5dCWU-83MSHQl!a$?rUNsRAWw4X15ZkUj0|UQ3%6 z^jt>Ck+mHZtQRC5`m*SK%|8~w+wt4HFF)^h=GOEL_SXzx^#THaNfk5Z=v`pt% zft9=WV&6t&-4gea*_XnN)dHe$Zn`Fitd@G6fvK`_Iw$mE1GH-v4yS*(}-pEQJR( zsV4E@_;ICfTW29)*01cGBCdvn8#Q1sQ}2&ssb)2c!hsz#f`p3V&gUw>3Yy(M;sAOI z>f`+x;FU*=Bhsnl3FMdHrcvhY=px!RAX$oL*ZHL#v>&s!CD*4=F;~LSRu5RCHBHAb zi3Si_*9jDH`ye-;q&M3*R#_~9{yM(kL2QN`04H+5S5_~E3td*~o1gcY-JW8xiG(Mx zL7u@j*B#j@*_WChJ_q$w|5_$RYVw96Tk!0TV;R*yt2!b{;F;C;CRPwe_SW=>weP!> z?e9sCFM5;3=b|I^VWX0(TKI$<$Vb$AAOeoH+Ay!M4o-60yPQRRL<#8De-kwKhdb&t z%|h;RsFuQ6>x*^%GFY#~0M9>tNQbiyA zBHavn$c#L&E7U^_;C@F@;ag#WyH}iska0=+Go{jJXPpW;WZb0h z;cAd30|DJ7FU=2QK?zm2x-{o_)%K)8kp@}pvX~WiKG&#Lvtji6Am2~s=C}Wmf<{_D zGKQ+rJ|MxH6eg`vHUu!qtqABi!75`;S2!0sz`!Fxm)g`)7}PgF7*rR+kfQDM>ss1$ zW+|pC(VEy1@DA9PNg_=85mQ-hE78J^p5ST5erJiRmHH9o1#7pNC3A36t4(*y`IdE> z5QdI`6i0UJ15ojdkw2`}kZTp17vsup&`Yr)BA`U1+aPM}ty1AXJDBPgs zL#b#2PNrO~Gpv+YX)>)h%L^Xm`*NK#Ri_7J>>hD!RqK4{NwjMU@#u8~A}3rOK&M`{ zo6ulv{mo4q4}r;keggu6_U_>r7!PSu^&MK{P}t-^pvG)du+G5BA3(CG@Ko&Q^1q8^HSAq zb?(YiJ2N%gh@UY~-x6}l%t6s=C%u^^eOHMg-BqY<0CU94Qnr=zpdksWX#K{!P6Up! zlS)cS!SU?6*u{nA(n-4yB4Am#^VibK5F$I>u&{ z>zs2R400^xtD?ycN$O%WE7BVejg=a&$ZAf#23XN3o8S1(j|88(82VsLPa8184I5{T zacJu{0rcMyndOfB|%tWz;loqGNv(^xXb`-pJb^YPsbw?nPtgY2pJ+z@Z%*GIIAfDo~CqzarirKrZ18!OX`P>jiy5V5@% zth_>)(;L;}a;;lK>nrx|XXDLXXo8;8HT^pSr^`A(`Z=wGLwkaojh$RsYh-`c#u$TZ z$YE=yE!O+r+T$JaYXSGIoJ-bpI9?TS&cZB}elY}=W! zZQB*QDzU$@jQECNfzvha$T}Q;f?G)3d#G^)4vnoKP4bBVK_H>?jpsQ*|Rqu~srt z%Bu{!gS#Gik^M|4J3O4?lBC0ty7p&;B#$o=j7DW9F_`F&s5KSx*J&fjRh+ek3n)gC zmKj|V#8Aod{f;c0q$HV#W1mlH`-b5Ay-akNO2nN4);6vvPO+RdNGo9vR_-alp$nfpGq`KWUKWy@X9!#GkIf^# zonc;C`o5Q*kAkI#unf)Ns!ZBCt7b#{fa>}g1Vj!tOGJM#a5$!@3{^@-!~wB~ZB%x+ zpj@abk+K+URCmw;LC{0uR$-*!ls7WdiEvKddntsEd21@xL zwwbnlMi%AE5U5GgPZp=lz|3<}F9mr}glepMh*cCgfX3xm1zDsWNBBO;zAED-Ui{4+)F$Q}=WACVMVD}B6+ zePnynrkW`SfG(t-dFq+xZA{K}S9Shs7Ml=2zP`zTsLUF89le1}1SWr4?4ViBYYjtS z4w+a8vI)b_6WFtyd4L*_2X#4-D@+7JpE`!yfw9kOtw@bPJ;7`wa;Wb~;~7tODt(J< zvJ)vYpF$ajJSazPh5nNrjNWE%2sK$>9{a&XHwqCCFk@*QXYz3V5`tIJcxstZzKj5@ z-;!Ai%TjdAY2N*DGzpv9>G0nZ7NMZYnKWp(a=q+o9J%BXg$$uV3Rx}Q|Gn`Y=8c+0 z9qcTckU+zLf()!gMSE_E={0{^D@6Buw2&6&jl(H?Rj%d!&+H|~wa+RH{^Z6q?BzJo z+y&yufC@JcaP-(mi0T9*93~)X-`>|MSUij?FKONMU9&%lvQkO{l` zZ!UI+<2Edh=H!=^R#)fXMR89vO6#`iDOV}3ss-QJF8-H(PR{h8!gDU8+Id zu$#}xaj41~h?NB}D3i8(Cu_NXaIYSA_OI63fS0zmmlf`S?MqwlL#*%GhvKJ@!Fw$0 z+s~HDAui+40WOT;AzyZvh@$n7ZkOdWSvu(CVX+2 ztvVsobbmdd7}($@rJ4~saFV(2!VW`$1SlH>-UOHhw7EV;&H#UP#wgJ8e1CDH(%}E? z=A!=3Quc?CZQ@ApX6I<->}c|LZ(OV@W4kAgym5yP(FY>cSJVs&!N5$&P(KPX379eA zM6GU!)lsN$DC^eK4TC#|Wie91WDtcHumyt7;wdf+sMmb+`Ouxiw;>5DiQg}u=BV)N_ygkCA7&%vD%L zn;?(mMju~;GH(>M$xj6uPt4UG4hV~+D)1w<2k{nqYi+^RqFS*bUc^{9bn25Ue7te| zWu2rFDB;el%PEkidmVFK++bZ-l; zX|SPUgsLZ3I6Dy?v71V}8MwZgyTz9LJ-w{8;4*tJ!mSt~Em=gGJ5^A`!Unax5X)A` z>_zN_DgmQI^u>Qa|BDS`muFBYR>B@8Rd~n#_XDZgw6lw5 z)RX^;!;DQjp_lNO@^R6VVZ@sn_QQg%K+*5($9oJlxif1OjyC>w^?)BPZDcl-3HQW> zYoWEN;$^l{9i6U5@qmLd+L6-=YY3;59h7%ENvV_hP$R|n)0b?29&C1lYBvh0)GeB& zI>_%0y2Vlc=P=dPNPthtg{phbtzC^;3s%U}*Wk^`IxLZDzt()nBV{h~HI&ZjvLPQ{ zzBi?GRByai`GYE-f{m!js0qbI8gw&U>q)Py?n`a|L&?gg56V2=;+^8U{_8Y3;~b~X zD{n1aDq6|hB`%(T&|%F*K=s=T64%OoII<2=9M@Lfqh+*N8L$Uto%+wg>k1RJ!}}-~ zi2l_>^1p5>{#V7|ZsGht&fS1YkL^cW(s758NQJr_ansaWPuet*pGue@%_pkZzCtiw z0@TWck}L~LzJ>W3bQKwb;$>;@xqf-LD0{Z{UDft zx@8DqLokaO5kD;`%l=7^f?HLdOEX+-r-m2F z4Uwjb+TF3d%?Y6i3PfKt1m$VZ=>vpK1<;Y5WHqtzfp7}Nk)z<|ggN!X{2=>eO)#FY zY57@6Aw!|Q*k}39GBMSg0c~7#KGHn!(Sx?1zbkK_a8+E6UBWPW0DB|EtDIS2gD{>? zd(BYXT0}Ont#7=uV9rPKBt0k|CM+#p$E9&aIFAw2WE6!lnUjaaHfC%_uQ#`t0#HHW z<#lbFXgc!M6RSwpf1T}=WDN9l?+YDT040lP9#tx`*#2hAF5U9o2B9S+p5nkpAE5v> zBi~7OJ5&$zQjFAN z9zs}Q;oIIpv|B-84Sgj~TTtJ#A>$z0MNbViI!?tJ3y+Wii`eP zfB?~o(IlgKljXi7JGd-HJcP&1uY$n$l0?GSs`|92on!m)n+Svn{~Za~mK}Q`|1k?v z+_9{Tjcxe311SP2X=_D1)p#vcKPF{S-?W9==HG@z=qa>zw+{(0=sz14Kk8qQe~|#q ztnCc{k^qC%CO)#&kUP()n{ng?m0(ZysZ?)BVp#Z!62n>M0{2)Mf1tg(S>(+T@NmfW z+2!s}roZB)FebY#Hi_Aag*zIFYPJ&-AZV5~c%l0GA$ds1uWJK! zDCkU>*koZD>4r{!=1~L&&}0+}L6ob+F$UMgTS9TCK%iyffX_r71dB5Ke ztRc}5M5gnL0I%K-zacB3abTXIqZd2Bu8fXNfv?FM6#gQJchKhx34$z>k3hA)jkzfI z5cz7|g=+yE?4xHWg-bKCmPMNhsWtRjn_E=sX6`KGkQguIFlqDwCilOSm}0h>o-iyA z;tH43DtnICqggaKgx$`47rr&1^LqXG_6bH(ukMFUlRje2mAup{Wdt$ws&&7F3eO&D zM0i?ixKAX7v})8HTO1?t_Yt-Rb-S3XN51bJ5n)Ky{Cb)azvR{Y6q9cDOpU1F(Z~_w zkpgQbo7(JVe74#?0mMt3#8;NWBMNWruI}P5XG_=Zw|}DQ-M-!1i!TV&{NyZr=2hh* z!8PL>`9gbicltEVK<+Ppjl*%(5-ib)lEy(L_+_}PHizonVOG~AkXP%Y-iAqO8~_|LQ*)h4 z>GDh~Oyi5#lrcXenKDnA?2e^Q_xqgWQYDj!CZqaz71eM~R~kyoOn%Qv3Kk$k!=NW9 z07miWmL_y=fLEiB@{Pqn@pK%nuXY5&s!k?^0_pI2m1u=KqYlj&jzbN<_!iV~4c<#q z5j3MiOGyxC|sY!7}5~rh>qfW&Nj+ro&TDG?Il!rL4woir_hyW@{q2 zOQnWEq#?|HNI1CCprYGcjv7l7o{JKWY>eDK*193)b{U{ubCDuZwaT!EwXqQ zKUJcg3wm`Vx3<>2b%iC0bn%rnBaC6NUT}A=eRRkqUQ4pJS{rp*s@fd%=lKet*KHx4 zMbcHPaCpI1tx3-?`DJl9%G%Kv?PB{E;K4R;fT41O*k#TJzxmutQZ|B(RnDg+IJjf& zO?g;O?Zu!fJ%;RGg-lQnZVNpNc)4d?sTcO7U1RK?j{@hAOgK2Dn4Z_*{P`C%vKD(t zzi=CxW!wpMy90r&F^iCxW9g=Bo)T$xf$^$?Sln+2U(CIjiaRc<5q1wO8@s=TeTT>- z2G-X}^u)UGaaE8?&nAe^7#^?>%h)#b1qP75%5YYi{*zCMX7s3j^HGym|6hy3{}Xif zZ}+I9$=_K2i~o~_>`zRKQ&a>LA$-VG@Y?19AQrIw7l|aCw2ox9Ki5rCWwZnS8)wqc zp4OrvJQG?__RZMAY;y8`d^#~Q5>%&KI}qlzvMJ~sc{ha zA1|?pAI2;kA){2)a%u6n|ZWpI`t zkG)vGAO}k`d!dP9-)TC~`%v++=zG55e9{h^rDWn3G6EnW#sv6|;81a=j}8)@=>h0|)?JWvlpD+hGmat$or za{_1Oo&^}jko&AB)uTLw`KLZ`RzJ{GY7zEFW!5BD1zk=LJ?(R-NB2)zVR?eoT2-uk zi!=F2{2^4;95cRsR?C&y+lb>+=bbKcrSC3EJ$9GPa(Rwr4W8xVF^v5;uJF0aNC`e1 zp|O=7+|dHJy75)@;-|c8{?$~EQG_o-H%GNEf%|g?wO_Nw26eMtujfwtN!?-+fsq zC$bzXHn!=Lspa*F6tk;-&a&h>9OGw+^-BQ6we|wC7AJe)bGpx$a%6GObZcaD=2>Tv zSi|_y(dx^7YU9??KAG0#{gkTn0&wau1zBDzmTqm2owUK)zHf9H(^_Wmb`12N)_}}< z{lP!YpOBEAOC!JA9&})^h>}C!#?a3GqGeDg7wM`1r(r}`>`2#d-emo zW!VA?()~~LAf76qt#^cIxVXvALgR#rmS?LqDfS2!XKMEPoxi=JZuBm1e?CUrzIDO8 z2Y;nfA#Olk^LavQR5T-Ml}7zhV-v>L#~UW1fu1>NmF8O68YDl3IGHr1RYvlOox68z zDG~XKk|q(glhgY;mjHkGMj6V`6>Jw!{^&6n1F7jtB2N!|vHSCv=0MB92wmJ|DK7SvLr=1Y#+-`eDtbZei%@8qgZfr)T%H%$+!|dPsC!Xmgpf_lYQY1bK{8|F0HH-(eX*wWb zn2^YU3&9rN&c1s1$~$3H7fcb7qKN7r2OmtM{TgcR$dD`jqC_rkLe^n(6x&8p7G&uq zerY>4xVQcHn)7G-XG@8Xp}!#7zl}@?{eJF@KDs}J6tOQ(it zt=}0!JBxVFW6hSJWF!~PnqNXpQDj&|NyRiz~E#l-B4sIo00&&JUBpA{B~SGD_^Q~R;8BYx>^P~+uD_oekE!ZN5EtlaLL7tG5@ z=`oe_kJemszh4Ub75LMq0sb%u%yzXTp+Aab@T&))?CO?aK4wwE)v>i(r#cH@29&{q z1Qo7m`vJ6}q05Qtk?#w$1;g8i%?-_CRJ;QA1`IKakgm9F&Wh%|o3R%uPoz==l}XX^QQkTeF-w0-?bfm7-8qR63UN za3mKcGal=SbOuBe069kI-Q1*~b@VjFcQkWM-Kycjjdi)4u6|MM;A_ z1B57owpcu`;qx$MU`h8KQ;R2zOXyHuela}Z(qU>3{M#p^xZmGWve<7~1_@d3aVWdB zhPe*fDEATAI`|b;UQ~$QIy|&8uXiE0N~o`*5`H($zq{HVY@Gjw>GZXmt#EB~_iBD* zrO&$P7;M}%+=C)~&v0MktaN?iM0F%g(`d_fF;Pp^tM}K+2Ra{L>b~`fF|W(GYO2jg z0e$Je_$|Gfuhc){O3xbJKyXr`I+o}xT8wrXld-F^?f!tcTU6DhGc2w)iXJ`j5$eNt zCA(sXiB&nhZ)H>u=!)!h+?qgsdWB^8@~u;vqBpR^XU=Hqvw=g>^ve{Fg!G}buP{oN z+kCeW3oX zcRJJ+|6&ICF4eR`3>afIXV_vhE)RcObvZ+JUP<7C5CZxXDATh=>&Xt5B_Ylw&ap02 zKSDRyO?WJ7oA)BcZZF%eV%#L2SLRA#c!THeSXvb-0)Riycyj4WExBB#xU*|EQKkg5^(TYr~9%!oWl9=DtuW8_7KcV*o`bo*}`8msFPg+ zw6XJ70qf zPU80}F+LrTeUs-*}1z0=Uptv#&zhgofE`wRYDD$0;ndtPHFup zxk2Xg?QUz!tCf9NN*tG247H{WF`p1x7W+ju+C?t86>(Roq6c9b>sS#6KMn0z2AO1| z)B{nq&;Ir0X7=ggUy9HqKU12YZsf&Qp|P%&NO(3O@kJ4uh~>e^`HPFdw2G7w$iXS@ z05=xqPswGBMFGm!Ig{509|K<`&E&5>B6Uw`ZNjABn%D&Lc4-6NueAo9`XL`2sfAa#w5DFui)`{>xXCo4|*<)NRVW?%ZvJWQu6EW-=KMgVV# z;=4U?L%pLB@zG7#AuPtzKt@@JNxI%VgYgHY{JS#IM@L$Y({efPKA(Cq@D|8jOy?T^ zGnrFbXDr>G$SN>KDEUiIr;GCuT{8vA^+|S!r2rMg#p7nIj}*>(6199Z{)nlmKP7L5 zvIT0dRNMj=>(_cQn$GmR5i7JLcffJ^4SCpsMs11XCxHqUX;_%4{7C^YdQ*V$+KgqTC**%@dBe(Ne`msB4* zikZ22$19A*)SpL!Z2fgw3;>d**P&q%iJeGE6!wS8MA6|aT`gz}7OnO$u+bxyjVZ~? zpPQxdFrIu@5MY0rdfqVvh-YwRPC|;Y-$Z`jSdcu(Ru6}@+r?6cQakfmftIYXXc!xE z?{lZ0TlQ0;$w;BWHk4U3LQJ*|n4MT1I|+U`hPx>cNIwU?WfEYu%9GZ(kG7v}eHVI>Z z>05VChv~_tn4cA+f1=l&$iTQSgr+f3qoNLPHSx#u=Od0#XiX96-&SDG!YuaG51Ydz zfB$dyIlLS5LE>(1ibs_o1=5#T)=tqQKC^lo3e^M1I~LD!QGSc`f)IB}`3_S+zS zsR#r-QZLJmrN#ykohs=*|Gti&jfo*hu7`oAyy&tC9b?V@m6xV;eoW#Lh(}|#S3Pq* zWFr0NI5>WLzK1;mT4Czb8dKQu)&N3)m+yM8g&08CT0qyse(Z))i44Df-bG?m%LA3s zlT$X<48=?Ye;mbC{sU@{?-^d#eJJl6{kk1c+M!pqEKK=h_)OIZK}nh>8lkz(rK{g5 zh(Ski9r@)IhXH>n&FT@)^SdG|MsZ)%_rT3i1hyn7n``}!Xz_#@PxOLe{3P?wp~XLe z(PCkZIM5-;n#JuW6vEI};v4e^tLs#TQs>p^k1D|Wx9xcMMfz^%(u_IYBfEJU?~Nyr z3SV*QWluB_fS~mwfW6%rV^X5ev;lM=@F@rCDkJWOmvSL1<&$4--2<8HVzQi$ERh)O zi!P`7;syQYWjcj-=Jumnkp9LGPLw?Q!zm?f)WK1OX|&B+nqN=j(Dy)6@LPc+!3BvLm z=@r_Fon1ke%0aWO)|}=A3uQ3tK?sjuu*_yd>~x2u^oTeoB~CdXd3o3P+AGY!{w*=H z7r92xU;rnr;Kgri=k4Zl+<{%n_KaJL4fidr2pRvZn}GWL4tued9U^ipgX?eLiauRA zG7Fh^ZQv6JhY2ieFH8Gt+xSNw5{I20hhHD8uU;S3kWh5HFjOIAELJa*3$JqXjq+$s zt>O#M?%()(h$31jbK7L57VNzM$hHRZ`v!TdjI*Z^u&K1StaO46vDI?-5?jI-IU_fl ztJKoFxkf@;+A-zO4SLNd1qr!?jny9%XA1@282;yS zk6c;?&W9eOJxI~ujc4ReNZVYEPSm^e-c4|@@}eek}c{h#hB!1+3t)O>5Dsl)5}+`CP)1_`!0%e+5^8%!G!n5nBpR(y8S--%2+K)kQC?Z zhuR5tXWpBW9VH3QQzKJ6>PLN%Y1OYyneHdb5n z#6=R|w#6TEurCY9;TPfdhV$BvuD~NlYwd^xX-Q+tNP3ClkR|WVs1L$qO|f4A+B^gC zGweu$bMIMIlOU9R!u8kF9m3CNWS0`g!mFx%LO>^4P}*ay31ZH5;mD@$iXS8osv7ZW z--H(MabDvHrH-N}kB2VviFk(Ae*5C)Ei?hMS4{!65<%PEUD(wZkgVPsriMAUS!-(+ z$2>f4^ zU9JKfIq`+!L+tZ{Oa*6%kLyXZP5$T~vi2dyghzkuVCC-2_} z-lx=!J=rSj^TVxs@ai%aJMHKUeeBo$g?jiNS5nB+M&;3W?TgWY7KTzc=pcT(v>7D$ zLcJDFY4I51DRPzz28f}X!2>_fl#-L%&}Fo4G>;}Tzsp=HZEYml6U=K{I7# z-qw2G_4bI9I~l`_H-{%!HK{K2Wl))GkcM%*ai2A%L{{LJ3`~sO=LoAxg&HVezKs0N z_(9I5nlw7oYtH})Q8U8YN<^!egPxGoz*1I0_45U(Jr2js`E(4QZ2*XY!eQK}DO{z{ zPmX^IJHvC3&0xqQa+B-;UHtNB8ZWb%d}|(Q68*K`c=6-QX=@I zDEP>8x_wbTl5~g4h;xP}HF9(sQ;}S}>T_t7;xiiV?JDbZ9squo(paH+lW*&n898J8i@iWQ(8-oZh zdR25^^_?8ig7Q1iy3b}+4;DNO?p>h{nKlSL*&3Hp(h1w6^MC?>S@Ua;Z-x+_YliI$ z$5a==k7^b6zO~X$gTs$zrDqv^yKyBA5!|uf0oie4#B@DKz|*Cf0k)K_#&LB zAHmLPv|y69fc47ACaA7gQ)r2eZR7=Egca6H9OR7#uI9Q@QA|;mJHe+%l1sErO0Kvh zI!)J%)Cn0fhd-~JcY7ZiP$~n|HR>O+v|cl6uGcGp_h7KE35g*b_}`PZqh+b51(DLQ zHI!nkC{$TNNJ2LFMzAK8)e?)qGM8`f0c%#n*pwGy)oFrF4tm7oBH;!~ zPsJ@s1_KB>a;3`KvdH#ojC)uD%WjGoGD-?GqsyOyU~sYF&WZ(DemTA?q$#L5TnR~j zO0N`!<%&pRsk>Fm#h}n*qiS=2niTR$WoG&Pl}V(QVt_eCKiZaAUyM50Usj~V7*wbv z(BrO76i8gky)a@Vf=8up^l!PU)_Z^6x!VYR>}r39uUlL3W=xai1!RuP)kq$kn*X zUoa9{`!W2bVopY_DyNblShW$2Xxz85WDB|L0WO!_{ZG%(Qt%SfO145qmSI@j0o>rJL;r=bQCT1GQ?a~wO*?owufEPM-e5ix?gqib7msW z3OE&?5@|4SI{H#Q0Y_&J>HkI;wVs;fT%d6xvWp4A*Fvx(E7xrjkaOi(h=8G3H7cr^ zE-xhqG0A;BQPRl2f9obKOKG*(mirZ=}-xNoj3Q*0f7#e z^dA+4Rd@j8oSYbU^JT@x9m(%7TCiY4vCw;D;RrR9_Ezloi-G)`$-)9aT~?7hFjGG_ zWP1^A-qC8GPE6#=rc)&K{);Z(f+Tghb$08IY$C?r400r^ctnc@ikc_9*4bclfER0z z{ie|IM`Yiju1*;TsXsUu0IQ-5NgNV*I~~eObdEuZ=Dr8}iI34nlFYd^Q&z%O3|I{- zQa1BUs#av!)Ldq1USuJv?7>RBEbvTKGi<6-tpv zDDUUIjcST2B$LkXMZc^uvUApuoJt$fYGfV;SLIC^?s`{o#(P~8@VOjcprkNJ=4+F? z-GX@I+Ayguy(0B`(469#vpf2_*|EQgRGH3UDme6*D@f!v0<27G(n-QziRO3e858hx zo(!*me#CI(*#_R?GU6%+F?sx=(gY17b0h0mbAim{k--`{vw8Jf_bx15N7LTzNKX38 zHEA8R*+&X@@1PTlH3+L<;B9ShZ>P~sI#zTwTeN-3$L!PbPbMrSOOdy{6S09WJ6BFxTM}E6N z{(L!bDYcSHYiC{Fm@LtZh9K{AarS~fqj<0}#{JLwB4I$#z)EvCz#8b(y6nSbrroKX zrSPiDJY&C4#mep_fNy$oLOkEb89IPy7wl7q zmun+c#G^OO$3vOp=2}EmRB-%o+?d0iM!57U&pWb>_s5ps{OD#+_)5n6qTrHx0$E)i z;~~aE5@!ET0!s@TaFS76Z642VG|F5qYt%CxScePSF(s|74V{5OPO1Hn)KBKN8!9$< zXASpDFuaPYHW2%oF#X3J*3ULFGu{r`WLe3xT4l!eij8rrCP(GSj_W@Jn0xS(&6ic> ztb6+IEFBv?X}KEV(wZTC8(^l$Q7o;sN~v>sSHl-fo1YM{0Fw-ylTOdfngvTJ2JVAD z5K%j~LsHUb;T>%B;vJOP;bV$u01~52-sY& zhc${1I#{%AD|zK3I3gC)$;esi;0)gTYAmT*NX>ZG*i{l;$0E#kf$aCoC|!U)VP-x* z+DiOkq;MHP`}IJ>GfXKKvwr<$bcV2%(3l z4@OHwQ48D}TrCd2o}dumjU%PzDwy~hKD5fJaT9iLk)j9%uoCba^*9lZ2JCXl2b4ec zVtnD+f>avUQAZuU_g1IEB~IohG}e(p(i-0R<$IXCZ0mrzK|QARlE&Z&8IPD&Sm)>p2JG z&u8&-9%{M-CR~XgPKoD|NTsWW+rPySnq)~qTwPUHW2x&AV(E2#+vt8(=3-|CW&|1Ru$c3YiZP^eM+wSW^?o4gUTmc2(1^zqQ;X# zJ&I#Ip>f}V9lN8?S_w1W1i_-;8p>6^djrfnSGW2tlSY+4RoJC!i2@IYiDiZeUva1% z3^nA=uw4ex?(ccesLbDobfw;4RCs!}`M)aj^tvgXD-7<1Hj=4U>OWxa@{0kUPjCvZ zxPhC0O(%+-3Wc%{k!9`+cN9(W=)xg0AF3=KdWPz>%PnLJ4s(aqQ~Z5h``Ky5fnGiH zHWWsu5uHNjsF>>X8Q5JtRzrBp&rh4@s}gSk;klQ~DK{NHp*r0)P+tZ3J-}S48tn*q zG*-Pnzoie_#t8U!zxCO>k9~zRwrcWkxi;0Yo1fEDlU$q3`$dQUny!o)OTmaslv|Ro z%g(|SUf&mbN4q zl8$}kZP@AlE+|7}#XFw&CtI9PyflMA7|R*q;aiE zS#n>O7IYfUT?ab6TN98*2}%PMtadvi)?jL~Vs%Bh2D-CT`Ca8Uo|kBTq_^}K{UZ8% z0|LAX3+tol{Q9qMtAE*ma5MpIJ|=4P&W;vlX8%QVQk(c#fq?IPq1GVQ81XMezxW!` zCK>t5jYD&J)B?qN5Y=SLl(o=NTuMj#zl42p+?Dzw&d^)KNZbUXkyw1)oZQ%L{KGWr zK$M#WSQye`@Yk0|0sX9iiX}e=Y^)Gk7#ax3kdq;O@Z>-MVpNoe02`vR&VV)vQi0;f z?yO+N@%A8YU-n>;5~U8_?pUw>Ze;O0C?o5>$)On_xbuieT$W2+Cr1K&yPI;ZfV9kE3agF0$EvC%% zLA9|OY&phUA4 zJqA_1l-Z9u^m3WV>IB0(NYb2q8aY)_%oWG2d9*xBiEeUZ9q4K%wUjpB0BYJGn4K59 zswnwA1JBQUXyz%>FvhoEIR%`0;V2R#Rc2rjjA?oR%#DGN^@!(nn51G_X+o-x#i=wE|Mh&7!!%iRAE@^6XkA+&BvTwj(-91l8f ztAcWxYEOr&RX=x4L1nTe$n%ChTq3e7JY!Jr(%BN#yF4T+@si+$c+VWPUZ-yVbhT0T zw#^O-7?LY@(m*GIU@iwFuo&XtlF5wO>InV@myZIw^2@^~5YJ#I0C&l$O9)9qmSp@C zK4sseV(hzW^>*XjJ?emGnm5Dg`^>lbWR&(c9f8bvwnp@bbLe^8e(4%BBXKl1Hv@ty zjKHEl6@@1`({I&9y=3fnij&bKEqu+t@udJ1D5;4jm+ZJ$3^O|mnAH)@#P2}nO*sk} z8kZY9P_GIJ8Inc@|MNX7-1fb-)8FmtTe!tR1*4VND}!3>c3d5wqz@QS`DGTdJA? zYro1!;}k`dhw3lWEwx}=@(9}+U_(88?3d6`sbP1PsGh;iw5>`ISc1RA=8$?b9rWFR zB)`>G1!TeM>dO7pFkN3}KrGz0UW@Ah@A^`AI6_Z^)XnYfiETtBhyp?b>XN5NxXI2+N?-n^)SNhu&w9dvY+D=e})hHJ&fn9 z(OgQ?&5)Yrq*6(hG{gBe|WnF3mPN=2e~z4qkUZyp(g^BU5mSdn7|tly1e0|vg-bd1LWy@zToTZ~MT z3*Um(AT0ahpEucrqqlzT#?9!Mc5q&>Ss!Gaz(>=1dca68kww`rTr(-o=CQu#c3|Ye znWs0Rdh>fF?rtd;(uu)a>Fw!;8^2ON;g%~TOy?9cdz%f6CO1xbQ7AX9{m$&N={*c3 z9w4A~LK6}A_T((lQAi&JSjpPNi?86~GuR+3%zwXnq&uQ!X>F8-wd4!t6UL4Hpyr~{ z>35{NQFI1wiy?$X!Dh>=BsC&=7y2oy2NC6n{)iBtcJ-CtX3J2Lfl5cxGWaDz@fUfc z0!c`-C0AF-0$y8aWn$lc1YTT;58S|og-eI2A+|9)3%Yl>OqCu8*fcE{P8t$cQ&zg`bby)pZJ`=Y3zR$V2(Lm2j;RG#U2;rMQ*p#bCa7{0o4L3C+$@L-{%`mXFd*Os%90|)*+EsPHa#j{QPf2o+5KfUGPYlz+ckjF`eNQ~ z?P0AiQt_V~3+RP^+O8L97?GFKV|1-oKRA!i(ptqnt2UI!^9jB;>iI98m?DjGQ*@jP zxmZ!%*+y3hUqN%u-Ls3-p`u}9lvE5yQ!pB?Bin8*^5W)p6Ncm_sGB*z=dK)GlO~5+ z(acZwChkmwuAQwyAagh`4|McW@>gfVPeM^<{_U+awQAgotu6zQp`XD zNp>-sB!gcgBERnp!>YB5+kv?HOHN6jWOpbc0IU9@@#{!lvS}ubkTA5HPb5|p$EGmL z>}T@+7nlR_$Ly@ezJnTI73MC*CFqCI8w_(KY*jMt`FBp| zM9(zxf6Nv#Yj|p2ACEK9zfM>G#cbhhXKY9B=4kN`4x~vH=&_w=MD94Eg)CP}aFyEm zsVWHlh3}VeBxfUr%ic+~g&~yJtgC9k6Le=BgOCwr+va6G7@7BSQ+7JX)z|aXzPC5< zhn;cByBQi`PL`68+%3Rwb_&lrN*4si4K8}xFa*Jp2KAbYQrH4jng^MrNG-45kHFryVh9Q-Bb0f+9-i77aFB}OE)1%Bt<+O6wM*w7VqRdT$tJN^y6 zX0h4HzLeEeYvIrpF&aVoQ7;$U9F@?9y3=tRxHSfhJV11uK3iCV{ z*n;WG)3|2mp<_-P-+w<0>TIpH2+|eg8nzS7L`kYyM6RBEB(yO80Aru4U*pb( zqL9|e2Y&rtND%zy%`R0#jL@EI%qY;bsZlN-4$JOrtp7~dy_OrBItNn zgH8=C+_o~)IqVh-=jK4=ZWgdzqg#33eI*0sXB; z?R2)y0bWOOv4g;Tq69dJU<#XoVpBcET_dODMVnR5gQm_%Cyn;S%iC*W2G?z}8F20o zx#jK*Z^pTd4-dbsGiyoFcd)KHXchMOU8aGT&rG^Sz%_k!5C8$8cf|edxgI^)>nZ-F zsb2plQ-OGL@`*|V)`r0k1RX|90ShlH>l9WMC9L8uS&pPg2Q(m=sEeMnUh_}hJcq<@ z>PqTiPpN9JjNG$?^X9JQe8)}cj!T7$oHs+^w>BLse>dtj!q(OI@qvwGa&;OYPMZ=z z_fV$(U3RaqHPIuzki>XQ4If6dIAbLz6LYuDDhpLcvd$lTR*68EHnzz1HRb`iWC zMaH6k-uJ>ApI7LNdJ!G_Z$d21rV*!P26v%tMZ`fu7iq}a33{2*No?zbmpse)4b`R} zbBoy)jO4Y`9N53z3t6&H#KmJ4LP95J=je(DOK7Sog-S{J5t+HCAWk4kS$$ zmB7zyn3R~wTt90c%A6+74>}l0Ge&Zc+}#`eh*|;0{IeHy)LpNjJPUBcmttlX^M?=; zh$K$9U#bg?eYG_c`V9Y5$8Ds`Wnz8>obvzbj!XVO2b`z534?{X+kZz}=$EC)mou*a zqb48+0v2B%^Y{BK7KB0_bnPxpT!>$A+B zP2&FJC~^S*{&8jpZg~ZPb%nxXIIxZlVfgtFoMaEjxf1e;CRs!UgqI0HtGEJ9Bj z=)5Ez{5(o#7tt>#RUDH;yY~C}8AD_T>*?+4 zab>Yu`2;#0>IvgUOFTN1Wty}9sCS-m1yt=o@leR;hY0ymFfO$mwZju zKyG^sVPbkBH*=C`_A8oK4ch4 zKKl5+kaL9`G8L=UrdTkA8&JRFH-X>QzJp1_R7<<9P^VRRqoJy2c_Y%5_08~b;3%*z zP6Me^0f;3xnA^Jnu*NOC;d<2fxJX6Idf~&9{pf{V-?pE58uv}^B+5WWei7jm#Tp${ zeAY4#YQD~U#rj+h)r+aJP4<#b4^YOSrRpPoQ{BnkH3Jp$`2}Bp90#q>HUuQZ;)j)& z{J05TFNY69Z$lf#XCTcQILm$lTLMooSmaK&yK1jvzTkQIbF&tM8XTV z^x_tQY9s8+2g+YS$l3bIczeNqf$LVb^F5>dG`K9v)o=pT9tBboV!pnyU zc)Xb|a28You4Xu#kBv7cJ~MI|*+z}Zt8Zm^uLmY~2>*$xdGJvqq&!J(^p9F z<^Jj5=yYtVWN+(@cYM<@^9Q&hSq=exA!jNCGmjwd*9)MNhX`=k6-54H-;e#}qzZ!| zXH@`elZuWT9U`Kshh$-Ol;18M&r?gpgD9wD(hO>E*Tzv+z6{QZ_$`1~HoEVeaU=JI zM^qkT!ag2*eXN#_tt=oSO-a%u0S4q|KCM7hOO zvZ)c;!A0exiqr|G*4X(DS#UwX30C7ju!U=(>f8mWYt(4^E2$#3hkST0xP-ek=<4b* z-0ijP>gxHz60q9u8JgLs3Pe6P=Ws&iI*QKE^%I<{W?Vdm^ORDmu-DBhWbA--H>V?#nPn|FBsuZ&Ijy;qOj z$G@|%H&mg#iJm{`vaGu@H8@KX)mYB#?S66&qOWRnse4GkAD=YGCD$Gb&1a1tp#oQD zcspRl;l{6f^JsbouXzX2`H#hEx195o-2bQ#EI_2=d+~Z|o-pkx;o`LI?Q6uNYRTIU z%f6)|jZFtD$Ukzz8w{+mHkyZr;l%7GeJhO#-Q7YGU}|~OZ^`sf`r$>FcC}9DOtD^! zL7`-#*(X|*?YwVo8m>RDT;>#^lK}8E>(FK0I5ro$M>80b;rbff_UE73r!U_?dFFla zWi4y>dK`>7qQ25aj7BDApeUn#m0ZFlnaD@7mv zucJxguRqHFW6}b!GP$~#GX3{0)c@&AlM<)?Gm{*-{1Hh5ZU&{w{`_$O>yjdk zgHTmH!|N?y0o^u><-UVZvL+5x`Y#(b=GtXAHys*OFDAFlYU%jX*m z33C-@yh?s;jm0)NzCm^YvUeXaZoqs(ZeBSM-pQnh{1lTT7G+RIgrC;8^e>k;O#~H` z9I4CRY2~Mkbl+27+}FpEQ2NmAC}lR<58>yZN))38vd6VaBJeK_e7@1zo=5ONs8ojX zR*I&jFnEL?lj2O{FgB{(M?Nmj zd6&`dSrtBTI^N}oDrd4=eciNo7u=LhmxFBB6Bg&YZ8sO&zaBRp+g_y+SUcBm4?IEd zPQ^U=>r$ib9NRV6KXV}4;fvh-T0iebnN`QR8pxx95pQ;nW7&#++@s(`%khftvouE$C)dp7- zXir$V*Nk-vnoL6V2PsIe^W}uVt0|}mavmP#a5?Q<#=QYy33~hkJYid8Og%1P^l0!r zWhRY(hrKw=C-j6rM?McxZ=M*Q;9!ri>N9?Sd~p_`pnob~Lac&*VHKhO*W`=${|=Y` zjuv-oCS#}n#w6gL$E>wpe+mxa`~3PRM(2C!!*CMXu))3LQ8Pv{O4$nbfC;0SZ=Xe@ zLR@ynh!5ufQ_wi45Ia7;^mkL%Ccz9qgb`aQ{s;arqkv@OHxW^vsh2b>B9YL4 zq1e15&J@iOvJ1$T{s*)UYIS6^GEC-NVsQcNeNEz#iVDY2ifOA{p%Hw_WSI(JCXInC z4YO|H10hx>XWj1(UX;%Y$^ahqy@s{>L7Bd6NsW}dK97C2C~WKvv48$4n=ee-y0 zkEw`kMq7c5TFI-3wGU)RB6&{Nr-Woryo`Y;6x}B?*iAjT2bcKWnPs;sgGB zL{d`Q;p&$**>dhU6UXcVHK2gqK{B@5*_j8o+%FP|4;r!EXC2xFBJB-CHv3RskQPV> zy9BPX_sl@h{fn-_Qw!lRn)=6*ezvUDue%HVZF?^D2`4Vj+uvHhubX>9Pwk<;Ku9V1 zXQm)o>FrVJE(swODHC{!UIq83_H(^f$84LrCHSo-lVLXS`G%@9DzS)oPmQ8yt<`5o zEvWE2X4pV1KHn&fO?nCtv#S)ogolfYr?PnIr0z$ErPzN7MHUB-w8^?I3OXOP9<26D z(w3*QN%BT$SdBMEj#ltrrVW5^Rn4<8*3)lcVck!()hylA;fCu+Kc_bfM%L^zWVq5P z#U4l=hQt)~4n=A zWT2xjy5_AOC3KTlJ&z+hC&(^nXU;*;q{aRHxx48L3T;8K0;AN`tg%gDYR_L3vEbOy zIW^|GK#0|{QwlLv8NvKT)Axar3;C06y{v=n)-rn>mqzs4SV2pLHNQ+c`|sng8xmo6 zy59=gh2Ufo*0N=Q48E}y@&dGlV%7ks6wlyUvp;MzG2avK|_Dn)qEq!W+W99@v?R?g;ny81yZ9T(JUOT zlAz@;@;P@3G;7BrzIxgu07!!hjI%N6lUg$mcxpEOaR+`kCH#Qf;$F8&sIk?fX|Z_@ zEr3r0bg7h z(sg(dZ{pBzE2`d^EijPl;$oMZD|TTo_2`fh!q+Xmjz5`U_}A#CLP3y27d)>&;)>U% z)+7U;6j|JKK>e3>VgS+D4>uf+ix{Fn6}naoUM~+AxnGE_np$_si0|RV&|l8zKO9IZ zODVqEAHE_ojcDxph|s)j#$W%@#`2ca7oPLfrkC8>M>p8Na}Jd%f@~*rmyB&P`sD1} zDNVXo5W{Bts|dCa?gFMsj(^E!xFQn(%ll8Wp?+5qZI_8-C8vrtIVw761cS;; zI9_mbb`kW@@7B`NADaPC^TOY`t@e)MTJDipnxOObc7R0TrE9qEHj>HR$C%W{12Xzm&liHf=0}$?zw=ME10*D9gr^ z9$Ss#{j3w7xqAJC#`gM=1by|(zB}NDE0pBBc8ROt6HjCr-Ii!(JM7_k4N7e5ndAPE z`lCa54iW|mhtB+`?a(cgnGEzpcdQ9OQ>M~EHnS$XaU)Vo5cS%B_O}a74I1;zLl(S` zwN2w&v-qQlR&fdPXuNB|*w$!&JguEOez|x}*Y&q6AnC6D?$3UwSKRd-L|@Hz;wA#t z`$xhaYFo-lwDk6DLGTU2KWB5I;EmKHHX5yaEkxRc^TDk=F{d`@q#HNL1kpJlc57O? zi|JYb29hY;Evd+JId8QGa~b_|k05zNS=lkVM;?SuzRn4@MZv16q;b81|C7gdmK)n1 zc1yqeMXlam^G-Pl zWY4RM>Uk2y(%LCfPwaFO^63)bKL0q?U1_<>o($5T+FEqnP0g=1j7J&IAz$}6W0v86 zBVc#%9~eKzL#K;mIRUNy=d?dTZSn(npO;6fnWdrf5U&v$KJ6yaPndkCRw%=K+D zK2WS!U-aE=I^gv-_R8{yyiFjghIg*LXBwltV8 zofh%p_|J3MFFeFs#b5%m_6ZAC-Qq8nTNcH<+=v5a7=7uRp6~%OI`glo>838X1gowU zfgalq)9bofgvrUl6(Lt4tP=C5xddziA7~79ydh@haLMG$OQ9Qz!S`PW_ip~xYseM8 zb$_ZtjVPrND7pIy+wk5=^0)O=ThPt+^HZ?eGTwn-+06x|i<3W&x2&$I&kv|r(SU?q4_K-VNC=r# z4ISTZ!R&B0tx({L3{}f=rqIQTc8Meh($$%_5I0~jj*Yo1F`76o>+hKVJu<#T_@BgK z5KKhS1{!(=F^$XZ9=ZbQXoQ}{TNO2Ah+gQ!>L?^?4k%^vHVt?IiIrzhp`l`0CV$hK zT~8vWp93Oxu{$ndP#s@?W0TO`4y*)fJ1TwA=*`+|5GNp6;*9SJ`+R;R>~HwDC57Lg z>rtOqM2E``VI_E%#_N$x=k}mp^tY66VYkVQILA_{L41d`KLo{}v5obZj5!Ho!Y7*` z#bCWLK3;*hwCVkXGjuX zk|*m{aI65G-`G|eq-tQl?Y!<@9-X3f7@u&Nq~O)kR{TT>h69ru>>OWACfkT>6r`{Lkp}|4+mDe=2BGM|*o?2f*yVfHqV7=Pqm9 z@t^PL0yIl1<5GzU@(&OH)cpj9R<0G^l$#q|b<@gHDRogzU}r#c?P~hVe1H1(`^Hy5 zevd?_k-7Q1o>ig3GIk+R&@pS}##VA$Rk&;Kq#{> zSG)=A0JjurNZwCiW(zFX2Q?%C9yT@Tn*6%Q5S^$!&ktf0?3^gyXrn)%M?5e3gmTAlM=<@1WBZaKr|0K&$8u5#aIF$WsoRzy zNW;`5O?tlFTX3O++4VW^$C~>DjCEmX@RycB&RvKslOziO?M)H-d>SF-4tRytod<@n z33AqzHNk$0N}uKQX@I9* z-pb<-9{RjrAtA{_?{XGfflj#ZpeEp0o`x(7f-VdIPPqnW)x$~eooU#;Wkh+h(y&A)H(VC)(-m(+`NM0nz_VW7YDe2Bg9#*cI{zS(>Tx?^mZKzW#=AOhlnI_LB z)<}@9KZYz{dHC%}DFOxAtVUY6N2p8=xq**tcR{jCR$Izg&EAG5slmR*&;^KTC`T|o zj}Awv=haDWOcmr`7gSmclIC_mZwHi?j(G#9P}XLiqyEgXnq-Jy%S&RF@Lx96%8 zMSQ?&nv*5*b%xv046{y(zJYegySJ5C>}GESHVo0l;(|CoTO9L{3>v6V%dOqhvwD$( zL%hHvJ(R3D5!fY+YIEv1v3j5AX9%971`BR2z>;e3XzLR`&;oQEmVL> zaya&Wx%${^=P6=H4{N7`<2A0UPFC~P^$6%}7wq0kzK0!B60WC{bCO?v4BV0kC^13g zf0N8@q+X-Lol)~_yb}U8s0hzxA^M>{PFun$Ru9D6)8H4CZS1`+Mll*wQYT?_lW{hBjVq5^KWzIsu3L(yuozr+zhTT%A_4`?7jH2OGh^0zMX`&*Zzy6haKc8UF^VhZdjoZ`y z)6LzNpAtZ)l6xxx@hzrTwN$_bIK<*|@^{(e_+1wYnla-T@-r&EaD*&JfmiZJg@2-b z;#PNGAEe;A!Hi*tK6^eA-~$+*nC4APlxg~^6k)6nf_pk$VCyQaL#PV3Dsrd$_m_@B0*B%@$3XoM% zAC%7-+Zos0UpuhU&*Z*bX4_wjU!iJnWi6;uk)FvJ1^t*|a>SHHEYN<{b1bqMabI*F zci*2VDu&igSBNedYXa=%Ve9BMFfb>9$4(~d^&JvNw-#+^3p&EO;U`bM(2dM=3Nh-l zs1@;3!AD{;{}_MTK1?9&)*D|{Usv&A1(l_T@X9l>%Oroh`zTxO_{S0-L zqX8vO(Es(zstBi+pNS2-SD4Qe>#%<|k=x>*%|sh!>Az)qmQ_f%ZUn0y%KOE+p~(~h z^rj8zw_GsCEe+E!JN@+UP&(*}OgxHf7DPJo0UV4|Jyey}(>&g0yo#Pnr3Ln^;~Gj- zpUyse1RCMJBU^yq&knP7=6;NHcDrxj8hqc+1$SmH;_HIGKN{!X%ia5SvCJp@i>c=p zNSow2$xbD?Y=0+1M|nt9fhjL05Zle%5ha@k|As1h)3ZaqZMyC(td!l|?rSCq_zhmY zM1&tKFkN55BrM+)zy_^{Xdi81VLzhS#yr@ZsNBpl)1x`L@gBvZbCf{mgR9G|=gEb%6p}|&x z3XxH_w+KE*FbxtMX)EWvvIR734T?YD=ZAV`dM%p%-`fqAqPZ9YRR6HUnLHrTW42md z&760mBwz#8(tJz4eQ~t3?rO7z6|LZu2w4NOt^$P|7mv}f6yW9?vd4b&Ak!^I7331* zIh&GlxUyq3?vw3^Xl2Xzues(y7+Gt57&cQ+TK+~X$-_)DH>|{;6{vnmV5%UvG(<#c zbK_UauE{->Un7Rq@ProO*ee~e3t$>nX+I?&$BiTW#5x(XL*FMqz_sSOr9bUuei08ty80|zCiFA*YAWjCiRtH7<8Jq@;ZLI@)sw7y~dt+PtXagyRTY7I^E($cTyw%Lv zMvL>6nE992G!*hv!Cs<6-jC%s=p~Knj&oXd-8RZ+D~~)n8Rgd;LrB4k_SXBEt4i)1 zmK|tCpG!#NmW^5Aqq`cMQG}h^u4g=KE;>DfH@F7j3N;WxHHZd1)`$DSn&)>T02e^K zQhD28uj->P%EEb0tjUex8j^Y=d&omKJxj%99HZtn-n8c0;~%`_?vr3KQ(BzQ*Fd4a z3DPZ*sfp+b?3AkgJK}-?mn0*>n@BG00~L;Tjn2b}3Ma&J!5!>^!Bg~*Q|0{>Evy8K z90I#<(2BgnL(#t%)m{hfdCeNoe*qB5*6w+lnUY_Bhds-eH7D%KVVqb}t)1n{(lI#; zYlCuaEri37*(`=@@w@eQUw)I$V1LeGgTgkAs;E2V{iitNp3hQsRr(UUB;he8W}JoBaz1ISo$KE9oi3wV zfuo={Sb~F~$qU&N8#e9$Nu@+rC~&FMwLh-MRAa=yZC8 ztc2-_1>*RPgv7ID-e6$Kd{Ev>Yc|{}mmw31VTmlrL&xR@Ra00})!Yfd7z05nBM!t;N43G`R&?W(Bkz zg_EO-U@%J4bvA5v`$DevaEWxbbJ>L_q|NW_jtTLI3&13kGXc}slv7aE>V|Q{V}-51 zcxAqrmnv6oSJN8NLp8I}@3j)djL(+BF7D{oRg2*eIyJwCoo^{|!OYNij^aoYRmB{E zyySGH=|ymNL2?#{IdMp=Kt#2wFP^qIo=jg2M^jshjkOzJ*m#4$%O(Ov`t9?Q49jq- zv-I9t3x%*@8qlbq-fC`;0XHZA(E?^Tly%+yoVup>?}_$;+H=jb2bVyZC!LUWbM9R4 z-?=+y%0`Qy-vaB=YU4_nJ(~ytGis_mGl?vqVKb~(p8ta*-fm|cb-!!!^rg`Hhdiz5 zlwqa#`b=s?DV68U3_Gcu?*$_QnFXnTDsvU&Yt+7+KX7}BBv;W0hQ4C7@yK>davlKB zp4_9D+6~M8*K&nTIF==8=wF7z4%+HZbyy409~O_&{baL7BspH>cAE}j91_u~#cVCC zr_SCHRg5G`jufcssH%)jUhcnBOK%Iew2y8aG+KE|AdpW^NU7AKj`=hSJV=@>x9;R! zroYWDFalt-VhgV(WFc|dNC)z+#Ii$A@^GxD*vlftJs84oX*VH{m> zboL-?%}i%=QMu6rCIz#I@{o=4rmEQ!6#n%1MKgBIwv1Xon>&aS6)v(?2a@N6IpnFSJmuFCiU`YGflL>4;pDcDsT-4M2yEOqw^lufO|T!N{m-oC zN*{FR*@?(sB>N%m(VBdqm~SIFQy^IDXTCT0JoWhgLjoK)zSq{~u7ZE7cRER`E^vMj zt=!dqv1PG~58>9q(G*-F&e;$+ImBU0;{F;tR9TxcYp8+)ueU}0tGTn`(^5|+gz?|7 z6|HrcGr_w1245wIVmuezZvFZ4?;N0vE0*PC$0aqnAU0xkYQVhv;=0VKE*q5V*PH<@ zjJ<2rOT@9XLZLj`E75;;kb4ey0OBn2w{LQy|JwwG^nchveoauE938$~l>TdkQlV8nzCk=M2yNfn!i@Bhss1OuFyt6Lj#qhp6=g}m?L2Xrg>Z*E z&m0nF;#tV}52}H>s_`y`fp18ent=dZa>81p@ZR8M=#W?k9Pe|Kpb1#mAodSgg{lkb z@+=^sq@qP66I5twOZPa3;yse2R?lT*T$l7D$m&7Dw5LaQZjIkycxl16$K`S>=}V#4#{M! zSiIp|^ysZ%JjQul#}6$FFR?9{b*ZGhet4BMyN)tx#veXjK2~gn3Ux zb{QB<7O^twl4>b;9*wf(8|DC%XmSXZ#`$I-fu#A{wY%DVae87-fl*=PSS<*BZCurx ztG5Tu=B;+z_u;y5kx+}?BSSrIPRpl7Dpp`@*!HsL0|t)UQ&3UPbq)qsYJuzJYGp>)uU)G8fdj) zl|owD5E^4qdE4KYmzf)$+bBIN>^@Nu?AS`qvSBx<|2M&!mJJ%J|C-svCt=vNQ;)k|jYcCO-ZPJ( z5#~o%PxmJD3FJ^<5%DQxZA*)0AQ?W3d5^Dv-g0HNefcb#Uf_r{nWOR%EQK|TOQ^Ro z$o#+&jc#wdOW*zgg$w6Ws(9|KpG!}Tk(#ER6p!)o={UlGU^MXKS_M}c)2y2Xkqp&+ zw}%jU-mrkyj>5!i5`I`@Gt_@MxR#UX;xcdL%dO!WkS-&-#A?x4Zp^$heR^f zCh?@aY#)L?^QzPGo4?Oyg~o6F!P44{gAv9F@TZN9f+bn6T!JIw17Z_l z2Moj!^ZVR}x2gkbfqc*JEI3swOe~eqJa~nn{vT zCstRsYnDBxKTHz=A!~gTT$OZ+ng9p=;}FXy)&WmiL)}_l)pPS$;Sa&x#VM^$6GGRb z(E#i-{5&km4$W$|Im9@tEX|faH{z=N&=z06Gg2TPEu00Zd_^h)yGmBJ+}LnX)_h;o zSYoAN4j}q*b^W6`{Gqy(->v>_5k+h&VQ;_5_NpSg7* zi+9t)bF=iK?kR{zZK`fJlEz4-ECk`oyEJ+G>mtlE<)(ZquMcH;Y&J%)B%5A4>gawn zEj4+8%)VGWjE||Blh=Tw#eu@cbN@^s1NQsSfvh&(6H9X(| z()Q3|3=V0;I548kiI~Al?djHE9zYLnYcVV6X~Rpx7@-9%E7N?Z;-RZ zZ>M~5zo?!%b=2VC!DMP;pX_~I8D4%zExMV5qIR z?6yij_tOiq&AKf7RF+S;XyUb|C?4?dyqqkgJ?L;ft}DDI(<`-X<%_p)T{ulRX!~is z7B%IuYh5+?7u^Ti=E8#weela*fLHbW z!ASn5j@}dO4we!hYotwtZe$mM3C^aYUH;>v!H!ph=LjF#RJsCS~%B@<;5&dgdD8{-xGHTszdJp(d z{Q$YWy1(@$Uy8&1-^z#oU)I-`gvr{$mcbbKZyi$=w!G`w@ckdd>)m>g@5;Gm6ZW)8 zDyE8Ar3&=F_vI)>sryj1;_*N_GB-kLLVM*L1@2~KnY#8DJ^~3>(>`!NdRdm~u2}+kQoxaaU=Ynm!Ka({)?})f`G~ z`6p?49tziSjxwZd4X9ZL>z|+HLDiUYTxvfyeu_BI9XaCqPHwTg5D{>0Gp)uG2{<5j zpN{@m7!?Hm#(#`T8D`$e90E?p!G7?vG^FK;iqCwXi$h4mw#zG;4tBI%koFhMQS)xv6xIk1wsJil( z@K$J*ifACIlw0^g>k8v@`6(MD1$-L5%zG1&i)`HJGL+RU;xOmr%K#NK1!MR>Eg}YM z$R4x|S2+gE`&?H0H3=8ba_KJ2VG*|oGspV*M!6iXE^=KX_dT3DmXOzkX$dWzr=Tqm_8g)e?DjC-L*GNAelxQwo>H)+Jv!=yr1!8#&?_)2j zFHMtc;>cY_$6L#gDVgx>_yyC7UtI08$Xc-mr`#|}6)!O+^rY+4M!ZyfzmD~pPbd$w z6JB|_pfy%#yBhd7XJ z`J5NTv-3h&Cb>EdX}Ba=R{of7xQwUX#8kzt=7So$g&fa1ecWK;BE&3Y`gE5IJ}-*6iHIZ&rsyW3C#n3*XgEj3cN zR>zJo!xmSA9Kb9-^O4?;Q@1U$SvF)+Mjo({+%5)Duyb`WS<(#qIfx47NXH!%n;w{n zr~YZ`1g6N~|L8FlYVBuMyT~o^7dQ9~-9Lq7+XJ$JlhV@nc!bv~^EU^-*I#2ftx`^q&51SD6E;B!jUUAP|1@H*9wlBr zfrBk=@!eiYF6oy(I9O(-1b6Mb{hs*q<5imZDkzZe`G-?exX>TunSJYDen?BhAS1}6 zr%qg_Gg*E_2It(f=R<4tESEY|Mn zQjOQbVM&gN|kCcX~;_a9B>BcF2o;{euVz2i;(yz?}$zxt^$ zktMwGybQ+< z2?+?3a0L}nw2rxif*XV4eXs9Lx-QEV&|ck`Ov?zrHpps{Hw_Xj9EN;t_wqnpj%uog z&KwJsMP|A6eHo)B??HR)Bf=24HV}Dsyv(HE4wg9qUQ;Q{RXfn8_49q`AVx+H8-@($lNaHg+D}JM% z>B^dySjk`0))A5CjFV1o{!YA{Q(2)g)R$s15d2>M0#Yw$!evp`Vq5%V1W?1c4~I{s zvRT^G7^I?#r~NH;1Li;yQ?fl}&N@RO#;T*K_zQ~-<~|N0Fc zhmmdEd1bw!F_La*3f5j!f~J`ik$6LE7lsUKJ%!#I(~-yd1%@i_f4FI6m4}FCh&jzdOm$G9a%MWh}Qw$sUp8$uio zTVoxTNRS+|GxAQ(mYPtky(Ef1LH|?!Fli4G=6)Rj8({x$<Qzd`){2?y`o z_C<(%IXS;&BWXdGB)+b?^T`EZy5yHmLu8$+yE6m#^r+Zf@VR|KPZ9)m?NB19VeXTk zmzUxD$@>F0O>&sAywDv`=pI13;Fj279D|6N8{6VJgHHeb&Ey4>2>~Z{u0$$K+zomX z&@x6xX|6296)A5l3NdyylYr?+)1@hC78Fxm7l;oOTS6BtMx;k2B%=W^ux;v~{**4k zp-~n}z!uk@f_!tLujLO91o+yrf9(ZUXePn$?-uGsOX*c_FfG9=?B4{tw8dAhdu!=4 zA0?gkB%k7I!V{_Cr{J4vFlfrPq|TYCR%z;CP%qjHu}H{Hl9zM-py5gcsaTZUKd}%u zliy#`L2qQx{48@GXOaQFYr7=Pgbbkn<%g+5CbY=u)T|NG>-us1f*@C-iY*6;)wM}# zo<|M?W=0c^QtiRq!3?1tpdMQvXqx6y{KypDn7)|42hkQv!@rMjFF<grs=OCtu@NuWY#RR7LuJSE>O zA;i)3e+wkGlV&LmroGvI zR(X{WjVy9GN|Z^(obd5y4-#sW zJP^I#QDMMG9~?B)L^owJe{qFQXQkJwDzsZ_ZP%D z|3i`8vz?SQMjc6&hEDp8+T5rZF6v28x8D*zR*wEqm8>oqSz-O=)Y-XcH$+g)`#M6L zx|V#XxB3By>9Tq36u{*l3-LyEj7JjPeklAq`OH0*|786hDUsc=(u*$f(Nxr9fj)7D zwyRy{ZJ{b zP=fsM6=eb)X+1PkJ;cP{WA|j(%pvJSn6Y^!i_{{Zj#Rc`S#Q1CSt51NFHpqpb*W%~ zNV?X66E=&IQQX*t#3ATfrel_%_jM_m2*Lky?l=BahwNJ7DB>~QUb-jFBGEJ1^w@=W z%m$G=Oa<>Uxi5Qc8RESew?)#mhfiGp(~w;mi^W7(4Toqfi(2U z7{9bMe|CMhgPD)iZ_;D7oA)Wf8yDck-RBwuiaT?;Fkzr%4TEW-nF4xE3&JE>bjKGV zVs~a7%pP^-Nnd~B&_t*c>ZW6di0Q>JN0s}B=3Q`+Q(fye*{@^^Qhtd38^;9~X0FY^ zpU_2!ZC``f6VhI|V%o7W7#e4FP)2E?HQRvo?Wi@DEjE>~{UE5H+x)Qx zw4U2j!pQQ4-2UatdPGSCCU+1cPxH zyj}MV@uUC+o9TD$Ag==wpVmlAeISC+C;XKCWWG-WU6IQH2BIUna-jM{91K*p-9x79 z-R87K_to^DhUb~-7cxZ?l8m4;6vty_K-p7xJ@$UfC4{#3x5?^4c-g$QK-4#2Eh<+!KIq2icwfiWu% zf8aHViW4)QRmB23;t&9LL$;HZ!@Q)A=zuO}2WLBZmzh`p+sga3#p-1PmvFukVAyNO zul5`lRlYDRFRqZIYX@tPxUBN+ho5%oDJ=QXglpx%eV2__{f=*t4X`ADH*? zI*C5QWWhZmwK@oU^M;O*C|a9n3E1Cd++58U2U{VQpPn zzHjWaurGWAG*C{tJ#?k}eV)msOC!QEM=(F%tgK!)QGP~dcz#pMh<$S>LHrYA&NEU@I4o#V;H+2k|xmVlG1A@@{$hbET{&{S$Q`4$o# zujXScGM@^g{_6)G(NYCZDfZLxyW#L&pii(dc~y#3b!RHGth3Y3>~eF5ut!RMyXs3S zC8}rV{>z@QqxWvqgeap5zK}YY4jEPe{LBAU*qMMs)qVl|B2u<2$yTXQND0wmOOic> zHd13L!!V3dX}bm~?KPqj|IlJo6eE>BONBO6NF}K-l_etewW$A@88gkD?)1Gqk9j=L z?dP2LEbn{oednB#l;bi=g?C?=*Zu5$)OOUsxWQ~(h*IINtgi7#i0F=$eKqH+FENs| zs&}K8j<}wy_mcB#Su-JTH(L0;&Tz-3qc6xaietJK`1zXB*9}lEw6aj*ybjm&PFEvqx$Mms(d-_gADd)pJ!tqUh#%bkHLuOHi<*!NJf%j;8fgp`60Gq50$ zxHVY`dDmCg*((c6oNoMC7$C3AE*{li_w|iih6{Kz<;~na8 zX8cOJ(GB@^9z&%MBRt*rCA}&b%0B#ccGrzrJL@#3JU_RzK~3S*&fC5==EnIiPQ_); zP@@lBK2dH^uVRjRoFFIP>`_^l8Z*$9S{IU?NvW})dm*y^vP}Bw*49xs^7d{i5pUFa z{^%>`ky~KPH+Mxi^ZXi~s);`HtR>=&9W+-avA3J)D_^@eJC1?vCVH$hxQAImo19Kv zpx@N?aO`+V`adMUEr`FP* za-Xa7u35&jTh&i%nwFIRULww3sr!utp(N?FuY~es8sm_*QhSN@6k=>isr19H*hUj) zy1nDYSYxS?WwHLK{URv0t!L?Bv`gX61uvi;p=g#(Vyx%Dd1cUrqVO zsA|(%u3*_phW>9jDA2^>v;mkL^PqD&}?E*15M?woK3d z2prV^srhZ*eR`pc&TSLVWW%sHnY`KUE;<@ECt#m_B%H3abG7FLgQt>uj=d0HzwrGYWDGae=|!0c_ou)<|uV5XyXm72aHIP^EPUf(|||D z=`Bc-inT$9{&WF>T~44P=elj@YA1LpPt8 z81rP};L*-I(cj#Qeds>d+VfXR+|t-jG2EqTq1)+2QTy&)rT(lr8hv)5o*KHXWYWnF z_w_BeYE7QUWmen2n`d$G`&XxmJx4iOw~w8*pVCwETPt|?#ISZ#_aYO=$cKqY}c_-VQ=?%yCU(cZy(y7cWPL63>cj6!{-3`` zXl2@%e#w!_jU`cA%+0GS<|Zj7USg&i=eGRZzon`7z?X0vKQXWFvJJm!*ka@&L}FF)HggcGVf_kDZ!VUuRW(Wl)l=5)hC`@~$0 z5$CU((W45R@6bB4JL**zvSzg|HJR!apVnMCvi@47*_Rb(U!?C_EY*)}R8=jhcG~x> zM{Xwiw&O(4^y#cA$6oXuG;s}RM^_*BVMUwM#OAo06Wd*e?v{B@mD&?37WPrm{JEE> zZByqJZ@GW%zbjsy=Hs+<#hzuO-@Er0ygV3|Q(kJ8m!0gl&-w6}!mL+Qn-OM)m*F+< zoSeR@0k_5?Ys96~$TrJ)#EPd9+fHkks6DAVTA=Rb6YOH7A$NA16YHz%(-Rk&XqMiH zpgd<4xjn^++4{0+ZoLK_r>5vXHqPB=D7U{@>uX|pq+jjoyr}U@t+OpZS?1R=-Z;F} zZ|PsS)VgNTU5{JI&S#9e!aB}fecvq8S=9Y2OxE0K)vD)J14k!LepXd7`-SICFNuiY zGhbZxY@fe$`NXzPFxWJuC{wjguL`TfXjOE3dj{d5V(o{Zm~H_0mXREl17zeEpX`JDYbQ^%qk7O6f- z=uY#em`Mh@=h!tR7q3$oR9|UQx6kQ{_nh?scX!ICwgp}Bb;~2g)&wtzxpV0{wcR@t z-MPm19?^2`qZFB2dcC97Lfi*VrKM)5yPUuLB?-C)_w?27nG;_$=Hg6AN%hfd{>|x; zUcF@KAA6Je7oI&_w2SfH!qq5D8|`!W-;C0iYtVUCzXm@2IH;FmCVoOi;!~}^VU2oFLnRS^fywLnnCtT-RyneUd;)eWX#bo;+){oSL z-ZyW$KXe9u>ge9mP)Zzo-ddJ$TDOBBW?@lpw4V9T1g-9#Fnx#m%X%Fe#(q_6rBhl` zTqHXVXUGBe)73Fa`CAy%NvpRiwMJitmr3tTc`b&$6+eoM&h_p1~ z5P8H`&G>lebSMv@3#*qZtWVrQcYACg?hr|jd2AzY5<$QI*g@U|E`EJmtSWL6f_$da z~ivAq8dpG=xAJ)mAkyB4lF^tolcraFQI?nDrHD8nC2 zTB|8N-+dgtv|d4b2JrWK`hS#@M-Wdl1cB@MgGsY>g9|n3(haiOhH#gN`;^b>(I9@0P)o_?RLH zeDDX8Hllzo(Ktz)t>4kvy+cdI5X2O8gt`y>!KCe~q*v7F(us|-oD22#8+sjti@w7| zU@z3Kh6`2bj7DX8Xya(q68`k3JUJ&6W<4D0X0gxl@CK7M>K>*L2lsnXP!t%B^UNfX z34z>l;2thqD@ubE**wH1L1iBN;fG*FEbnQJ5D#S+_811jmx7}3feZb=4*CO77iyS; z!TEzp^M5P^6yQ;V2w|L4N5b;iY;oVC4zDB+Xh3NN_M1oEVA7PE@OaVG;F)9s{ABNo zglSuL9L~KC!o7yBUOGGyd@^YjC5CUnl`rFD>zNtwKKEC& zu*wfU?u=Wa98qHDTrj6Sas@@F4d)RNG)z z%jXRyjjDlV3LwehRG42Q_zofXI0eT#s4p$R=F@!$lwc?XiH+2T$)dOs6!JzQ1Rt(( z_C46-IT`$MD>x9lxFl~dX?;e20MUS%9OWqlsPIoBhC$6&JTZNhOXL-P!Hlj}5|(nk z$sf>RW)#e5U^EFI=zFa-kTC-M?;O|&8`D?jh$KQua;UwGGmpMmMT)zMU{#?*0>(~b zo|Q-(m4ZT!058WQ#u3oVR1ogEF@nICNBM(EW7>-(#zawr!i>N^VG&e3=w+GNqm@BS z_L|4m8s%Y`wC&zF)L`gi8Z|R0d;>8Y*VFeLVmWj}+HQd~0RhP$u$cMa;E3UYL7N5T z;>TZaM1qq#xVJM*9yaADug3vF6GC<${U>ZN(>JP3ZO#h7;&=PZ=0biu=V1u+7+kO9_YhFNI?cRGdVhH-j z^2;eD|2N>MV8)}fu(i{NG=c?=PsfpPm`8~Y565vU6t-(Brq3hoz&`WAuXOkdvkk9& z3I|9HA_av7K?5o{oF$Y^c&?Pzt{Hy|bnb?j(#8`eDF?>JxpJb669ZOwky9NlITx}!rcHa$W-`| z4%!}oY^R6Oc4?tVSOA3`jO_J?TV-9?4+ASD-F}K8$VdQVp?25)4h;nR;4}N?ld}TjiU4tD|SjgCM!IVC;t&i3<@OjU?}JIkLNdKyKTvu zAlyXoMC=~R^`>YV?6D|Do5++AzeiT2(RN!>sq`wL7Yly)0Vzf&T~H+SJk5$vjrweGD}kw{*TcvK`-ut)85zS5jnX%~sb zZO|+%uwbh{6l?0#w|_mVX{N)k@G6WGtmVV5dC410T9Q1D zgug3b3WMM~ZNpz_1OL Date: Sat, 18 Apr 2026 14:53:21 +0000 Subject: [PATCH 34/79] =?UTF-8?q?feat:=20vibe-coder=20UX=20=E2=80=94=20qui?= =?UTF-8?q?ck=20actions,=20mode=20descriptions,=20auto-retry,=20continue?= =?UTF-8?q?=20button,=20error=20retry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent-Logs-Url: https://github.com/codomium/CODE/sessions/bb31a941-138c-485d-88a7-55b4dbf2330d Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 85 ++++++++++++++- vscode-extension/media/chat.css | 106 +++++++++++++++++++ vscode-extension/media/chat.html | 30 ++++++ vscode-extension/media/chat.js | 104 +++++++++++++++++- vscode-extension/open-claude-code-1.3.0.vsix | Bin 54736 -> 162304 bytes 5 files changed, 318 insertions(+), 7 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index a03686b..0e07acb 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -31,6 +31,19 @@ const BRIDGE_SCRIPT = path.join(__dirname, 'agent-bridge.mjs'); // Applies to both the in-progress activeSession and updated history entries. const MAX_SESSION_MESSAGES = 200; +// ── Rate-limit retry ───────────────────────────────────────────────────────── +/** Backoff delays (ms) for successive retry attempts */ +const RETRY_DELAYS_MS = [3000, 8000, 20000]; + +/** + * Returns true when the error message looks like a transient rate-limit / + * server-overload error that is worth retrying automatically. + * @param {string} msg + */ +function isRateLimitError(msg) { + return /rate.?limit|overload|too.?many.?request|capacity|529|503|quota/i.test(msg || ''); +} + // ── AgentBridge ───────────────────────────────────────────────────────────── /** @@ -643,13 +656,75 @@ class ClaudeCodeViewProvider { return; } - await agentBridge.run(fullPrompt, (event) => { + // ── Retry loop (auto-recovers from rate-limit / overload errors) ──────── + for (let attempt = 0; ; attempt++) { if (this._isCancelled) return; - this.postMessage(event); - }); - if (!this._isCancelled) { - this.postMessage({ type: 'stop' }); + let retryErrorMsg = null; + + await agentBridge.run(fullPrompt, (event) => { + if (this._isCancelled) return; + // Intercept retryable errors — don't forward yet; we may recover + if (event.type === 'error' && isRateLimitError(event.message)) { + retryErrorMsg = event.message; + return; + } + this.postMessage(event); + }); + + if (this._isCancelled) return; + + if (!retryErrorMsg) { + // Normal completion — stop was already forwarded by onEvent + this.postMessage({ type: 'stop' }); + return; + } + + // Retryable error — decide whether to retry or give up + if (attempt >= RETRY_DELAYS_MS.length) { + // All retries exhausted + this.postMessage({ + type: 'error', + message: retryErrorMsg + ` (failed after ${attempt + 1} attempts)`, + }); + this.postMessage({ type: 'stop' }); + return; + } + + const delaySec = Math.ceil(RETRY_DELAYS_MS[attempt] / 1000); + this.postMessage({ + type: 'retrying', + attempt: attempt + 1, + delaySeconds: delaySec, + maxAttempts: RETRY_DELAYS_MS.length, + }); + + // Countdown ticks emitted every second so the UI can show a live timer + await new Promise((resolve) => { + let remaining = delaySec - 1; + const tick = setInterval(() => { + if (this._isCancelled) { clearInterval(tick); resolve(); return; } + if (remaining <= 0) { clearInterval(tick); resolve(); return; } + this.postMessage({ + type: 'retrying', + attempt: attempt + 1, + delaySeconds: remaining, + maxAttempts: RETRY_DELAYS_MS.length, + }); + remaining--; + }, 1000); + }); + + if (this._isCancelled) return; + + // Re-acquire bridge in case it restarted during the wait + try { + agentBridge = await getBridge(); + } catch (err) { + this.postMessage({ type: 'error', message: 'Failed to restart agent: ' + err.message }); + this.postMessage({ type: 'stop' }); + return; + } } } diff --git a/vscode-extension/media/chat.css b/vscode-extension/media/chat.css index 99b24b8..3299bf3 100644 --- a/vscode-extension/media/chat.css +++ b/vscode-extension/media/chat.css @@ -214,6 +214,69 @@ select:focus { border-color: var(--accent); } .control-spacer { flex: 1; } +/* ---- Mode description bar ---- */ +#mode-desc-bar { + display: flex; + align-items: center; + gap: 6px; + padding: 3px 10px; + background: rgba(0,122,204,0.08); + border-bottom: 1px solid rgba(0,122,204,0.2); + font-size: 11px; + color: var(--text-dim); + flex-shrink: 0; + animation: fadeIn 0.2s ease-out; +} +#mode-desc-text::before { content: 'ℹ '; color: var(--accent); } + +/* ---- Quick Actions panel ---- */ +#quick-actions { + padding: 8px 10px 6px; + border-bottom: 1px solid var(--border); + background: var(--bg-elevated); + flex-shrink: 0; + animation: fadeIn 0.15s ease-out; +} +.qa-section-label { + font-size: 10px; + color: var(--text-muted); + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 5px; +} +.qa-grid { + display: flex; + flex-wrap: wrap; + gap: 5px; +} +.qa-btn { + background: var(--bg-input); + border: 1px solid var(--border); + border-radius: 12px; + color: var(--text-dim); + cursor: pointer; + font-size: 11px; + padding: 3px 10px; + transition: all 0.15s; + white-space: nowrap; + display: flex; + align-items: center; + gap: 4px; +} +.qa-btn:hover { + background: rgba(0,122,204,0.15); + border-color: var(--accent); + color: var(--text); +} +.qa-btn:active { transform: scale(0.96); } + +/* ---- Actions button active state ---- */ +#actions-btn.active { + background: rgba(0,122,204,0.15); + border-color: rgba(0,122,204,0.4); + color: var(--accent); +} + /* ---- Thinking mode toggle pill ---- */ .toggle-switch { --toggle-w: 30px; @@ -1018,6 +1081,49 @@ select:focus { border-color: var(--accent); } font-size: 12px; } +/* Retry button shown below error messages */ +.msg-error-actions { + display: flex; + gap: 6px; + margin-top: 6px; + padding-left: 2px; +} +.msg-retry-btn { + background: transparent; + border: 1px solid rgba(244,135,113,0.4); + border-radius: var(--radius); + color: var(--error-text); + cursor: pointer; + font-size: 11px; + padding: 3px 9px; + transition: all 0.15s; +} +.msg-retry-btn:hover { + background: rgba(244,135,113,0.15); + border-color: var(--error-text); +} + +/* Continue button on assistant messages */ +.msg-continue-btn { + background: transparent; + border: 1px solid transparent; + color: var(--text-muted); + cursor: pointer; + padding: 2px 6px; + border-radius: var(--radius); + font-size: 11px; + opacity: 0; + transition: opacity 0.15s, background 0.15s, color 0.15s; + flex-shrink: 0; + line-height: 1; +} +.msg-assistant:hover .msg-continue-btn { opacity: 1; } +.msg-continue-btn:hover { + background: rgba(78,201,176,0.15); + border-color: rgba(78,201,176,0.4); + color: var(--success); +} + /* Context files chips */ .context-files { display: flex; diff --git a/vscode-extension/media/chat.html b/vscode-extension/media/chat.html index 5cf54e9..6b9c43e 100644 --- a/vscode-extension/media/chat.html +++ b/vscode-extension/media/chat.html @@ -87,6 +87,36 @@ + + + + + + + + diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 06025e2..2e6fdf0 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -55,6 +55,18 @@ /** Interval (approx chars) between loading-text speed updates during streaming */ const STREAM_UPDATE_THROTTLE_CHARS = 80; + /** Plain-English descriptions for each permission mode (shown in mode-desc-bar) */ + const MODE_DESCRIPTIONS = { + default: 'Asks permission before making file edits or running commands — safest choice', + auto: 'Approves safe read operations automatically; asks for writes and commands', + plan: 'Read-only planning mode: analyzes code without making any changes', + acceptEdits: 'Automatically applies all file edits without asking — fast but careful', + bypassPermissions: '⚠ Skips all permission checks — full automation, use with care', + }; + + /** Keywords that indicate a retryable rate-limit/overload error in the UI */ + const RATE_LIMIT_PATTERN = /rate.?limit|overload|too.?many.?request|capacity|529|503|quota/i; + // ── DOM refs ───────────────────────────────────────────────────────────── const messagesEl = document.getElementById('messages'); const welcomeEl = document.getElementById('welcome'); @@ -112,6 +124,10 @@ const statsSpeedEl = document.getElementById('stats-speed'); const statsMsgsEl = document.getElementById('stats-msgs'); const charCountEl = document.getElementById('char-count'); + const actionsBtn = document.getElementById('actions-btn'); + const quickActionsPanel = document.getElementById('quick-actions'); + const modeDescBar = document.getElementById('mode-desc-bar'); + const modeDescText = document.getElementById('mode-desc-text'); /** Models that support NVIDIA thinking mode toggle */ const THINKING_CAPABLE_MODELS = new Set([ @@ -636,6 +652,20 @@ }); header.appendChild(regenBtn); } + + // "Continue" button — sends a follow-up that asks the model to keep going. + // Useful when the model stops mid-task (e.g. max turns reached). + const continueBtn = document.createElement('button'); + continueBtn.className = 'msg-continue-btn'; + continueBtn.title = 'Ask the model to continue from here'; + continueBtn.textContent = '▶ Continue'; + continueBtn.addEventListener('click', () => { + if (isLoading) return; + setSending(true); + setLoading(true, 'Thinking…'); + vscode.postMessage({ type: 'send', message: 'Please continue from where you left off.', contextFiles: [], fileRefs: [] }); + }); + header.appendChild(continueBtn); } // ── Message rendering ───────────────────────────────────────────────────── @@ -938,7 +968,31 @@ currentStreamMsg = null; const div = document.createElement('div'); div.className = 'msg msg-error'; - div.innerHTML = `
    ⚠ ${escapeHtml(text)}
    `; + + const bubble = document.createElement('div'); + bubble.className = 'msg-bubble'; + bubble.textContent = '⚠ ' + text; // safe — textContent + + div.appendChild(bubble); + + // Always show a retry row so the user can manually retry after any error + const actionsRow = document.createElement('div'); + actionsRow.className = 'msg-error-actions'; + + const retryBtn = document.createElement('button'); + retryBtn.className = 'msg-retry-btn'; + retryBtn.textContent = '↩ Retry'; + retryBtn.title = 'Re-send the last message'; + retryBtn.addEventListener('click', () => { + if (isLoading || !lastUserMessage) return; + div.remove(); + setSending(true); + setLoading(true, 'Thinking…'); + vscode.postMessage({ type: 'send', message: lastUserMessage, contextFiles: [], fileRefs: [] }); + }); + actionsRow.appendChild(retryBtn); + div.appendChild(actionsRow); + messagesEl.appendChild(div); scrollToBottom(); } @@ -1203,6 +1257,11 @@ setSending(false); break; + case 'retrying': + // Rate-limit auto-retry: show countdown in loading indicator + setLoading(true, `⏳ Rate limited — retrying in ${msg.delaySeconds}s (attempt ${msg.attempt}/${msg.maxAttempts})…`); + break; + case 'stop': finalizeAssistantMessage(null); setLoading(false); @@ -1470,7 +1529,8 @@ : `$${costTotal.toFixed(3)}`; } if (statsMsgsEl) { - const msgs = Math.floor(sessionMessages.length / 2); // count exchanges + // Count completed user-assistant exchange pairs (floor division) + const msgs = Math.floor(sessionMessages.length / 2); statsMsgsEl.textContent = msgs > 0 ? String(msgs) : '0'; } } @@ -1673,6 +1733,46 @@ }); } + // ── Quick Actions toggle ─────────────────────────────────────────────────── + if (actionsBtn && quickActionsPanel) { + actionsBtn.addEventListener('click', () => { + const visible = quickActionsPanel.style.display !== 'none'; + quickActionsPanel.style.display = visible ? 'none' : ''; + actionsBtn.classList.toggle('active', !visible); + }); + // Wire each quick-action button → fill input with template + quickActionsPanel.querySelectorAll('.qa-btn').forEach((btn) => { + btn.addEventListener('click', () => { + const template = btn.dataset.template || ''; + if (!template || !inputEl) return; + inputEl.value = template + '\n'; + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 160) + 'px'; + inputEl.focus(); + inputEl.setSelectionRange(inputEl.value.length, inputEl.value.length); + // Collapse the panel after selecting to give the user more space + quickActionsPanel.style.display = 'none'; + actionsBtn.classList.remove('active'); + }); + }); + } + + // ── Mode description bar ───────────────────────────────────────────────── + let modeDescTimeout = null; + function showModeDesc(mode) { + const desc = MODE_DESCRIPTIONS[mode]; + if (!modeDescBar || !modeDescText || !desc) return; + modeDescText.textContent = desc; + modeDescBar.style.display = ''; + clearTimeout(modeDescTimeout); + modeDescTimeout = setTimeout(() => { + if (modeDescBar) modeDescBar.style.display = 'none'; + }, 5000); + } + if (modeSelect) { + modeSelect.addEventListener('change', () => showModeDesc(modeSelect.value)); + } + function submitMessage() { if (!inputEl) return; const rawText = inputEl.value.trim(); diff --git a/vscode-extension/open-claude-code-1.3.0.vsix b/vscode-extension/open-claude-code-1.3.0.vsix index 69b17622afd0eeedb25af63f82ed9fc7a02a53ae..101daece4a39a6b306c18b0ec955e237d130593d 100644 GIT binary patch delta 149106 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%0D2e9~5t4*djmssQPh6}@i$_Sj; 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%0A1saKA&RNKGx==89HwS`CpJ}?HE=?a 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 I09WPz1BF!1o&W#< delta 40847 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 Date: Sat, 18 Apr 2026 15:34:02 +0000 Subject: [PATCH 35/79] fix: session memory loss, bridge queue stability, max-turns UX hint (v1.3.1) Agent-Logs-Url: https://github.com/codomium/CODE/sessions/cc62be11-d68f-4e85-a813-05eaed05f3e7 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 72 ++++++++++++++++++++++++++++------ vscode-extension/media/chat.js | 7 ++++ vscode-extension/package.json | 4 +- 3 files changed, 70 insertions(+), 13 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index 0e07acb..ee26c58 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -89,12 +89,17 @@ class AgentBridge { this._proc.on('exit', (code, signal) => { this._started = false; - if (this._currentHandler) { - this._currentHandler({ + const handler = this._currentHandler; + this._currentHandler = null; + if (handler) { + const hint = 'Click Retry to continue — your session memory will be restored.'; + const reason = signal + ? `signal=${signal}` + : `exit code ${code}`; + handler({ type: 'error', - message: `Agent bridge exited unexpectedly (code=${code}, signal=${signal})`, + message: `Agent process stopped unexpectedly (${reason}). ${hint}`, }); - this._currentHandler = null; } }); } @@ -109,7 +114,12 @@ class AgentBridge { } run(message, onEvent) { - this._queue = this._queue.then(() => this._doRun(message, onEvent)); + // Use the two-arg form of .then() so a rejected queue resolves before + // attempting the new run (prevents a stuck queue after bridge errors). + this._queue = this._queue.then( + () => this._doRun(message, onEvent), + () => this._doRun(message, onEvent), + ); return this._queue; } @@ -122,7 +132,12 @@ class AgentBridge { resolve(); } }; - this._send({ type: 'run', message }); + if (!this._send({ type: 'run', message })) { + this._currentHandler = null; + onEvent({ type: 'error', message: 'Agent bridge is not running.' }); + onEvent({ type: 'stop', reason: 'error' }); + resolve(); + } }); } @@ -135,7 +150,10 @@ class AgentBridge { resolve(); } }; - this._send({ type: 'reset' }); + if (!this._send({ type: 'reset' })) { + this._currentHandler = null; + resolve(); + } }) ); return this._queue; @@ -150,7 +168,10 @@ class AgentBridge { resolve(); } }; - this._send({ type: 'model', model }); + if (!this._send({ type: 'model', model })) { + this._currentHandler = null; + resolve(); + } }) ); return this._queue; @@ -169,15 +190,30 @@ class AgentBridge { resolve(); } }; - this._send({ type: 'resume', messages }); + if (!this._send({ type: 'resume', messages })) { + // Bridge not running — skip gracefully; a new bridge will be + // created with auto-injected history by getBridge(). + this._currentHandler = null; + resolve(); + } }) ); return this._queue; } + /** + * Write a JSON message to the bridge's stdin. + * Returns true on success, false if the bridge is not running or write fails. + * Never throws so callers can use a simple boolean check. + */ _send(obj) { - if (!this._proc || !this._started) throw new Error('Agent bridge is not running'); - this._proc.stdin.write(JSON.stringify(obj) + '\n'); + if (!this._proc || !this._started) return false; + try { + this._proc.stdin.write(JSON.stringify(obj) + '\n'); + return true; + } catch { + return false; + } } get isRunning() { return this._started && !!this._proc; } @@ -231,6 +267,20 @@ async function getBridge() { bridge = new AgentBridge(cwd, env); bridge.start(); + + // ── Auto-restore session memory ───────────────────────────────────────── + // Whenever a fresh bridge is created (after a crash, settings change, or + // VS Code restart) inject the last active session so the model always + // remembers the full conversation without the user having to do anything. + // This is queued before any subsequent run() call so history is always + // loaded before the first user message is processed. + const savedSession = extensionContext + ? extensionContext.globalState.get('openClaudeCode.activeSession') + : null; + if (savedSession?.messages?.length > 0) { + bridge.resume(savedSession.messages); + } + return bridge; } diff --git a/vscode-extension/media/chat.js b/vscode-extension/media/chat.js index 2e6fdf0..703b8e6 100644 --- a/vscode-extension/media/chat.js +++ b/vscode-extension/media/chat.js @@ -1266,6 +1266,13 @@ finalizeAssistantMessage(null); setLoading(false); setSending(false); + // When the agent loop hits its turn limit, nudge the user to + // click the ▶ Continue button so the task can keep going. + if (msg.reason === 'max_turns') { + addSystemMessage( + '⚙ Max tool-use turns reached. Use ▶ Continue on the last reply to keep going.' + ); + } // Auto-save current session after every response so VS Code restarts // don't lose the conversation (Cursor/Claude-style session memory). if (sessionMessages.length > 0) { diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 1e9c61c..a21f42d 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -2,7 +2,7 @@ "name": "open-claude-code", "displayName": "Open Claude Code", "description": "AI coding assistant powered by Claude — Cursor-style chat panel with file context, code apply, tool visualization and more", - "version": "1.3.0", + "version": "1.3.1", "publisher": "open-claude-code", "engines": { "vscode": "^1.90.0" @@ -197,7 +197,7 @@ "prepackage": "node scripts/prepare-bundle.js", "package": "vsce package --no-dependencies", "postpackage": "node scripts/cleanup-bundle.js", - "install-vsix": "code --install-extension open-claude-code-1.3.0.vsix" + "install-vsix": "code --install-extension open-claude-code-1.3.1.vsix" }, "devDependencies": { "@types/vscode": "^1.90.0", From 694384264cdb208d7aaea19897c3d35e3a4a27c6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Apr 2026 16:16:54 +0000 Subject: [PATCH 36/79] Changes before error encountered Agent-Logs-Url: https://github.com/codomium/CODE/sessions/0807f6d6-d854-4b46-9453-39f2b369c6a6 Co-authored-by: codomium <255525663+codomium@users.noreply.github.com> --- vscode-extension/extension.js | 84 ++++++++++++++++- vscode-extension/media/chat.html | 26 +++++- vscode-extension/media/chat.js | 149 +++++++++++++++++++++++++++++-- vscode-extension/package.json | 9 +- 4 files changed, 257 insertions(+), 11 deletions(-) diff --git a/vscode-extension/extension.js b/vscode-extension/extension.js index ee26c58..6f176f4 100644 --- a/vscode-extension/extension.js +++ b/vscode-extension/extension.js @@ -21,7 +21,7 @@ */ const vscode = require('vscode'); -const { spawn } = require('child_process'); +const { spawn, execFile } = require('child_process'); const path = require('path'); const fs = require('fs'); @@ -344,6 +344,7 @@ class ClaudeCodeViewProvider { model: config.get('model') || 'claude-sonnet-4-6', mode: config.get('permissionMode') || 'default', thinkingMode: !!config.get('nvidiaThinkingMode'), + autoAttachActiveFile: !!config.get('autoAttachActiveFile'), hasApiKey, activeSession: activeMessages, activeSessionId, @@ -659,6 +660,79 @@ class ClaudeCodeViewProvider { break; } + case 'getGitContext': { + const cwd = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; + if (!cwd) { + this.postMessage({ type: 'gitContext', content: '(no workspace folder open)', branch: '' }); + break; + } + const run = (args) => new Promise((resolve) => { + execFile('git', args, { cwd, timeout: 5000 }, (err, stdout) => { + resolve(err ? '' : stdout.trim()); + }); + }); + const [branch, status, diffStat] = await Promise.all([ + run(['rev-parse', '--abbrev-ref', 'HEAD']), + run(['status', '--short']), + run(['diff', '--stat']), + ]); + const parts = []; + if (branch) parts.push(`Branch: ${branch}`); + parts.push(status ? `Changed files:\n${status}` : 'Working tree clean'); + if (diffStat) parts.push(`Diff summary:\n${diffStat}`); + this.postMessage({ type: 'gitContext', content: parts.join('\n\n'), branch: branch || '' }); + break; + } + + case 'getWorkspaceDiagnostics': { + const diags = []; + for (const [uri, ds] of vscode.languages.getDiagnostics()) { + const rel = vscode.workspace.asRelativePath(uri); + for (const d of ds) { + if (d.severity > 1) continue; // skip hints and info + diags.push({ + file: rel, + line: d.range.start.line + 1, + col: d.range.start.character + 1, + severity: d.severity === 0 ? 'error' : 'warning', + message: d.message, + source: d.source || '', + }); + } + } + diags.sort((a, b) => (a.severity === b.severity ? 0 : a.severity === 'error' ? -1 : 1)); + this.postMessage({ type: 'workspaceDiagnostics', diagnostics: diags }); + break; + } + + case 'getOpenEditors': { + const files = []; + const seen = new Set(); + for (const group of (vscode.window.tabGroups?.all || [])) { + for (const tab of group.tabs) { + const uri = tab.input?.uri; + if (uri && !seen.has(uri.fsPath)) { + seen.add(uri.fsPath); + files.push({ + name: path.basename(uri.fsPath), + path: uri.fsPath, + relativePath: vscode.workspace.asRelativePath(uri.fsPath), + }); + } + } + } + this.postMessage({ type: 'openEditors', files }); + break; + } + + case 'toggleAutoAttach': { + const config = vscode.workspace.getConfiguration('openClaudeCode'); + const next = !config.get('autoAttachActiveFile'); + await config.update('autoAttachActiveFile', next, vscode.ConfigurationTarget.Global); + this.postMessage({ type: 'autoAttachState', enabled: next }); + break; + } + default: break; } @@ -681,6 +755,14 @@ class ClaudeCodeViewProvider { } } + // Auto-attach active editor when the setting is on (works even if no + // other context files were explicitly added by the user). + const promptConfig = vscode.workspace.getConfiguration('openClaudeCode'); + if (promptConfig.get('autoAttachActiveFile')) { + const editor = vscode.window.activeTextEditor; + if (editor) allPaths.add(editor.document.fileName); + } + if (allPaths.size > 0) { const fileContents = []; for (const fp of allPaths) { diff --git a/vscode-extension/media/chat.html b/vscode-extension/media/chat.html index 6b9c43e..75fe105 100644 --- a/vscode-extension/media/chat.html +++ b/vscode-extension/media/chat.html @@ -242,6 +242,12 @@

    Claude Code

    Thinking… + + + @@ -271,6 +277,24 @@

    Claude Code

    + + +