From 9c5c976d9a8e1337c50b9cd5db370bf6f08c26bd Mon Sep 17 00:00:00 2001 From: tinkle-community Date: Wed, 11 Mar 2026 16:01:42 +0800 Subject: [PATCH] feat: Claw402 x402 payment provider + Telegram agent + x402 refactoring (#1409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(telegram): add AI agent bot with streaming and account context - Add Telegram bot with long-polling and AI agent loop (api_call tool) - SSE streaming with real-time message editing and ⏳ placeholder - Account state injection at conversation start (models, exchanges, strategies, traders, per-trader PnL and statistics) - Lane semaphore per chat serializes concurrent messages (60s timeout) - Idle timeout watchdog (60s) prevents hung streaming connections - Look-ahead buffer prevents partial tag leaking to user - Fix PUT /strategies/:id to merge config (read-then-merge pattern) - Add route registry with full API schema for LLM documentation - Add TelegramConfig store and Web UI config modal - Add GetAnyEnabled to AIModel store for bot LLM client selection * fix(telegram): eliminate narration, add full-setup workflow and tests - Rewrite NO NARRATION rule: response is EITHER api_call tag alone OR final text reply — no text before api_call under any circumstances - Ban all narration patterns: 现在我将/好的/正在/I will/Let me etc. - Add 'create strategy + create trader + start' full setup workflow - Add 12 automated tests covering: - No narration leaking to user (5 narration variants tested) - api_call tag never leaks to user - Full setup workflow: POST strategy → verify → POST trader → start - Start existing trader workflow - Max iterations safety, tag stripping, parser edge cases * refactor(agent): replace XML api_call with native function calling Migrate the Telegram bot agent from an XML tag hack () to OpenAI-native function calling via CallWithRequestFull. Key changes: - mcp/interface.go: add parseMCPResponseFull to clientHooks interface - mcp/client.go: route callWithRequestFull through hooks for overridability - mcp/claude_client.go: override parseMCPResponseFull for Claude response format (tool_use blocks instead of choices[].message.tool_calls) - telegram/agent/agent.go: rewrite Run() to use CallWithRequestFull; define api_request tool with JSON Schema; implement tool-call loop with role="tool" result messages; remove XML parsing entirely - telegram/agent/apicall.go: remove parseAPICall (dead code) - telegram/agent/prompt.go: simplify — remove XML format instructions, replace with concise api_request tool usage instructions - telegram/agent/agent_test.go: rebuild all tests using LLMResponse objects; add TestNarrationStructurallyImpossible, TestOnChunkCalledWithFinalReply, TestToolCallIDPropagated; remove XML-specific tests Architecture advantage: with native function calling, the LLM returns EITHER ToolCalls OR Content — never both. Narration is now structurally impossible at the protocol level, not just enforced by prompt rules. All 11 agent tests pass. mcp package tests pass. * refactor(mcp): route buildRequestBodyFromRequest through hooks + full Anthropic format Problem: callWithRequest/Full/Stream all called client.buildRequestBodyFromRequest directly (not via hooks), so ClaudeClient could never override it. This meant tool calling sent OpenAI format to Anthropic (wrong field names, wrong roles). Changes: mcp/interface.go - Add buildRequestBodyFromRequest(*Request) map[string]any to clientHooks - Improve comments: document what each hook group does and why mcp/client.go - All three paths (callWithRequest, callWithRequestFull, CallWithRequestStream) now call client.hooks.buildRequestBodyFromRequest — ClaudeClient picks up mcp/claude_client.go - Full rewrite with format comparison table in package doc - buildRequestBodyFromRequest: produces correct Anthropic wire format * system prompt → top-level "system" field * tools: parameters → input_schema, no "type:function" wrapper * tool_choice "auto" → {"type":"auto"} object * assistant tool calls → content[{type:tool_use, id, name, input}] * role=tool results → role=user content[{type:tool_result,...}] * consecutive tool results merged into single user turn - convertMessagesToAnthropic: handles all three message types - parseMCPResponseFull: extracts text + tool_use blocks - parseMCPResponse: delegates to parseMCPResponseFull All mcp and agent tests pass. * fix(telegram): fix claude client dispatch + strategy creation workflow - telegram/bot.go: clientForProvider now returns NewClaudeClient() for 'claude' provider (was incorrectly falling back to DeepSeekClient which uses OpenAI wire format, breaking Anthropic API calls) - api/server.go: fix scan_interval_minutes schema default (3, not 60); POST /api/strategies now clearly states config is OPTIONAL with complete working defaults; POST /api/traders removes redundant GET workflow note - telegram/agent/prompt.go: simplify strategy creation — just POST {name} without config (backend applies full working defaults automatically); only include config when user requests custom settings * test(mcp): add ClaudeClient wire format tests Tests cover all Anthropic-specific format conversions: - system prompt lifted to top-level field - tools use input_schema (not parameters) - tool_choice is object {type:auto} not string - assistant tool calls → content[{type:tool_use}] - consecutive tool results merged into single user turn - parseMCPResponseFull: text, tool_use, and error cases - x-api-key header (not Authorization: Bearer) - /messages endpoint URL * fix(telegram): clientForProvider returns correct client for all 7 providers Previously qwen/kimi/grok/gemini all fell back to DeepSeekClient. Each provider now gets its own dedicated client with correct default base URL and model. All 7 providers now fully supported: openai, deepseek, claude, qwen, kimi, grok, gemini * fix(telegram): newLLMClient uses bound user's model, not any user's model GetAnyEnabled() searched across all users in DB — if user B has an enabled model, bot could use their API key while acting as user A. Now uses GetDefault(botUserID) which only looks up the bound user's enabled model, matching the same user scope as all API calls. * fix(auth): single-user deployment by default, no open registration Registration logic redesigned: - Empty DB (first-time setup): registration always open, no config needed - After first user exists: registration closed by default - Multi-user opt-in: set REGISTRATION_ENABLED=true + MAX_USERS=N in .env Config defaults changed: - RegistrationEnabled: true → false (closed after first user) - MaxUsers: 10 → 1 (single-user deployment default) This eliminates the confusion of multiple users appearing in a personal deployment where Telegram is bound to a single admin account. * feat(solo): beginner-friendly onboarding — smart setup guide + direct config commands start.sh: - Interactive Telegram Bot Token prompt on first run - Token format validation (must match 12345:ABC... pattern) - Friendly step-by-step startup instructions after launch telegram/bot.go: - /start now shows context-aware setup guide based on actual config state: - No AI model → explains how to configure, lists all providers - AI model OK but no exchange → guides to configure exchange via chat - All configured → full capabilities welcome message - New: direct setup commands ('配置 deepseek sk-xxx') bypass LLM entirely so AI model can be configured even before any model exists (bootstrap fix) - All messages now in Chinese (匹配用户语言) telegram/agent/prompt.go: - Added first-time setup detection section - Agent told to never ask user to visit web UI — everything via chat * feat(i18n): bilingual EN/ZH setup guide with language selection store/telegram_config.go: - Add Language field to TelegramConfig (persisted in DB) - Add SetLanguage(lang) and GetLanguage() methods - Default language: English (en) telegram/bot.go: - First /start triggers language selection (1=English, 2=中文) - /lang command to change language at any time - awaitingLang state machine handles language choice before any other input - buildSetupGuide() now fully bilingual (EN/ZH), context-aware: Step 1: configure AI model (no model yet) Step 2: configure exchange (model OK, no exchange) Ready: show full capabilities - tryHandleSetupCommand() bilingual: 'configure/配置 ' - helpMessage(lang) fully bilingual - All error/status messages bilingual Default: English. isLangDefault() detects whether user has explicitly chosen a language vs falling back to the 'en' default. * fix(telegram): use Markdown rendering + simplify language selection condition - sendMarkdownMsg() helper: sends with ParseMode=Markdown, falls back to plain text - All formatted messages (langSelectionMsg, buildSetupGuide, helpMessage) now render bold text and code blocks correctly in Telegram - Simplify /start language check: isLangDefault(st) alone is sufficient (lang == 'en' && isLangDefault was redundant — GetLanguage returns 'en' when empty) * fix(start.sh): translate all user-facing text to English Entire script was in Chinese. Now English-first throughout: - startup banner, prompts, success/error messages - setup_telegram(): English instructions and validation messages - start(): English next-steps after launch - stop/restart/clean/update/regenerate-keys/show_help: all English * fix(telegram): remove 'default' user fallback — resolve user dynamically - botUserID no longer captured once at startup (was 'default' if no user yet) - resolveBotUser() reads first registered user from DB on demand: * called on every /start (handles: registered after bot launch) * called before every AI message (handles mid-session registration) - If no user registered: clear English error 'No account found. Please register on the web UI first' - start.sh: fix set_env_var appending without newline (token was concatenated to prev line) * refactor(telegram): clean onboarding — web UI for setup, Telegram for operations - /start shows clean status: 'setup required → open web UI' or 'ready → examples' - Removed tryHandleSetupCommand (no more CLI-style 'configure deepseek sk-xxx') - Removed automatic language selection on /start (use /lang anytime instead) - newLLMClient returns nil when no model → clear guard, not fallback - statusMsg() replaces buildSetupGuide(): two states only (missing config / ready) - Bot is now purely an operations interface; config lives in the web UI * refactor: single-user web-based setup — replace env config with Settings UI Move from multi-user env-var config to single-user web-first architecture: - Add SetupPage for first-time initialization (replaces /register) - Add SettingsPage for AI models, exchanges, Telegram, and password management - Enrich all API route schemas with exact ID usage documentation - Add PUT /user/password endpoint for in-app password changes - Remove REGISTRATION_ENABLED, MAX_USERS, TELEGRAM_BOT_TOKEN from env config - Simplify LoginPage design, remove admin mode and registration links - Telegram bot now resolves user email for identity display - start.sh no longer runs interactive Telegram setup * feat: add blockRun (x402 USDC) support to all AI model consumers - telegram/bot.go: add blockrun-base, blockrun-sol, minimax to clientForProvider; fix newLLMClient to prefer TelegramConfig.ModelID over GetDefault; log USDC payment provider usage - debate/engine.go: add blockrun-base, blockrun-sol to InitializeClients - api/strategy.go: add blockrun-base, blockrun-sol to runRealAITest - backtest/ai_client.go: add blockrun-base, blockrun-sol to configureMCPClient * feat: add Claw402 (claw402.ai) x402 USDC payment provider Add Claw402Client for claw402.ai's x402 micropayment gateway (Base USDC). Supports 15+ AI models (GPT-5.4, Claude Opus, DeepSeek, Qwen, Grok, etc.) with per-model endpoint routing. - mcp/claw402.go: new client with model→endpoint mapping, x402 v2 payment flow - mcp/blockrun_base.go: extract shared signX402Payment() for reuse - Register "claw402" provider in all 6 consumer switch statements: api/server.go, api/strategy.go, trader/auto_trader.go, telegram/bot.go, debate/engine.go, backtest/ai_client.go * feat: redesign Claw402 model config UI — friendly wallet setup, USDC guide, official logo, nginx no-cache for index.html * refactor: centralize x402 payment flow into shared mcp/x402.go Extract duplicated doRequestWithPayment/call/CallWithRequestFull/buildRequest/ setAuthHeader (~165 lines x3) into shared helpers in mcp/x402.go. Consolidate shared types (x402v2PaymentRequired, x402AcceptOption, x402Resource) and remove duplicate Solana types. Fix validAfter to 0 (official SDK standard), drain 402 body before retry, log Payment-Response tx hash, check Payment-Required before X-Payment-Required. * fix: stop PR template bot from overwriting user-written descriptions The pr-template-suggester workflow was triggered on opened/edited/synchronize events and forcefully replaced the PR body with a template when body < 100 chars. This caused user-written descriptions to be overwritten. Replace with a lightweight labeler (OpenClaw-style) that: - Only adds labels (backend/frontend/docs, size: XS/S/M/L/XL) - Never modifies the PR body - Simplified unified PR template at .github/pull_request_template.md * chore: simplify PR template (OpenClaw-style) --- .env.example | 4 - .github/PULL_REQUEST_TEMPLATE.md | 120 +- .github/workflows/pr-template-suggester.yml | 210 +-- .gitignore | 1 + api/route_registry.go | 66 + api/server.go | 489 +++++-- api/strategy.go | 83 +- backtest/ai_client.go | 21 + config/config.go | 19 +- debate/engine.go | 6 + .../2026-03-06-telegram-agent-redesign.md | 1039 ++++++++++++++ docs/plans/2026-03-06-telegram-bot.md | 1218 +++++++++++++++++ main.go | 10 + mcp/blockrun_base.go | 159 +-- mcp/blockrun_sol.go | 114 +- mcp/claude_client.go | 300 +++- mcp/claude_client_test.go | 248 ++++ mcp/claw402.go | 166 +++ mcp/client.go | 242 +++- mcp/interface.go | 43 +- mcp/request.go | 31 +- mcp/x402.go | 219 +++ nginx/nginx.conf | 9 +- start.sh | 183 +-- store/ai_model.go | 13 + store/store.go | 36 +- store/telegram_config.go | 164 +++ store/user.go | 7 + telegram/agent/agent.go | 285 ++++ telegram/agent/agent_test.go | 439 ++++++ telegram/agent/apicall.go | 88 ++ telegram/agent/manager.go | 79 ++ telegram/agent/prompt.go | 97 ++ telegram/bot.go | 479 +++++++ telegram/session/memory.go | 105 ++ trader/auto_trader.go | 5 + web/public/icons/claw402.png | Bin 0 -> 816040 bytes web/public/icons/claw402.svg | 17 + web/src/App.tsx | 39 +- web/src/components/AITradersPage.tsx | 264 +++- web/src/components/HeaderBar.tsx | 24 +- web/src/components/LoginPage.tsx | 302 ++-- web/src/components/ModelIcons.tsx | 4 + web/src/components/RegisterPage.tsx | 2 +- web/src/components/SetupPage.tsx | 115 ++ web/src/components/TraderConfigModal.tsx | 4 +- web/src/components/landing/LoginModal.tsx | 23 - .../traders/TelegramConfigModal.tsx | 530 +++++++ web/src/i18n/translations.ts | 12 +- web/src/lib/api.ts | 23 + web/src/lib/config.ts | 13 +- web/src/pages/SettingsPage.tsx | 489 +++++++ web/src/types.ts | 7 + 53 files changed, 7572 insertions(+), 1093 deletions(-) create mode 100644 api/route_registry.go create mode 100644 docs/plans/2026-03-06-telegram-agent-redesign.md create mode 100644 docs/plans/2026-03-06-telegram-bot.md create mode 100644 mcp/claude_client_test.go create mode 100644 mcp/claw402.go create mode 100644 mcp/x402.go create mode 100644 store/telegram_config.go create mode 100644 telegram/agent/agent.go create mode 100644 telegram/agent/agent_test.go create mode 100644 telegram/agent/apicall.go create mode 100644 telegram/agent/manager.go create mode 100644 telegram/agent/prompt.go create mode 100644 telegram/bot.go create mode 100644 telegram/session/memory.go create mode 100644 web/public/icons/claw402.png create mode 100644 web/public/icons/claw402.svg create mode 100644 web/src/components/SetupPage.tsx create mode 100644 web/src/components/traders/TelegramConfigModal.tsx create mode 100644 web/src/pages/SettingsPage.tsx diff --git a/.env.example b/.env.example index 5eafa687..22cd7ef2 100644 --- a/.env.example +++ b/.env.example @@ -52,10 +52,6 @@ TRANSPORT_ENCRYPTION=false # Optional: External Services # =========================================== -# Telegram notifications (optional) -# TELEGRAM_BOT_TOKEN=your-bot-token -# TELEGRAM_CHAT_ID=your-chat-id - DB_TYPE=postgres DB_HOST=10. DB_PORT=5432 diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e70c2868..eb418964 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,100 +1,50 @@ -# Pull Request +## Summary -> **📋 Choose Specialized Template** -> -> We now offer specialized templates for different types of PRs to help you fill out the information faster: -> -> - 🔧 **[Backend PR Template](./PULL_REQUEST_TEMPLATE/backend.md)** - For Go/API/Trading changes -> - 🎨 **[Frontend PR Template](./PULL_REQUEST_TEMPLATE/frontend.md)** - For UI/UX changes -> - 📝 **[Documentation PR Template](./PULL_REQUEST_TEMPLATE/docs.md)** - For documentation updates -> - 📦 **[General PR Template](./PULL_REQUEST_TEMPLATE/general.md)** - For mixed or other changes -> -> **How to use?** -> - When creating a PR, add `?template=backend.md` or other template name to the URL -> - Or simply copy and paste the content from the corresponding template +- Problem: +- What changed: +- What did NOT change (scope boundary): ---- +## Change Type -> **💡 Tip:** Recommended PR title format `type(scope): description` -> Example: `feat(trader): add new strategy` | `fix(api): resolve auth issue` +- [ ] Bug fix +- [ ] Feature +- [ ] Refactoring +- [ ] Docs +- [ ] Security fix +- [ ] Chore / infra ---- +## Scope -## 📝 Description +- [ ] Trading engine / strategies +- [ ] MCP / AI clients +- [ ] API / server +- [ ] Telegram bot / agent +- [ ] Web UI / frontend +- [ ] Config / deployment +- [ ] CI/CD / infra - - - ---- - -## 🎯 Type of Change - -- [ ] 🐛 Bug fix -- [ ] ✨ New feature -- [ ] 💥 Breaking change -- [ ] 📝 Documentation update -- [ ] 🎨 Code style update -- [ ] ♻️ Refactoring -- [ ] ⚡ Performance improvement -- [ ] ✅ Test update -- [ ] 🔧 Build/config change -- [ ] 🔒 Security fix - ---- - -## 🔗 Related Issues +## Linked Issues - Closes # -- Related to # +- Related # ---- +## Testing -## 📋 Changes Made +What you verified and how: - -- -- +- [ ] `go build ./...` passes +- [ ] `go test ./...` passes +- [ ] Manual testing done (describe below) ---- +## Security Impact -## 🧪 Testing +- Secrets/keys handling changed? (`Yes/No`) +- New/changed API endpoints? (`Yes/No`) +- User input validation affected? (`Yes/No`) -- [ ] Tested locally -- [ ] Tests pass -- [ ] Verified no existing functionality broke +## Compatibility ---- - -## ✅ Checklist - -### Code Quality -- [ ] Code follows project style -- [ ] Self-review completed -- [ ] Comments added for complex logic - -### Documentation -- [ ] Updated relevant documentation - -### Git -- [ ] Commits follow conventional format -- [ ] Rebased on latest `dev` branch -- [ ] No merge conflicts - ---- - -## 📚 Additional Notes - - - - ---- - -**By submitting this PR, I confirm:** - -- [ ] I have read the [Contributing Guidelines](../CONTRIBUTING.md) -- [ ] I agree to the [Code of Conduct](../CODE_OF_CONDUCT.md) -- [ ] My contribution is licensed under AGPL-3.0 - ---- - -🌟 **Thank you for your contribution!** +- Backward compatible? (`Yes/No`) +- Config/env changes? (`Yes/No`) +- Migration needed? (`Yes/No`) +- If yes, upgrade steps: diff --git a/.github/workflows/pr-template-suggester.yml b/.github/workflows/pr-template-suggester.yml index 0798ca00..fe81fe5d 100644 --- a/.github/workflows/pr-template-suggester.yml +++ b/.github/workflows/pr-template-suggester.yml @@ -1,22 +1,18 @@ -name: PR Template Suggester +name: PR Labeler on: pull_request: - types: [opened, edited, synchronize] + types: [opened, synchronize, reopened] permissions: pull-requests: write - issues: write contents: read jobs: - suggest-template: + label-pr: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Analyze PR files and auto-apply template + - name: Analyze PR and apply labels uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -25,166 +21,72 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number, + per_page: 100, }); let goFiles = 0, jsFiles = 0, tsFiles = 0, mdFiles = 0, otherFiles = 0; + let additions = 0, deletions = 0; for (const file of files) { - const filename = file.filename.toLowerCase(); - if (filename.endsWith('.go')) goFiles++; - else if (filename.endsWith('.js') || filename.endsWith('.jsx')) jsFiles++; - else if (filename.endsWith('.ts') || filename.endsWith('.tsx') || filename.endsWith('.vue')) tsFiles++; - else if (filename.endsWith('.md')) mdFiles++; + const name = file.filename.toLowerCase(); + additions += file.additions || 0; + deletions += file.deletions || 0; + if (name.endsWith('.go')) goFiles++; + else if (name.endsWith('.js') || name.endsWith('.jsx')) jsFiles++; + else if (name.endsWith('.ts') || name.endsWith('.tsx') || name.endsWith('.vue')) tsFiles++; + else if (name.endsWith('.md')) mdFiles++; else otherFiles++; } const totalFiles = goFiles + jsFiles + tsFiles + mdFiles + otherFiles; - if (totalFiles === 0) { console.log('No files changed'); return; } + if (totalFiles === 0) return; - let suggestedTemplate = null, templateEmoji = '', templateLabel = ''; + // --- Scope label --- + const labels = []; + if (goFiles / totalFiles > 0.5) labels.push('backend'); + else if ((jsFiles + tsFiles) / totalFiles > 0.5) labels.push('frontend'); + else if (mdFiles / totalFiles > 0.7) labels.push('documentation'); + else labels.push('fullstack'); - if (goFiles / totalFiles > 0.5) { - suggestedTemplate = 'backend'; templateEmoji = '🔧'; templateLabel = 'backend'; - } else if ((jsFiles + tsFiles) / totalFiles > 0.5) { - suggestedTemplate = 'frontend'; templateEmoji = '🎨'; templateLabel = 'frontend'; - } else if (mdFiles / totalFiles > 0.7) { - suggestedTemplate = 'docs'; templateEmoji = '📝'; templateLabel = 'documentation'; + // --- Size label (like OpenClaw) --- + const totalChanged = additions + deletions; + const sizeLabels = ['size: XS', 'size: S', 'size: M', 'size: L', 'size: XL']; + let sizeLabel = 'size: XL'; + if (totalChanged < 50) sizeLabel = 'size: XS'; + else if (totalChanged < 200) sizeLabel = 'size: S'; + else if (totalChanged < 500) sizeLabel = 'size: M'; + else if (totalChanged < 1000) sizeLabel = 'size: L'; + labels.push(sizeLabel); + + // Ensure size labels exist + for (const sl of sizeLabels) { + try { + await github.rest.issues.getLabel({ owner: context.repo.owner, repo: context.repo.repo, name: sl }); + } catch (e) { + if (e.status === 404) { + await github.rest.issues.createLabel({ owner: context.repo.owner, repo: context.repo.repo, name: sl, color: 'b76e79' }); + } + } } - const { data: pr } = await github.rest.pulls.get({ + // Remove stale size labels + const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({ + owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, + }); + for (const cl of currentLabels) { + if (sizeLabels.includes(cl.name) && cl.name !== sizeLabel) { + await github.rest.issues.removeLabel({ + owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, name: cl.name, + }).catch(() => {}); + } + } + + // Apply labels + await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, - pull_number: context.issue.number, + issue_number: context.issue.number, + labels: labels, }); - const prBody = pr.body || ''; - const usesBackendTemplate = prBody.includes('Pull Request - Backend'); - const usesFrontendTemplate = prBody.includes('Pull Request - Frontend'); - const usesDocsTemplate = prBody.includes('Pull Request - Documentation'); - const usesGeneralTemplate = prBody.includes('Pull Request - General'); - const usingDefaultTemplate = !usesBackendTemplate && !usesFrontendTemplate && !usesDocsTemplate && !usesGeneralTemplate; - - if (templateLabel) { - try { - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - labels: [templateLabel] - }); - console.log('Added label: ' + templateLabel); - } catch (error) { - console.log('Label might not exist, skipping...'); - } - } - - function isPRBodyEmpty(body) { - if (!body || body.trim().length < 100) return true; - const hasEmptyDescription = body.includes('**English:**') && body.match(/\*\*English:\*\*\s*\n\s*\n\s*\n/); - const hasEmptyChanges = body.includes('具体变更') && body.match(/\*\*中文:\*\*\s*\n\s*-\s*\n\s*-\s*\n/); - if (hasEmptyDescription || hasEmptyChanges) return true; - const descMatch = body.match(/\*\*English:\*\*[||]\s*\*\*中文:\*\*\s*\n\s*(.+)/); - if (!descMatch || descMatch[1].trim().length < 10) return true; - return false; - } - - if (suggestedTemplate && usingDefaultTemplate) { - const shouldAutoApply = isPRBodyEmpty(prBody); - const templatePath = '.github/PULL_REQUEST_TEMPLATE/' + suggestedTemplate + '.md'; - - if (shouldAutoApply) { - try { - const { data: templateFile } = await github.rest.repos.getContent({ - owner: context.repo.owner, - repo: context.repo.repo, - path: templatePath, - ref: context.payload.pull_request.head.ref - }); - - const templateContent = Buffer.from(templateFile.content, 'base64').toString('utf-8'); - - await github.rest.pulls.update({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.issue.number, - body: templateContent - }); - - console.log('Auto-applied ' + suggestedTemplate + ' template'); - - let fileStats = []; - if (goFiles > 0) fileStats.push('- 🔧 Go files: ' + goFiles); - if (jsFiles > 0) fileStats.push('- 🎨 JavaScript files: ' + jsFiles); - if (tsFiles > 0) fileStats.push('- 🎨 TypeScript files: ' + tsFiles); - if (mdFiles > 0) fileStats.push('- 📝 Markdown files: ' + mdFiles); - if (otherFiles > 0) fileStats.push('- 📦 Other files: ' + otherFiles); - const fileStatsText = fileStats.join('\n'); - - const notifyComment = '## ' + templateEmoji + ' 已自动应用专用模板 | Auto-Applied Template\n\n' + - '检测到您的PR主要包含 **' + suggestedTemplate + '** 相关的变更,系统已自动为您应用相应的模板。\n\n' + - 'Detected that your PR primarily contains **' + suggestedTemplate + '** changes. The appropriate template has been automatically applied.\n\n' + - '**文件统计 | File Statistics**\n' + fileStatsText + '\n\n' + - '**已应用模板 | Applied Template**\n`' + templatePath + '`\n\n' + - '✨ 您现在可以直接在PR描述中填写相关信息了!\n\n' + - '✨ You can now fill in the relevant information in the PR description!'; - - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: notifyComment - }); - - } catch (error) { - console.log('Failed to fetch or apply template: ' + error.message); - const templateUrl = 'https://raw.githubusercontent.com/' + context.repo.owner + '/' + context.repo.repo + '/dev/.github/PULL_REQUEST_TEMPLATE/' + suggestedTemplate + '.md'; - const fallbackComment = '## ' + templateEmoji + ' 建议使用专用模板 | Suggested Template\n\n' + - '您的PR主要包含 **' + suggestedTemplate + '** 相关的变更。\n\n' + - '**推荐模板 | Recommended Template:** `.github/PULL_REQUEST_TEMPLATE/' + suggestedTemplate + '.md`\n\n' + - '**如何使用 | How to use:** [点击查看模板内容](' + templateUrl + ')'; - - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: fallbackComment - }); - } - } else { - console.log('PR body has content, sending suggestion only'); - - let fileStats = []; - if (goFiles > 0) fileStats.push('- 🔧 Go files: ' + goFiles); - if (jsFiles > 0) fileStats.push('- 🎨 JavaScript files: ' + jsFiles); - if (tsFiles > 0) fileStats.push('- 🎨 TypeScript files: ' + tsFiles); - if (mdFiles > 0) fileStats.push('- 📝 Markdown files: ' + mdFiles); - if (otherFiles > 0) fileStats.push('- 📦 Other files: ' + otherFiles); - const fileStatsText = fileStats.join('\n'); - - const templateUrl = 'https://raw.githubusercontent.com/' + context.repo.owner + '/' + context.repo.repo + '/dev/.github/PULL_REQUEST_TEMPLATE/' + suggestedTemplate + '.md'; - - const comment = '## ' + templateEmoji + ' 建议使用专用模板 | Suggested Template\n\n' + - '您的PR主要包含 **' + suggestedTemplate + '** 相关的变更。我们建议使用更适合的模板以简化填写。\n\n' + - 'Your PR primarily contains **' + suggestedTemplate + '** changes. We suggest using a more suitable template to simplify filling.\n\n' + - '**文件统计 | File Statistics**\n' + fileStatsText + '\n\n' + - '**推荐模板 | Recommended Template**\n```\n.github/PULL_REQUEST_TEMPLATE/' + suggestedTemplate + '.md\n```\n\n' + - '**如何使用 | How to use**\n' + - '1. 编辑PR描述 | Edit PR description\n' + - '2. 复制 [' + suggestedTemplate + ' 模板内容](' + templateUrl + ') | Copy [' + suggestedTemplate + ' template content](' + templateUrl + ')\n' + - '3. 或在创建PR时使用URL参数 | Or use URL parameter when creating PR\n' + - ' `?template=' + suggestedTemplate + '.md`\n\n' + - '_这是一个自动建议,您可以继续使用当前模板。_\n\n' + - '_This is an automated suggestion. You may continue using the current template._'; - - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: comment - }); - } - } else if (suggestedTemplate && !usingDefaultTemplate) { - console.log('PR already uses a specific template'); - } else { - console.log('No specific template suggestion needed - mixed changes'); - } + console.log(`Applied labels: ${labels.join(', ')} (${totalChanged} lines changed)`); diff --git a/.gitignore b/.gitignore index 7a2f6321..1f3eeb12 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ nofx_test # Go 相关 *.test *.out +.gocache/ # 操作系统 .DS_Store diff --git a/api/route_registry.go b/api/route_registry.go new file mode 100644 index 00000000..23bdef8d --- /dev/null +++ b/api/route_registry.go @@ -0,0 +1,66 @@ +package api + +import ( + "fmt" + "strings" + + "github.com/gin-gonic/gin" +) + +// RouteDoc holds documentation for a single API route. +type RouteDoc struct { + Method string + Path string + Description string + Schema string // optional: full parameter/body schema documentation +} + +// routeRegistry stores all documented routes. Populated via s.route() calls in setupRoutes. +var routeRegistry []RouteDoc + +// route registers an HTTP route with a one-line description. +func (s *Server) route(g *gin.RouterGroup, method, path, description string, h gin.HandlerFunc) { + s.routeWithSchema(g, method, path, description, "", h) +} + +// routeWithSchema registers an HTTP route with full parameter schema documentation. +// schema is injected verbatim into the API docs seen by the LLM. +func (s *Server) routeWithSchema(g *gin.RouterGroup, method, path, description, schema string, h gin.HandlerFunc) { + fullPath := strings.TrimSuffix(g.BasePath(), "/") + "/" + strings.TrimPrefix(path, "/") + routeRegistry = append(routeRegistry, RouteDoc{ + Method: method, + Path: fullPath, + Description: description, + Schema: schema, + }) + switch method { + case "GET": + g.GET(path, h) + case "POST": + g.POST(path, h) + case "PUT": + g.PUT(path, h) + case "DELETE": + g.DELETE(path, h) + } +} + +// GetAPIDocs returns formatted API documentation for injection into the LLM system prompt. +// Routes with schema documentation include full parameter details. +func GetAPIDocs() string { + var sb strings.Builder + for _, r := range routeRegistry { + sb.WriteString(fmt.Sprintf("%-8s %s\n", r.Method, r.Path)) + sb.WriteString(fmt.Sprintf(" %s\n", r.Description)) + if r.Schema != "" { + // Indent each schema line for readability + for _, line := range strings.Split(strings.TrimSpace(r.Schema), "\n") { + sb.WriteString(" ") + sb.WriteString(line) + sb.WriteByte('\n') + } + } + sb.WriteByte('\n') + } + return sb.String() +} diff --git a/api/server.go b/api/server.go index 09e9af85..74813fdd 100644 --- a/api/server.go +++ b/api/server.go @@ -40,14 +40,15 @@ import ( // Server HTTP API server type Server struct { - router *gin.Engine - traderManager *manager.TraderManager - store *store.Store - cryptoHandler *CryptoHandler - backtestManager *backtest.Manager - debateHandler *DebateHandler - httpServer *http.Server - port int + router *gin.Engine + traderManager *manager.TraderManager + store *store.Store + cryptoHandler *CryptoHandler + backtestManager *backtest.Manager + debateHandler *DebateHandler + httpServer *http.Server + port int + telegramReloadCh chan<- struct{} // signal Telegram bot to reload } // NewServer Creates API server @@ -114,108 +115,276 @@ func (s *Server) setupRoutes() { // Admin login (used in admin mode, public) // System supported models and exchanges (no authentication required) - api.GET("/supported-models", s.handleGetSupportedModels) - api.GET("/supported-exchanges", s.handleGetSupportedExchanges) + s.route(api, "GET", "/supported-models", "List supported AI model providers", s.handleGetSupportedModels) + s.route(api, "GET", "/supported-exchanges", "List supported exchange types", s.handleGetSupportedExchanges) // System config (no authentication required, for frontend to determine admin mode/registration status) - api.GET("/config", s.handleGetSystemConfig) + s.route(api, "GET", "/config", "Get system configuration", s.handleGetSystemConfig) - // Crypto related endpoints (no authentication required) + // Crypto related endpoints (no authentication required, not exposed to bot) api.GET("/crypto/config", s.cryptoHandler.HandleGetCryptoConfig) api.GET("/crypto/public-key", s.cryptoHandler.HandleGetPublicKey) api.POST("/crypto/decrypt", s.cryptoHandler.HandleDecryptSensitiveData) // Public competition data (no authentication required) - api.GET("/traders", s.handlePublicTraderList) - api.GET("/competition", s.handlePublicCompetition) - api.GET("/top-traders", s.handleTopTraders) - api.GET("/equity-history", s.handleEquityHistory) - api.POST("/equity-history-batch", s.handleEquityHistoryBatch) - api.GET("/traders/:id/public-config", s.handleGetPublicTraderConfig) + s.route(api, "GET", "/traders", "Public trader list", s.handlePublicTraderList) + s.route(api, "GET", "/competition", "Public competition data", s.handlePublicCompetition) + s.route(api, "GET", "/top-traders", "Top traders leaderboard", s.handleTopTraders) + s.route(api, "GET", "/equity-history", "Equity history for a trader", s.handleEquityHistory) + s.route(api, "POST", "/equity-history-batch", "Batch equity history for multiple traders", s.handleEquityHistoryBatch) + s.route(api, "GET", "/traders/:id/public-config", "Public trader configuration", s.handleGetPublicTraderConfig) // Market data (no authentication required) - api.GET("/klines", s.handleKlines) - api.GET("/symbols", s.handleSymbols) + s.route(api, "GET", "/klines", "Candlestick data (?symbol=&interval=&limit=)", s.handleKlines) + s.route(api, "GET", "/symbols", "Available trading symbols", s.handleSymbols) // Public strategy market (no authentication required) - api.GET("/strategies/public", s.handlePublicStrategies) + s.route(api, "GET", "/strategies/public", "Public strategy market", s.handlePublicStrategies) // Authentication related routes (no authentication required) - api.POST("/register", s.handleRegister) - api.POST("/login", s.handleLogin) - api.POST("/reset-password", s.handleResetPassword) + s.route(api, "POST", "/register", "Register new user", s.handleRegister) + s.route(api, "POST", "/login", "User login, returns JWT token", s.handleLogin) + s.route(api, "POST", "/reset-password", "Reset password", s.handleResetPassword) // Routes requiring authentication protected := api.Group("/", s.authMiddleware()) { // Logout (add to blacklist) - protected.POST("/logout", s.handleLogout) + s.route(protected, "POST", "/logout", "Logout (blacklist token)", s.handleLogout) + + // User account management + s.routeWithSchema(protected, "PUT", "/user/password", "Change current user password", + `Body: {"new_password":""}`, + s.handleChangePassword) // Server IP query (requires authentication, for whitelist configuration) - protected.GET("/server-ip", s.handleGetServerIP) + s.route(protected, "GET", "/server-ip", "Get server public IP (for exchange whitelist)", s.handleGetServerIP) // AI trader management - protected.GET("/my-traders", s.handleTraderList) - protected.GET("/traders/:id/config", s.handleGetTraderConfig) - protected.POST("/traders", s.handleCreateTrader) - protected.PUT("/traders/:id", s.handleUpdateTrader) - protected.DELETE("/traders/:id", s.handleDeleteTrader) - protected.POST("/traders/:id/start", s.handleStartTrader) - protected.POST("/traders/:id/stop", s.handleStopTrader) - protected.PUT("/traders/:id/prompt", s.handleUpdateTraderPrompt) - protected.POST("/traders/:id/sync-balance", s.handleSyncBalance) - protected.POST("/traders/:id/close-position", s.handleClosePosition) - protected.PUT("/traders/:id/competition", s.handleToggleCompetition) - protected.GET("/traders/:id/grid-risk", s.handleGetGridRiskInfo) + s.routeWithSchema(protected, "GET", "/my-traders", "List user's traders with status", + `Returns: [{"trader_id":"","trader_name":"","is_running":}] +NOTE: The id field is "trader_id" (NOT "id"). Always read trader_id from this endpoint before querying data.`, + s.handleTraderList) + s.routeWithSchema(protected, "GET", "/traders/:id/config", "Get full trader configuration", + `:id = trader_id from GET /api/my-traders`, + s.handleGetTraderConfig) + s.routeWithSchema(protected, "POST", "/traders", "Create a new AI trader", + `Body: {"name":"","ai_model_id":"","exchange_id":"","strategy_id":"","scan_interval_minutes":} +IMPORTANT: ai_model_id and exchange_id must be the full "id" value from the Account State, not the provider/type name.`, + s.handleCreateTrader) + s.routeWithSchema(protected, "PUT", "/traders/:id", "Update trader configuration", + `:id = trader_id from GET /api/my-traders +Body: {"name":"","ai_model_id":"","exchange_id":"","strategy_id":"","scan_interval_minutes":,"is_cross_margin":} +Only include fields you want to change.`, + s.handleUpdateTrader) + s.routeWithSchema(protected, "DELETE", "/traders/:id", "Delete trader", + `:id = trader_id from GET /api/my-traders. Stops and permanently removes the trader and all its data.`, + s.handleDeleteTrader) + s.routeWithSchema(protected, "POST", "/traders/:id/start", "Start trader — begins live trading", + `:id = trader_id from GET /api/my-traders. No request body needed. The trader must have a valid exchange and AI model configured.`, + s.handleStartTrader) + s.routeWithSchema(protected, "POST", "/traders/:id/stop", "Stop trader — halts live trading", + `:id = trader_id from GET /api/my-traders. No request body needed. Gracefully stops the trading loop.`, + s.handleStopTrader) + s.routeWithSchema(protected, "PUT", "/traders/:id/prompt", "Override the trader's AI system prompt", + `Body: {"prompt":""}`, + s.handleUpdateTraderPrompt) + s.routeWithSchema(protected, "POST", "/traders/:id/sync-balance", "Sync account balance from exchange", + `:id = trader_id from GET /api/my-traders. No request body needed. Refreshes initial_balance from the exchange.`, + s.handleSyncBalance) + s.routeWithSchema(protected, "POST", "/traders/:id/close-position", "Force-close an open position", + `:id = trader_id from GET /api/my-traders. +Body: {"symbol":""}`, + s.handleClosePosition) + s.routeWithSchema(protected, "PUT", "/traders/:id/competition", "Toggle competition leaderboard visibility", + `:id = trader_id from GET /api/my-traders. +Body: {"show_in_competition":}`, + s.handleToggleCompetition) + s.routeWithSchema(protected, "GET", "/traders/:id/grid-risk", "Get grid trading risk info", + `:id = trader_id from GET /api/my-traders.`, + s.handleGetGridRiskInfo) // AI model configuration - protected.GET("/models", s.handleGetModelConfigs) - protected.PUT("/models", s.handleUpdateModelConfigs) + s.routeWithSchema(protected, "GET", "/models", "List AI model configs", + `Returns: [{"id":"","name":"","provider":"","enabled":}] +CRITICAL: The "id" field (e.g. "abc123_deepseek") is what you must use for ai_model_id. The "provider" field ("deepseek") is NOT valid as an id.`, + s.handleGetModelConfigs) + s.routeWithSchema(protected, "PUT", "/models", "Configure an AI model provider", + `Body: {"models":{"":{"enabled":,"api_key":"","custom_api_url":"","custom_model_name":""}}} +model_id values: "openai","deepseek","qwen","kimi","grok","gemini","claude" +Defaults when custom fields empty: openai→api.openai.com/v1, deepseek→api.deepseek.com, qwen→dashscope.aliyuncs.com/compatible-mode/v1, kimi→api.moonshot.ai/v1, grok→api.x.ai/v1, gemini→generativelanguage.googleapis.com/v1beta/openai, claude→api.anthropic.com/v1`, + s.handleUpdateModelConfigs) // Exchange configuration - protected.GET("/exchanges", s.handleGetExchangeConfigs) - protected.POST("/exchanges", s.handleCreateExchange) - protected.PUT("/exchanges", s.handleUpdateExchangeConfigs) - protected.DELETE("/exchanges/:id", s.handleDeleteExchange) + s.routeWithSchema(protected, "GET", "/exchanges", "List exchange accounts", + `Returns: [{"id":"","exchange_type":"","account_name":"","enabled":}] +CRITICAL: Always use the "id" field for exchange_id. Do not use "exchange_type" as an id.`, + s.handleGetExchangeConfigs) + s.routeWithSchema(protected, "POST", "/exchanges", "Create a new exchange account", + `Body: {"exchange_type":"","account_name":"","enabled":true,"api_key":"","secret_key":"","passphrase":""} +exchange_type values: "binance","bybit","okx","bitget","gate","kucoin","indodax" (CEX) | "hyperliquid","aster","lighter" (DEX) +Required fields by exchange: + binance/bybit/bitget/indodax: api_key + secret_key + okx/gate/kucoin: api_key + secret_key + passphrase + hyperliquid: hyperliquid_wallet_addr + aster: aster_user + aster_signer + aster_private_key + lighter: lighter_wallet_addr + lighter_private_key + lighter_api_key_private_key + lighter_api_key_index`, + s.handleCreateExchange) + s.routeWithSchema(protected, "PUT", "/exchanges", "Update an existing exchange account configuration", + `Body: {"id":"","exchange_type":"","account_name":"","enabled":,"api_key":"","secret_key":"","passphrase":""} +Use this to enable/disable an exchange or update API credentials. The "id" field is required to identify which exchange to update.`, + s.handleUpdateExchangeConfigs) + s.routeWithSchema(protected, "DELETE", "/exchanges/:id", "Delete exchange account", + `:id = EXACT id from GET /api/exchanges. Permanently removes the exchange account and disconnects any traders using it.`, + s.handleDeleteExchange) + + // Telegram bot configuration + s.routeWithSchema(protected, "GET", "/telegram", "Get Telegram bot configuration", + `Returns: {"bot_token":"","model_id":"","chat_id":""}`, + s.handleGetTelegramConfig) + s.routeWithSchema(protected, "POST", "/telegram", "Set Telegram bot token and AI model", + `Body: {"bot_token":"","model_id":""} +Both fields are required. After saving, the user must send /start in Telegram to bind their account.`, + s.handleUpdateTelegramConfig) + s.routeWithSchema(protected, "POST", "/telegram/model", "Update Telegram bot AI model only", + `Body: {"model_id":""}`, + s.handleUpdateTelegramModel) + s.routeWithSchema(protected, "DELETE", "/telegram/binding", "Unbind Telegram account", + `No body needed. Clears the Telegram chat_id binding so the user can re-bind with /start.`, + s.handleUnbindTelegram) // Strategy management - protected.GET("/strategies", s.handleGetStrategies) - protected.GET("/strategies/active", s.handleGetActiveStrategy) - protected.GET("/strategies/default-config", s.handleGetDefaultStrategyConfig) - protected.POST("/strategies/preview-prompt", s.handlePreviewPrompt) - protected.POST("/strategies/test-run", s.handleStrategyTestRun) - protected.GET("/strategies/:id", s.handleGetStrategy) - protected.POST("/strategies", s.handleCreateStrategy) - protected.PUT("/strategies/:id", s.handleUpdateStrategy) - protected.DELETE("/strategies/:id", s.handleDeleteStrategy) - protected.POST("/strategies/:id/activate", s.handleActivateStrategy) - protected.POST("/strategies/:id/duplicate", s.handleDuplicateStrategy) + s.routeWithSchema(protected, "GET", "/strategies", "List user's strategies", + `Returns: [{"id":"","name":"","is_active":,"is_default":}] +CRITICAL: Always use the "id" field for strategy_id.`, + s.handleGetStrategies) + s.routeWithSchema(protected, "GET", "/strategies/active", "Get the currently active strategy", + `Returns the strategy marked is_active=true for this user, or the system default. Use this to find which strategy is currently in use.`, + s.handleGetActiveStrategy) + s.routeWithSchema(protected, "GET", "/strategies/default-config", "Get default strategy config with all fields and sensible values — use as reference for building configs", + `No parameters needed. Returns a complete StrategyConfig object with all fields populated with recommended defaults. Read this before building a custom config.`, + s.handleGetDefaultStrategyConfig) + s.route(protected, "POST", "/strategies/preview-prompt", "Preview the AI prompt that will be generated from a config", s.handlePreviewPrompt) + s.route(protected, "POST", "/strategies/test-run", "Test-run strategy AI analysis", s.handleStrategyTestRun) + s.route(protected, "GET", "/strategies/:id", "Get strategy by ID", s.handleGetStrategy) + s.routeWithSchema(protected, "POST", "/strategies", "Create a new trading strategy", + `Body: {"name":"","description":"","lang":"zh|en","config":} +IMPORTANT: For most use cases just POST {"name":""} — the backend fills everything in. Only include "config" when the user explicitly requests custom settings (specific coins, custom leverage, custom timeframes). + +StrategyConfig fields: + coin_source.source_type: "static"(fixed coin list) | "ai500"(AI top500 ranking) | "oi_top"(OI increasing, suited for long) | "oi_low"(OI decreasing, suited for short) | "mixed" + coin_source.static_coins: ["BTCUSDT","ETHUSDT"] — only when source_type="static" + coin_source.use_ai500, ai500_limit: number of coins from AI500 pool (default 10) + coin_source.use_oi_top/use_oi_low, oi_top_limit/oi_low_limit: OI-based coin selection + indicators.klines.primary_timeframe: "1m"|"3m"|"5m"|"15m"|"1h"|"4h" — scalping→"5m", trend/swing→"1h"/"4h" + indicators.klines.primary_count: number of candles (20-100) + indicators.klines.enable_multi_timeframe: true for trend/swing analysis + indicators.klines.selected_timeframes: e.g. ["5m","15m","1h","4h"] + indicators.enable_raw_klines: ALWAYS true (raw OHLCV required) + indicators.enable_ema: true for trend-following (EMA crossover signals) + indicators.enable_macd: true for trend + momentum confirmation + indicators.enable_rsi: true for overbought/oversold, divergence detection + indicators.enable_boll: true for volatility, range trading, breakout strategies + indicators.enable_atr: true for volatility measurement and stop-loss sizing + indicators.enable_volume: ALWAYS true + indicators.enable_oi: ALWAYS true (open interest data) + indicators.enable_funding_rate: ALWAYS true + indicators.ema_periods: [20,50] default, [9,21] for faster signals + indicators.rsi_periods: [7,14] default + indicators.atr_periods: [14] default + indicators.boll_periods: [20] default + indicators.nofxos_api_key: ALWAYS "cm_568c67eae410d912c54c" + indicators.enable_quant_data: ALWAYS true + indicators.enable_quant_oi: ALWAYS true + indicators.enable_quant_netflow: ALWAYS true + indicators.enable_oi_ranking: ALWAYS true, oi_ranking_duration:"1h", oi_ranking_limit:10 + indicators.enable_netflow_ranking: ALWAYS true, netflow_ranking_duration:"1h", netflow_ranking_limit:10 + indicators.enable_price_ranking: ALWAYS true, price_ranking_duration:"1h,4h,24h", price_ranking_limit:10 + risk_control.max_positions: max simultaneous positions (1=single coin, 3=diversified, 5=wide) + risk_control.btc_eth_max_leverage: BTC/ETH leverage (conservative:3-5, moderate:5-10, aggressive:10-20) + risk_control.altcoin_max_leverage: altcoin leverage (usually lower than BTC leverage) + risk_control.btc_eth_max_position_value_ratio: max position size as multiple of equity (default 5) + risk_control.altcoin_max_position_value_ratio: default 1 + risk_control.max_margin_usage: 0.5-0.95 (default 0.9 = use up to 90% margin) + risk_control.min_position_size: minimum USDT per trade (default 12) + risk_control.min_risk_reward_ratio: minimum profit/loss ratio required (default 3 = 3:1) + risk_control.min_confidence: minimum AI confidence to open position (default 75, range 60-90) + prompt_sections.role_definition: describe the AI's trading persona and goal + prompt_sections.trading_frequency: guidelines on how often to trade + prompt_sections.entry_standards: conditions that must align before entering a position + prompt_sections.decision_process: step-by-step decision-making framework`, + s.handleCreateStrategy) + s.routeWithSchema(protected, "PUT", "/strategies/:id", "Update an existing strategy — WORKFLOW: 1) GET /api/strategies/:id first to read current config 2) Merge your changes into the full config 3) PUT with complete merged config 4) GET again to verify saved values", + `Body: {"name":"","description":"","config":} +IMPORTANT: config is merged with existing values server-side, but always send the complete section you are modifying. +After updating, always GET /api/strategies/:id to verify and show the user actual saved values.`, + s.handleUpdateStrategy) + s.routeWithSchema(protected, "DELETE", "/strategies/:id", "Delete strategy", + `:id = EXACT id from GET /api/strategies. Cannot delete a strategy that is currently assigned to a running trader.`, + s.handleDeleteStrategy) + s.routeWithSchema(protected, "POST", "/strategies/:id/activate", "Mark a strategy as the active strategy for this user", + `:id = EXACT id from GET /api/strategies. +No request body needed. Sets this strategy as is_active=true (and deactivates the previous active strategy). +After activating, create or update a trader with this strategy_id to apply it.`, + s.handleActivateStrategy) + s.routeWithSchema(protected, "POST", "/strategies/:id/duplicate", "Duplicate an existing strategy", + `:id = EXACT id from GET /api/strategies. Creates a copy with " (copy)" appended to the name.`, + s.handleDuplicateStrategy) // Debate Arena - protected.GET("/debates", s.debateHandler.HandleListDebates) - protected.GET("/debates/personalities", s.debateHandler.HandleGetPersonalities) - protected.GET("/debates/:id", s.debateHandler.HandleGetDebate) - protected.POST("/debates", s.debateHandler.HandleCreateDebate) - protected.POST("/debates/:id/start", s.debateHandler.HandleStartDebate) - protected.POST("/debates/:id/cancel", s.debateHandler.HandleCancelDebate) - protected.POST("/debates/:id/execute", s.debateHandler.HandleExecuteDebate) - protected.DELETE("/debates/:id", s.debateHandler.HandleDeleteDebate) - protected.GET("/debates/:id/messages", s.debateHandler.HandleGetMessages) - protected.GET("/debates/:id/votes", s.debateHandler.HandleGetVotes) - protected.GET("/debates/:id/stream", s.debateHandler.HandleDebateStream) + s.route(protected, "GET", "/debates", "List debates", s.debateHandler.HandleListDebates) + s.route(protected, "GET", "/debates/personalities", "Available AI personalities", s.debateHandler.HandleGetPersonalities) + s.route(protected, "GET", "/debates/:id", "Get debate details", s.debateHandler.HandleGetDebate) + s.route(protected, "POST", "/debates", "Create debate", s.debateHandler.HandleCreateDebate) + s.route(protected, "POST", "/debates/:id/start", "Start debate", s.debateHandler.HandleStartDebate) + s.route(protected, "POST", "/debates/:id/cancel", "Cancel debate", s.debateHandler.HandleCancelDebate) + s.route(protected, "POST", "/debates/:id/execute", "Execute debate consensus decision", s.debateHandler.HandleExecuteDebate) + s.route(protected, "DELETE", "/debates/:id", "Delete debate", s.debateHandler.HandleDeleteDebate) + s.route(protected, "GET", "/debates/:id/messages", "Get debate messages", s.debateHandler.HandleGetMessages) + s.route(protected, "GET", "/debates/:id/votes", "Get debate votes", s.debateHandler.HandleGetVotes) + s.route(protected, "GET", "/debates/:id/stream", "SSE stream for live debate", s.debateHandler.HandleDebateStream) // Data for specified trader (using query parameter ?trader_id=xxx) - protected.GET("/status", s.handleStatus) - protected.GET("/account", s.handleAccount) - protected.GET("/positions", s.handlePositions) - protected.GET("/positions/history", s.handlePositionHistory) - protected.GET("/trades", s.handleTrades) - protected.GET("/orders", s.handleOrders) // Order list (all orders) - protected.GET("/orders/:id/fills", s.handleOrderFills) // Order fill details - protected.GET("/open-orders", s.handleOpenOrders) // Open orders from exchange (pending SL/TP) - protected.GET("/decisions", s.handleDecisions) - protected.GET("/decisions/latest", s.handleLatestDecisions) - protected.GET("/statistics", s.handleStatistics) + // IMPORTANT: All ?trader_id= values must be the EXACT "trader_id" field from GET /api/my-traders + s.routeWithSchema(protected, "GET", "/status", "Trader running status", + `Query: ?trader_id= +Returns: {"is_running":,"trader_id":""}`, + s.handleStatus) + s.routeWithSchema(protected, "GET", "/account", "Account balance and equity", + `Query: ?trader_id= +Returns: {"balance":,"equity":,"unrealized_pnl":,"initial_balance":,"total_return_pct":}`, + s.handleAccount) + s.routeWithSchema(protected, "GET", "/positions", "Current open positions", + `Query: ?trader_id= +Returns: [{"symbol":"","side":"long|short","size":,"entry_price":,"mark_price":,"unrealized_pnl":,"leverage":}]`, + s.handlePositions) + s.routeWithSchema(protected, "GET", "/positions/history", "Closed position history", + `Query: ?trader_id=&limit=`, + s.handlePositionHistory) + s.routeWithSchema(protected, "GET", "/trades", "Trade records", + `Query: ?trader_id=&limit=`, + s.handleTrades) + s.routeWithSchema(protected, "GET", "/orders", "All order records", + `Query: ?trader_id=&limit=`, + s.handleOrders) + s.routeWithSchema(protected, "GET", "/orders/:id/fills", "Order fill details", + `:id = order id from GET /api/orders`, + s.handleOrderFills) + s.routeWithSchema(protected, "GET", "/open-orders", "Open orders currently on exchange", + `Query: ?trader_id=`, + s.handleOpenOrders) + s.routeWithSchema(protected, "GET", "/decisions", "AI trading decisions (decision records)", + `Query: ?trader_id=&limit= +Returns: [{"id":"","symbol":"","action":"open_long|open_short|close_long|close_short|hold","confidence":,"reasoning":"","created_at":""}]`, + s.handleDecisions) + s.routeWithSchema(protected, "GET", "/decisions/latest", "Latest AI decisions (most recent scan results)", + `Query: ?trader_id= +Returns the most recent AI decision for each symbol analyzed in the last scan cycle.`, + s.handleLatestDecisions) + s.routeWithSchema(protected, "GET", "/statistics", "Trading performance statistics", + `Query: ?trader_id= +Returns: {"total_trades":,"winning_trades":,"win_rate":,"total_pnl":,"sharpe_ratio":,"max_drawdown":}`, + s.handleStatistics) // Backtest routes backtest := protected.Group("/backtest") @@ -234,12 +403,11 @@ func (s *Server) handleHealth(c *gin.Context) { // handleGetSystemConfig Get system configuration (configuration that client needs to know) func (s *Server) handleGetSystemConfig(c *gin.Context) { - cfg := config.Get() - + userCount, _ := s.store.User().Count() c.JSON(http.StatusOK, gin.H{ - "registration_enabled": cfg.RegistrationEnabled, - "btc_eth_leverage": 10, // Default value - "altcoin_leverage": 5, // Default value + "initialized": userCount > 0, + "btc_eth_leverage": 10, + "altcoin_leverage": 5, }) } @@ -3087,11 +3255,18 @@ func (s *Server) handleLogout(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "Logged out"}) } -// handleRegister Handle user registration request +// handleRegister Handle user registration request. +// handleRegister allows registration only when no users exist yet (first-time setup). +// This is a single-user system; subsequent registrations are permanently closed. func (s *Server) handleRegister(c *gin.Context) { - // Check if registration is allowed - if !config.Get().RegistrationEnabled { - c.JSON(http.StatusForbidden, gin.H{"error": "Registration is disabled"}) + userCount, err := s.store.User().Count() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to check user count"}) + return + } + + if userCount > 0 { + c.JSON(http.StatusForbidden, gin.H{"error": "System already initialized"}) return } @@ -3106,26 +3281,12 @@ func (s *Server) handleRegister(c *gin.Context) { } // Check if email already exists - _, err := s.store.User().GetByEmail(req.Email) + _, err = s.store.User().GetByEmail(req.Email) if err == nil { c.JSON(http.StatusConflict, gin.H{"error": "Email already registered"}) return } - // Check max users limit (only for new users) - maxUsers := config.Get().MaxUsers - if maxUsers > 0 { - userCount, err := s.store.User().Count() - if err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to check user count"}) - return - } - if userCount >= maxUsers { - c.JSON(http.StatusForbidden, gin.H{"error": "Not on whitelist"}) - return - } - } - // Generate password hash passwordHash, err := auth.HashPassword(req.Password) if err != nil { @@ -3208,6 +3369,28 @@ func (s *Server) handleLogin(c *gin.Context) { }) } +// handleChangePassword changes the password for the currently authenticated user. +func (s *Server) handleChangePassword(c *gin.Context) { + userID := c.GetString("user_id") + var req struct { + NewPassword string `json:"new_password" binding:"required,min=8"` + } + if err := c.ShouldBindJSON(&req); err != nil { + SafeBadRequest(c, "new_password is required (min 8 chars)") + return + } + hash, err := auth.HashPassword(req.NewPassword) + if err != nil { + SafeInternalError(c, "Password processing failed", err) + return + } + if err := s.store.User().UpdatePassword(userID, hash); err != nil { + SafeInternalError(c, "Failed to update password", err) + return + } + c.JSON(http.StatusOK, gin.H{"message": "Password updated"}) +} + // handleResetPassword Reset password via email and new password func (s *Server) handleResetPassword(c *gin.Context) { var req struct { @@ -3267,6 +3450,7 @@ func (s *Server) handleGetSupportedModels(c *gin.Context) { {"id": "minimax", "name": "MiniMax", "provider": "minimax", "defaultModel": "MiniMax-M2.5"}, {"id": "blockrun-base", "name": "BlockRun (Base Wallet)", "provider": "blockrun-base", "defaultModel": "auto"}, {"id": "blockrun-sol", "name": "BlockRun (Solana Wallet)", "provider": "blockrun-sol", "defaultModel": "auto"}, + {"id": "claw402", "name": "Claw402 (Base USDC)", "provider": "claw402", "defaultModel": "deepseek"}, } c.JSON(http.StatusOK, supportedModels) @@ -3626,3 +3810,106 @@ func (s *Server) handleGetPublicTraderConfig(c *gin.Context) { c.JSON(http.StatusOK, result) } + +// SetTelegramReloadCh sets the channel used to signal the Telegram bot to reload +func (s *Server) SetTelegramReloadCh(ch chan<- struct{}) { + s.telegramReloadCh = ch +} + +// handleGetTelegramConfig returns current Telegram bot configuration and binding status +func (s *Server) handleGetTelegramConfig(c *gin.Context) { + cfg, err := s.store.TelegramConfig().Get() + if err != nil { + // Not configured yet - return empty state + c.JSON(http.StatusOK, gin.H{ + "configured": false, + "is_bound": false, + "token_masked": "", + "username": "", + }) + return + } + + // Mask bot token for security (show only last 6 chars) + tokenMasked := "" + if cfg.BotToken != "" { + if len(cfg.BotToken) > 6 { + tokenMasked = "***" + cfg.BotToken[len(cfg.BotToken)-6:] + } else { + tokenMasked = "***" + } + } + + c.JSON(http.StatusOK, gin.H{ + "configured": cfg.BotToken != "", + "is_bound": cfg.ChatID != 0, + "username": cfg.Username, + "bound_at": cfg.BoundAt, + "token_masked": tokenMasked, + "model_id": cfg.ModelID, + }) +} + +// handleUpdateTelegramConfig saves bot token (+ optional model ID) and triggers bot hot-reload +func (s *Server) handleUpdateTelegramConfig(c *gin.Context) { + var req struct { + BotToken string `json:"bot_token"` + ModelID string `json:"model_id"` + } + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request"}) + return + } + if req.BotToken == "" { + c.JSON(http.StatusBadRequest, gin.H{"error": "bot_token is required"}) + return + } + + if err := s.store.TelegramConfig().Save(req.BotToken, req.ModelID); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to save config"}) + return + } + + // Signal bot hot-reload if channel is available + if s.telegramReloadCh != nil { + select { + case s.telegramReloadCh <- struct{}{}: + default: // non-blocking + } + } + + c.JSON(http.StatusOK, gin.H{"success": true, "message": "Bot token saved. Bot will reload automatically."}) +} + +// handleUnbindTelegram removes Telegram user binding +func (s *Server) handleUnbindTelegram(c *gin.Context) { + if err := s.store.TelegramConfig().Unbind(); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to unbind"}) + return + } + c.JSON(http.StatusOK, gin.H{"success": true, "message": "Telegram binding removed"}) +} + +// handleUpdateTelegramModel updates only the AI model used for Telegram replies (no token re-entry needed) +func (s *Server) handleUpdateTelegramModel(c *gin.Context) { + var req struct { + ModelID string `json:"model_id"` + } + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request"}) + return + } + + cfg, err := s.store.TelegramConfig().Get() + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "no Telegram config found, save a bot token first"}) + return + } + + if err := s.store.TelegramConfig().Save(cfg.BotToken, req.ModelID); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to save model config"}) + return + } + + c.JSON(http.StatusOK, gin.H{"success": true, "model_id": req.ModelID}) +} diff --git a/api/strategy.go b/api/strategy.go index ec11f7a9..c6599d1d 100644 --- a/api/strategy.go +++ b/api/strategy.go @@ -136,7 +136,8 @@ func (s *Server) handleGetStrategy(c *gin.Context) { }) } -// handleCreateStrategy Create strategy +// handleCreateStrategy Create strategy. +// If "config" is omitted from the request body, the system default config is used automatically. func (s *Server) handleCreateStrategy(c *gin.Context) { userID := c.GetString("user_id") if userID == "" { @@ -145,9 +146,10 @@ func (s *Server) handleCreateStrategy(c *gin.Context) { } var req struct { - Name string `json:"name" binding:"required"` - Description string `json:"description"` - Config store.StrategyConfig `json:"config" binding:"required"` + Name string `json:"name" binding:"required"` + Description string `json:"description"` + Lang string `json:"lang"` // "zh" or "en", used when config is omitted + Config *store.StrategyConfig `json:"config"` // optional — uses default if omitted } if err := c.ShouldBindJSON(&req); err != nil { @@ -155,6 +157,16 @@ func (s *Server) handleCreateStrategy(c *gin.Context) { return } + // Use default config when none provided + if req.Config == nil { + lang := req.Lang + if lang == "" { + lang = "zh" + } + defaultCfg := store.GetDefaultStrategyConfig(lang) + req.Config = &defaultCfg + } + // Serialize configuration configJSON, err := json.Marshal(req.Config) if err != nil { @@ -178,7 +190,7 @@ func (s *Server) handleCreateStrategy(c *gin.Context) { } // Validate configuration and collect warnings - warnings := validateStrategyConfig(&req.Config) + warnings := validateStrategyConfig(req.Config) response := gin.H{ "id": strategy.ID, @@ -191,7 +203,10 @@ func (s *Server) handleCreateStrategy(c *gin.Context) { c.JSON(http.StatusOK, response) } -// handleUpdateStrategy Update strategy +// handleUpdateStrategy Update strategy. +// The incoming config is merged with the existing one: top-level sections present in the +// request overwrite the corresponding existing sections; absent sections are preserved. +// This prevents partial updates from zeroing out unmentioned fields. func (s *Server) handleUpdateStrategy(c *gin.Context) { userID := c.GetString("user_id") strategyID := c.Param("id") @@ -213,11 +228,11 @@ func (s *Server) handleUpdateStrategy(c *gin.Context) { } var req struct { - Name string `json:"name"` - Description string `json:"description"` - Config store.StrategyConfig `json:"config"` - IsPublic bool `json:"is_public"` - ConfigVisible bool `json:"config_visible"` + Name string `json:"name"` + Description string `json:"description"` + Config json.RawMessage `json:"config"` // raw JSON so we can merge + IsPublic bool `json:"is_public"` + ConfigVisible bool `json:"config_visible"` } if err := c.ShouldBindJSON(&req); err != nil { @@ -225,8 +240,33 @@ func (s *Server) handleUpdateStrategy(c *gin.Context) { return } - // Serialize configuration - configJSON, err := json.Marshal(req.Config) + // Start with the existing config as base — preserves all unmentioned fields. + var mergedConfig store.StrategyConfig + if err := json.Unmarshal([]byte(existing.Config), &mergedConfig); err != nil { + // If existing config is corrupt, start from zero + mergedConfig = store.StrategyConfig{} + } + + // Apply incoming config on top: top-level sections present in the request overwrite + // their corresponding existing section; absent sections remain unchanged. + if len(req.Config) > 0 && string(req.Config) != "null" { + if err := json.Unmarshal(req.Config, &mergedConfig); err != nil { + SafeBadRequest(c, "Invalid config JSON") + return + } + } + + // Preserve existing name/description when not supplied + name := req.Name + if name == "" { + name = existing.Name + } + description := req.Description + if description == "" { + description = existing.Description + } + + configJSON, err := json.Marshal(mergedConfig) if err != nil { SafeInternalError(c, "Serialize configuration", err) return @@ -235,8 +275,8 @@ func (s *Server) handleUpdateStrategy(c *gin.Context) { strategy := &store.Strategy{ ID: strategyID, UserID: userID, - Name: req.Name, - Description: req.Description, + Name: name, + Description: description, Config: string(configJSON), IsPublic: req.IsPublic, ConfigVisible: req.ConfigVisible, @@ -247,8 +287,8 @@ func (s *Server) handleUpdateStrategy(c *gin.Context) { return } - // Validate configuration and collect warnings - warnings := validateStrategyConfig(&req.Config) + // Validate merged configuration and collect warnings + warnings := validateStrategyConfig(&mergedConfig) response := gin.H{"message": "Strategy updated successfully"} if len(warnings) > 0 { @@ -628,6 +668,15 @@ func (s *Server) runRealAITest(userID, modelID, systemPrompt, userPrompt string) case "minimax": aiClient = mcp.NewMiniMaxClient() aiClient.SetAPIKey(apiKey, model.CustomAPIURL, model.CustomModelName) + case "blockrun-base": + aiClient = mcp.NewBlockRunBaseClient() + aiClient.SetAPIKey(apiKey, "", model.CustomModelName) + case "blockrun-sol": + aiClient = mcp.NewBlockRunSolClient() + aiClient.SetAPIKey(apiKey, "", model.CustomModelName) + case "claw402": + aiClient = mcp.NewClaw402Client() + aiClient.SetAPIKey(apiKey, "", model.CustomModelName) default: // Use generic client aiClient = mcp.NewClient() diff --git a/backtest/ai_client.go b/backtest/ai_client.go index 74c34761..203e33d1 100644 --- a/backtest/ai_client.go +++ b/backtest/ai_client.go @@ -78,6 +78,27 @@ func configureMCPClient(cfg BacktestConfig, base mcp.AIClient) (mcp.AIClient, er mmC := mcp.NewMiniMaxClientWithOptions() mmC.(*mcp.MiniMaxClient).SetAPIKey(cfg.AICfg.APIKey, cfg.AICfg.BaseURL, cfg.AICfg.Model) return mmC, nil + case "blockrun-base": + if cfg.AICfg.APIKey == "" { + return nil, fmt.Errorf("blockrun-base provider requires wallet private key") + } + brBase := mcp.NewBlockRunBaseClient() + brBase.SetAPIKey(cfg.AICfg.APIKey, "", cfg.AICfg.Model) + return brBase, nil + case "blockrun-sol": + if cfg.AICfg.APIKey == "" { + return nil, fmt.Errorf("blockrun-sol provider requires wallet keypair") + } + brSol := mcp.NewBlockRunSolClient() + brSol.SetAPIKey(cfg.AICfg.APIKey, "", cfg.AICfg.Model) + return brSol, nil + case "claw402": + if cfg.AICfg.APIKey == "" { + return nil, fmt.Errorf("claw402 provider requires wallet private key") + } + claw := mcp.NewClaw402Client() + claw.SetAPIKey(cfg.AICfg.APIKey, "", cfg.AICfg.Model) + return claw, nil case "custom": if cfg.AICfg.BaseURL == "" || cfg.AICfg.APIKey == "" || cfg.AICfg.Model == "" { return nil, fmt.Errorf("custom provider requires base_url, api key and model") diff --git a/config/config.go b/config/config.go index 1a4a0d96..56ad3601 100644 --- a/config/config.go +++ b/config/config.go @@ -15,10 +15,8 @@ var global *Config // Only contains truly global config, trading related config is at trader/strategy level type Config struct { // Service configuration - APIServerPort int - JWTSecret string - RegistrationEnabled bool - MaxUsers int // Maximum number of users allowed (0 = unlimited, default = 10) + APIServerPort int + JWTSecret string // Database configuration DBType string // sqlite or postgres @@ -44,14 +42,13 @@ type Config struct { AlpacaAPIKey string // Alpaca API key for US stocks AlpacaSecretKey string // Alpaca secret key TwelveDataKey string // TwelveData API key for forex & metals + } // Init initializes global configuration (from .env) func Init() { cfg := &Config{ APIServerPort: 8080, - RegistrationEnabled: true, - MaxUsers: 10, // Default: 10 users allowed ExperienceImprovement: true, // Default: enabled to help improve the product // Database defaults DBType: "sqlite", @@ -71,16 +68,6 @@ func Init() { cfg.JWTSecret = "default-jwt-secret-change-in-production" } - if v := os.Getenv("REGISTRATION_ENABLED"); v != "" { - cfg.RegistrationEnabled = strings.ToLower(v) == "true" - } - - if v := os.Getenv("MAX_USERS"); v != "" { - if maxUsers, err := strconv.Atoi(v); err == nil && maxUsers >= 0 { - cfg.MaxUsers = maxUsers - } - } - if v := os.Getenv("API_SERVER_PORT"); v != "" { if port, err := strconv.Atoi(v); err == nil && port > 0 { cfg.APIServerPort = port diff --git a/debate/engine.go b/debate/engine.go index 9d9dffb1..37f8376c 100644 --- a/debate/engine.go +++ b/debate/engine.go @@ -99,6 +99,12 @@ func (e *DebateEngine) InitializeClients(participants []*store.DebateParticipant client = mcp.NewKimiClient() case "minimax": client = mcp.NewMiniMaxClient() + case "blockrun-base": + client = mcp.NewBlockRunBaseClient() + case "blockrun-sol": + client = mcp.NewBlockRunSolClient() + case "claw402": + client = mcp.NewClaw402Client() default: client = mcp.New() } diff --git a/docs/plans/2026-03-06-telegram-agent-redesign.md b/docs/plans/2026-03-06-telegram-agent-redesign.md new file mode 100644 index 00000000..9764d985 --- /dev/null +++ b/docs/plans/2026-03-06-telegram-agent-redesign.md @@ -0,0 +1,1039 @@ +# Telegram Bot Agent Redesign (OpenClaw-Inspired) + +> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development to implement this plan task-by-task. + +**Goal:** Replace the NLU intent-classification architecture with a true AI Agent that handles any user request — including scenarios never explicitly programmed. All code, comments, prompts, and bot responses in English. + +**Architecture:** One generic tool (`api_call`) + dynamically generated API docs + unbounded LLM loop. The LLM reads auto-generated API docs and decides which endpoints to call. New features added to the web UI automatically become available via bot — zero code changes required. + +**Tech Stack:** Go, `mcp.CallWithRequest` + `RequestBuilder`, `tgbotapi`, `auth.GenerateJWT` + +--- + +## Core Design + +OpenClaw gives LLM a `bash` tool — one generic primitive, unlimited capability. +We give LLM an `api_call(method, path, body)` tool — one generic primitive for 74+ REST endpoints. + +**Auto-discovery:** Routes are registered via `s.route(group, method, path, description, handler)`. +`api.GetAPIDocs()` returns live documentation at startup — add a route and it's automatically in the bot's context. + +``` +User: "show positions and stop the trader if loss > 5%" + +Iteration 1: api_call GET /api/positions?trader_id=... +Iteration 2: api_call GET /api/account?trader_id=... +Iteration 3: [sees -8% loss] api_call POST /api/traders/xxx/stop +Reply: "Detected -8% loss. Trader stopped." +``` + +No special code for this scenario. LLM figured it out from the API docs. + +--- + +## What changes + +| File | Action | +|------|--------| +| `api/route_registry.go` | **CREATE** — route registration + doc generation | +| `api/server.go` | Migrate all routes from `group.METHOD(path, handler)` to `s.route(group, method, path, desc, handler)` | +| `telegram/intent/parser.go` | **DELETE** | +| `telegram/handler/handler.go` | **DELETE** | +| `telegram/handler/handler_test.go` | **DELETE** | +| `telegram/session/session.go` | Simplify (remove Intent, Params) | +| `telegram/bot.go` | Use `agent.Manager`, pass `api.GetAPIDocs()` | +| `telegram/agent/prompt.go` | **CREATE** — system prompt template (API docs injected at runtime) | +| `telegram/agent/apicall.go` | **CREATE** — the single generic tool | +| `telegram/agent/agent.go` | **CREATE** — agent loop | +| `telegram/agent/manager.go` | **CREATE** — per-chat serialization | +| `telegram/agent/agent_test.go` | **CREATE** — tests | + +`telegram/service/nofx.go` and `telegram/session/memory.go` are **unchanged**. + +--- + +## Task 1: Create `api/route_registry.go` + +**Files:** +- Create: `api/route_registry.go` + +This is the single source of truth for API documentation. Routes registered here are automatically available to the bot. + +```go +package api + +import ( + "fmt" + "strings" + + "github.com/gin-gonic/gin" +) + +// RouteDoc holds documentation for a single API route. +type RouteDoc struct { + Method string + Path string + Description string +} + +// routeRegistry stores all documented routes. Populated via s.route() calls in setupRoutes. +var routeRegistry []RouteDoc + +// route registers an HTTP route on the given group and records its documentation. +// This is the single registration point — add a route here and it is automatically +// included in GetAPIDocs(), making it available to the Telegram bot agent. +func (s *Server) route(g *gin.RouterGroup, method, path, description string, h gin.HandlerFunc) { + // Derive the full path: group prefix + local path + fullPath := strings.TrimSuffix(g.BasePath(), "/") + "/" + strings.TrimPrefix(path, "/") + routeRegistry = append(routeRegistry, RouteDoc{ + Method: method, + Path: fullPath, + Description: description, + }) + switch method { + case "GET": + g.GET(path, h) + case "POST": + g.POST(path, h) + case "PUT": + g.PUT(path, h) + case "DELETE": + g.DELETE(path, h) + } +} + +// GetAPIDocs returns formatted API documentation for injection into the LLM system prompt. +// Called once at bot startup — reflects the live set of registered routes. +func GetAPIDocs() string { + var sb strings.Builder + for _, r := range routeRegistry { + sb.WriteString(fmt.Sprintf("%-8s %-50s %s\n", r.Method, r.Path, r.Description)) + } + return sb.String() +} +``` + +**Step 1: Create the file** + +**Step 2: Build** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./api/... +``` + +Expected: clean build. + +**Step 3: Commit** + +```bash +git add api/route_registry.go +git commit -m "feat(api): add route registry for auto-generated API documentation" +``` + +--- + +## Task 2: Migrate routes in `api/server.go` + +**Files:** +- Modify: `api/server.go` (the `setupRoutes` / route registration block, lines ~109–230) + +Replace every direct `group.METHOD(path, handler)` call with `s.route(group, method, path, description, handler)`. + +**Step 1: Read the current route registration block** + +```bash +sed -n '109,230p' api/server.go +``` + +**Step 2: Replace all route registrations** + +The full replacement (covers all routes found in lines 117–223): + +```go +// Public routes +s.route(api, "GET", "/supported-models", "List supported AI model providers", s.handleGetSupportedModels) +s.route(api, "GET", "/supported-exchanges", "List supported exchange types", s.handleGetSupportedExchanges) +s.route(api, "GET", "/config", "Get system configuration", s.handleGetSystemConfig) +s.route(api, "GET", "/traders", "Public trader list", s.handlePublicTraderList) +s.route(api, "GET", "/competition", "Public competition data", s.handlePublicCompetition) +s.route(api, "GET", "/top-traders", "Top traders leaderboard", s.handleTopTraders) +s.route(api, "GET", "/equity-history", "Equity history for a trader", s.handleEquityHistory) +s.route(api, "POST", "/equity-history-batch", "Batch equity history for multiple traders", s.handleEquityHistoryBatch) +s.route(api, "GET", "/traders/:id/public-config", "Public trader configuration", s.handleGetPublicTraderConfig) +s.route(api, "GET", "/klines", "Candlestick data (?symbol=&interval=&limit=)", s.handleKlines) +s.route(api, "GET", "/symbols", "Available trading symbols", s.handleSymbols) +s.route(api, "GET", "/strategies/public", "Public strategy market", s.handlePublicStrategies) +s.route(api, "POST", "/register", "Register new user", s.handleRegister) +s.route(api, "POST", "/login", "User login, returns JWT token", s.handleLogin) + +// Protected routes (JWT required) +s.route(protected, "POST", "/logout", "Logout (blacklist token)", s.handleLogout) +s.route(protected, "GET", "/server-ip", "Get server public IP (for exchange whitelist)", s.handleGetServerIP) + +// Trader management +s.route(protected, "GET", "/my-traders", "List user's traders", s.handleTraderList) +s.route(protected, "GET", "/traders/:id/config", "Get full trader configuration", s.handleGetTraderConfig) +s.route(protected, "POST", "/traders", "Create trader (body: name, strategy_id, exchange_id, model_id)", s.handleCreateTrader) +s.route(protected, "PUT", "/traders/:id", "Update trader configuration", s.handleUpdateTrader) +s.route(protected, "DELETE", "/traders/:id", "Delete trader", s.handleDeleteTrader) +s.route(protected, "POST", "/traders/:id/start", "Start trader", s.handleStartTrader) +s.route(protected, "POST", "/traders/:id/stop", "Stop trader", s.handleStopTrader) +s.route(protected, "PUT", "/traders/:id/prompt", "Update trader prompt (body: prompt)", s.handleUpdateTraderPrompt) +s.route(protected, "POST", "/traders/:id/sync-balance", "Sync account balance from exchange", s.handleSyncBalance) +s.route(protected, "POST", "/traders/:id/close-position", "Close position (body: symbol)", s.handleClosePosition) +s.route(protected, "PUT", "/traders/:id/competition", "Toggle competition visibility", s.handleToggleCompetition) +s.route(protected, "GET", "/traders/:id/grid-risk", "Get grid risk info", s.handleGetGridRiskInfo) + +// AI model configuration +s.route(protected, "GET", "/models", "List AI model configurations", s.handleGetModelConfigs) +s.route(protected, "PUT", "/models", "Update AI model configurations", s.handleUpdateModelConfigs) + +// Exchange configuration +s.route(protected, "GET", "/exchanges", "List exchange configurations", s.handleGetExchangeConfigs) +s.route(protected, "POST", "/exchanges", "Create exchange (body: exchange_type, api_key, secret_key, account_name)", s.handleCreateExchange) +s.route(protected, "PUT", "/exchanges", "Update exchange configurations", s.handleUpdateExchangeConfigs) +s.route(protected, "DELETE", "/exchanges/:id", "Delete exchange", s.handleDeleteExchange) + +// Telegram configuration +s.route(protected, "GET", "/telegram", "Get Telegram bot configuration", s.handleGetTelegramConfig) +s.route(protected, "POST", "/telegram", "Update Telegram bot token/model", s.handleUpdateTelegramConfig) +s.route(protected, "POST", "/telegram/model", "Update Telegram bot AI model only", s.handleUpdateTelegramModel) +s.route(protected, "DELETE", "/telegram/binding", "Unbind Telegram account", s.handleUnbindTelegram) + +// Strategy management +s.route(protected, "GET", "/strategies", "List user's strategies", s.handleGetStrategies) +s.route(protected, "GET", "/strategies/active", "Get active strategy", s.handleGetActiveStrategy) +s.route(protected, "GET", "/strategies/default-config", "Get default strategy config template", s.handleGetDefaultStrategyConfig) +s.route(protected, "POST", "/strategies/preview-prompt", "Preview generated strategy prompt", s.handlePreviewPrompt) +s.route(protected, "POST", "/strategies/test-run", "Test-run strategy AI analysis", s.handleStrategyTestRun) +s.route(protected, "GET", "/strategies/:id", "Get strategy by ID", s.handleGetStrategy) +s.route(protected, "POST", "/strategies", "Create strategy (body: name, config)", s.handleCreateStrategy) +s.route(protected, "PUT", "/strategies/:id", "Update strategy", s.handleUpdateStrategy) +s.route(protected, "DELETE", "/strategies/:id", "Delete strategy", s.handleDeleteStrategy) +s.route(protected, "POST", "/strategies/:id/activate", "Activate strategy", s.handleActivateStrategy) +s.route(protected, "POST", "/strategies/:id/duplicate", "Duplicate strategy", s.handleDuplicateStrategy) + +// Debate arena +s.route(protected, "GET", "/debates", "List debates", s.debateHandler.HandleListDebates) +s.route(protected, "GET", "/debates/personalities", "Available AI personalities", s.debateHandler.HandleGetPersonalities) +s.route(protected, "GET", "/debates/:id", "Get debate details", s.debateHandler.HandleGetDebate) +s.route(protected, "POST", "/debates", "Create debate", s.debateHandler.HandleCreateDebate) +s.route(protected, "POST", "/debates/:id/start", "Start debate", s.debateHandler.HandleStartDebate) +s.route(protected, "POST", "/debates/:id/cancel", "Cancel debate", s.debateHandler.HandleCancelDebate) +s.route(protected, "POST", "/debates/:id/execute", "Execute debate consensus decision", s.debateHandler.HandleExecuteDebate) +s.route(protected, "DELETE", "/debates/:id", "Delete debate", s.debateHandler.HandleDeleteDebate) +s.route(protected, "GET", "/debates/:id/messages", "Get debate messages", s.debateHandler.HandleGetMessages) +s.route(protected, "GET", "/debates/:id/votes", "Get debate votes", s.debateHandler.HandleGetVotes) +s.route(protected, "GET", "/debates/:id/stream", "SSE stream for live debate", s.debateHandler.HandleDebateStream) + +// Account and trading data (use ?trader_id=xxx query param) +s.route(protected, "GET", "/status", "Trader running status (?trader_id=)", s.handleStatus) +s.route(protected, "GET", "/account", "Account balance and equity (?trader_id=)", s.handleAccount) +s.route(protected, "GET", "/positions", "Current open positions (?trader_id=)", s.handlePositions) +s.route(protected, "GET", "/positions/history", "Position history (?trader_id=)", s.handlePositionHistory) +s.route(protected, "GET", "/trades", "Trade records (?trader_id=)", s.handleTrades) +s.route(protected, "GET", "/orders", "All orders (?trader_id=)", s.handleOrders) +s.route(protected, "GET", "/orders/:id/fills", "Order fill details", s.handleOrderFills) +s.route(protected, "GET", "/open-orders", "Open orders from exchange (?trader_id=)", s.handleOpenOrders) +s.route(protected, "GET", "/decisions", "AI trading decisions (?trader_id=)", s.handleDecisions) +s.route(protected, "GET", "/decisions/latest", "Latest AI decisions (?trader_id=)", s.handleLatestDecisions) +s.route(protected, "GET", "/statistics", "Trading statistics (?trader_id=)", s.handleStatistics) +``` + +Note: keep the existing special-case handlers that don't use `s.route` unchanged: +- `api.Any("/health", ...)` — health check, no need to document +- `api.GET("/crypto/...")` — crypto/encryption routes, bot doesn't need these +- `backtest.*` routes (registered separately) — add descriptions to the backtest group similarly + +**Step 3: Build** + +```bash +go build ./api/... +``` + +Expected: clean build. Fix any compilation errors (method signature mismatches). + +**Step 4: Verify docs are generated** + +```bash +go test ./api/... -run TestGetAPIDocs -v +``` + +(Write a quick inline test or just print in main to verify) + +**Step 5: Commit** + +```bash +git add api/route_registry.go api/server.go +git commit -m "feat(api): migrate routes to self-documenting s.route() registration" +``` + +--- + +## Task 3: Create `telegram/agent/prompt.go` + +**Files:** +- Create: `telegram/agent/prompt.go` + +The system prompt template. API docs are injected at runtime via `BuildAgentPrompt(apiDocs)`. + +```go +package agent + +import "fmt" + +// BuildAgentPrompt constructs the full system prompt with live API documentation injected. +// apiDocs is the output of api.GetAPIDocs() — reflects all currently registered routes. +func BuildAgentPrompt(apiDocs string) string { + return fmt.Sprintf(`You are the NOFX quantitative trading system AI assistant. +You can have natural conversations with the user and call the API to operate the system. + +## Tool + +You have one tool: api_call + +Call format (append at end of reply): +{"method":"GET","path":"/api/xxx","body":{}} + +- method: "GET" | "POST" | "PUT" | "DELETE" +- path: API path from the documentation below +- body: request body as JSON object (use {} for GET requests) +- query parameters go in the path, e.g. /api/positions?trader_id=xxx + +## NOFX API Documentation + +All requests are pre-authenticated. Focus on paths and parameters. + +%s + +## Rules +1. When you need to perform a system operation, append ... at the end of your reply +2. Only call one API per response; after receiving the result, decide whether to call another or give a final reply +3. For conversations, questions, or analysis that don't require system operations, reply directly without calling the API +4. If required parameters are unclear, ask the user — do not guess critical values like trader_id +5. Always reply in English`, apiDocs) +} +``` + +**Step 1: Create the file** + +**Step 2: Build** + +```bash +go build ./telegram/agent/... +``` + +**Step 3: Commit** + +```bash +git add telegram/agent/prompt.go +git commit -m "feat(telegram/agent): add dynamic system prompt builder" +``` + +--- + +## Task 4: Create `telegram/agent/apicall.go` + +**Files:** +- Create: `telegram/agent/apicall.go` + +```go +package agent + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "nofx/logger" + "strings" + "time" +) + +// apiCallTool executes HTTP requests against the NOFX API server. +// This is the only tool available to the agent. +type apiCallTool struct { + baseURL string + token string + client *http.Client +} + +// apiRequest is the parsed structure from the LLM's tag. +type apiRequest struct { + Method string `json:"method"` + Path string `json:"path"` + Body map[string]any `json:"body"` +} + +func newAPICallTool(port int, token string) *apiCallTool { + return &apiCallTool{ + baseURL: fmt.Sprintf("http://127.0.0.1:%d", port), + token: token, + client: &http.Client{Timeout: 30 * time.Second}, + } +} + +// execute calls the API and returns the response as a string for LLM consumption. +func (t *apiCallTool) execute(req *apiRequest) string { + if req.Method == "" || req.Path == "" { + return "error: method and path are required" + } + if !strings.HasPrefix(req.Path, "/") { + req.Path = "/" + req.Path + } + + var bodyReader io.Reader + if req.Method != "GET" && len(req.Body) > 0 { + b, err := json.Marshal(req.Body) + if err != nil { + return fmt.Sprintf("error marshaling body: %v", err) + } + bodyReader = bytes.NewReader(b) + } + + httpReq, err := http.NewRequest(req.Method, t.baseURL+req.Path, bodyReader) + if err != nil { + return fmt.Sprintf("error creating request: %v", err) + } + httpReq.Header.Set("Content-Type", "application/json") + httpReq.Header.Set("Authorization", "Bearer "+t.token) + + resp, err := t.client.Do(httpReq) + if err != nil { + return fmt.Sprintf("API call failed: %v", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return fmt.Sprintf("error reading response: %v", err) + } + + logger.Infof("Agent api_call: %s %s -> %d", req.Method, req.Path, resp.StatusCode) + + if resp.StatusCode >= 400 { + return fmt.Sprintf("API error %d: %s", resp.StatusCode, string(body)) + } + + // Pretty-print JSON for better LLM readability + var v any + if json.Unmarshal(body, &v) == nil { + if pretty, err := json.MarshalIndent(v, "", " "); err == nil { + return string(pretty) + } + } + return string(body) +} + +// parseAPICall extracts ... from LLM response. +// Returns (nil, original) if not found or malformed JSON. +func parseAPICall(resp string) (*apiRequest, string) { + const openTag = "" + const closeTag = "" + + start := strings.Index(resp, openTag) + end := strings.Index(resp, closeTag) + if start < 0 || end < 0 || end <= start { + return nil, resp + } + + jsonStr := strings.TrimSpace(resp[start+len(openTag) : end]) + var req apiRequest + if err := json.Unmarshal([]byte(jsonStr), &req); err != nil { + logger.Warnf("Agent: failed to parse api_call JSON %q: %v", jsonStr, err) + return nil, resp + } + + return &req, strings.TrimSpace(resp[:start]) +} +``` + +**Step 1: Create the file** + +**Step 2: Commit** + +```bash +git add telegram/agent/apicall.go +git commit -m "feat(telegram/agent): add generic api_call tool" +``` + +--- + +## Task 5: Create `telegram/agent/agent.go` + +**Files:** +- Create: `telegram/agent/agent.go` + +```go +package agent + +import ( + "fmt" + "nofx/auth" + "nofx/logger" + "nofx/mcp" + "nofx/telegram/session" + "strings" +) + +const maxIterations = 10 + +// Agent is a stateful AI agent for one Telegram chat. +// It has a single tool (api_call) and an unbounded decision loop. +type Agent struct { + apiTool *apiCallTool + getLLM func() mcp.AIClient + memory *session.Memory + systemPrompt string +} + +// New creates an Agent for one chat session. +func New(apiPort int, botToken string, getLLM func() mcp.AIClient, systemPrompt string) *Agent { + return &Agent{ + apiTool: newAPICallTool(apiPort, botToken), + getLLM: getLLM, + memory: session.NewMemory(getLLM()), + systemPrompt: systemPrompt, + } +} + +// GenerateBotToken creates a long-lived JWT for the bot's internal API calls. +// Call once at bot startup before creating any Agent or Manager. +func GenerateBotToken() (string, error) { + return auth.GenerateJWT("default", "bot@internal") +} + +// Run processes one user message through the agent loop. +// Loop: LLM decides -> if : execute, append result, loop -> if no tag: return reply. +func (a *Agent) Run(userMessage string) string { + llm := a.getLLM() + if llm == nil { + return "AI assistant unavailable. Please configure an AI model in the Web UI." + } + + // Build turn messages: history context prefix + current user message + histCtx := a.memory.BuildContext() + firstMsg := userMessage + if histCtx != "" { + firstMsg = histCtx + "\n---\nUser: " + userMessage + } + turnMsgs := []mcp.Message{mcp.NewUserMessage(firstMsg)} + + var lastResp string + + for i := 0; i < maxIterations; i++ { + req, err := mcp.NewRequestBuilder(). + WithSystemPrompt(a.systemPrompt). + AddConversationHistory(turnMsgs). + Build() + if err != nil { + logger.Errorf("Agent: failed to build request: %v", err) + break + } + + resp, err := llm.CallWithRequest(req) + if err != nil { + logger.Errorf("Agent: LLM call failed (iteration %d): %v", i+1, err) + return "AI assistant temporarily unavailable. Please try again." + } + lastResp = resp + + apiReq, textBefore := parseAPICall(resp) + if apiReq == nil { + // No api_call tag — LLM gave a final answer + reply := strings.TrimSpace(resp) + a.memory.Add("user", userMessage) + a.memory.Add("assistant", reply) + return reply + } + + logger.Infof("Agent: iter=%d %s %s", i+1, apiReq.Method, apiReq.Path) + result := a.apiTool.execute(apiReq) + + if textBefore != "" { + turnMsgs = append(turnMsgs, mcp.NewAssistantMessage(textBefore)) + } + turnMsgs = append(turnMsgs, mcp.NewUserMessage( + fmt.Sprintf("[API result: %s %s]\n%s", apiReq.Method, apiReq.Path, result), + )) + } + + // Safety: max iterations reached — ask LLM for a final summary + logger.Warnf("Agent: max iterations (%d) reached", maxIterations) + turnMsgs = append(turnMsgs, mcp.NewUserMessage("Please summarize the results and give the user a final reply.")) + if finalReq, err := mcp.NewRequestBuilder(). + WithSystemPrompt(a.systemPrompt). + AddConversationHistory(turnMsgs). + Build(); err == nil { + if finalResp, err := llm.CallWithRequest(finalReq); err == nil { + lastResp = finalResp + } + } + + reply := strings.TrimSpace(lastResp) + a.memory.Add("user", userMessage) + a.memory.Add("assistant", reply) + return reply +} + +// ResetMemory clears conversation history (called on /start). +func (a *Agent) ResetMemory() { + a.memory.ResetFull() +} +``` + +**Step 1: Create the file** + +**Step 2: Build** + +```bash +go build ./telegram/agent/... +``` + +**Step 3: Commit** + +```bash +git add telegram/agent/agent.go +git commit -m "feat(telegram/agent): add OpenClaw-style agent loop" +``` + +--- + +## Task 6: Create `telegram/agent/manager.go` + +**Files:** +- Create: `telegram/agent/manager.go` + +```go +package agent + +import ( + "nofx/mcp" + "sync" +) + +// Manager holds one Agent per Telegram chat ID. +// Messages for the same chat are serialized (OpenClaw Lane Queue pattern). +type Manager struct { + mu sync.Mutex + agents map[int64]*Agent + lanes map[int64]chan struct{} + apiPort int + botToken string + getLLM func() mcp.AIClient + systemPrompt string +} + +// NewManager creates a Manager. Call api.GetAPIDocs() before this and pass the result as apiDocs. +func NewManager(apiPort int, botToken string, getLLM func() mcp.AIClient, apiDocs string) *Manager { + return &Manager{ + agents: make(map[int64]*Agent), + lanes: make(map[int64]chan struct{}), + apiPort: apiPort, + botToken: botToken, + getLLM: getLLM, + systemPrompt: BuildAgentPrompt(apiDocs), + } +} + +// Run processes a message for the given chat ID. +// If the same chat is already processing a message, this call blocks until it completes. +func (m *Manager) Run(chatID int64, userMessage string) string { + a, lane := m.getOrCreate(chatID) + lane <- struct{}{} + defer func() { <-lane }() + return a.Run(userMessage) +} + +// Reset clears memory for the given chat (called on /start). +func (m *Manager) Reset(chatID int64) { + m.mu.Lock() + a, ok := m.agents[chatID] + m.mu.Unlock() + if ok { + a.ResetMemory() + } +} + +func (m *Manager) getOrCreate(chatID int64) (*Agent, chan struct{}) { + m.mu.Lock() + defer m.mu.Unlock() + + a, ok := m.agents[chatID] + if !ok { + a = New(m.apiPort, m.botToken, m.getLLM, m.systemPrompt) + m.agents[chatID] = a + } + lane, ok := m.lanes[chatID] + if !ok { + lane = make(chan struct{}, 1) // binary semaphore: one message at a time per chat + m.lanes[chatID] = lane + } + return a, lane +} +``` + +**Step 1: Create the file** + +**Step 2: Build** + +```bash +go build ./telegram/agent/... +``` + +**Step 3: Commit** + +```bash +git add telegram/agent/manager.go +git commit -m "feat(telegram/agent): add per-chat agent manager with lane serialization" +``` + +--- + +## Task 7: Write tests + +**Files:** +- Create: `telegram/agent/agent_test.go` + +```go +package agent + +import ( + "fmt" + "net/http" + "net/http/httptest" + "strings" + "testing" + "time" + + "nofx/mcp" +) + +type mockLLM struct { + responses []string + calls int + lastMsgs []mcp.Message +} + +func (m *mockLLM) SetAPIKey(_, _, _ string) {} +func (m *mockLLM) SetTimeout(_ time.Duration) {} +func (m *mockLLM) CallWithMessages(_, _ string) (string, error) { return m.next() } +func (m *mockLLM) CallWithRequest(req *mcp.Request) (string, error) { + m.lastMsgs = req.Messages + return m.next() +} +func (m *mockLLM) next() (string, error) { + if m.calls < len(m.responses) { + r := m.responses[m.calls] + m.calls++ + return r, nil + } + return "OK", nil +} + +func mockGetLLM(llm *mockLLM) func() mcp.AIClient { + return func() mcp.AIClient { return llm } +} + +const testPrompt = "You are a test assistant." + +// TestAgentDirectReply: LLM replies without api_call — one call, direct reply. +func TestAgentDirectReply(t *testing.T) { + llm := &mockLLM{responses: []string{"Hello! How can I help you?"}} + a := New(8080, "tok", mockGetLLM(llm), testPrompt) + + reply := a.Run("hello") + + if reply != "Hello! How can I help you?" { + t.Fatalf("unexpected reply: %q", reply) + } + if llm.calls != 1 { + t.Fatalf("expected 1 LLM call, got %d", llm.calls) + } +} + +// TestAgentAPICall: LLM calls API, gets result, gives final reply — two LLM calls. +func TestAgentAPICall(t *testing.T) { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path == "/api/my-traders" { + w.Write([]byte(`[{"id":"t1","name":"BTC Strategy"}]`)) + return + } + w.WriteHeader(404) + })) + defer srv.Close() + + var port int + fmt.Sscanf(srv.Listener.Addr().String(), "127.0.0.1:%d", &port) + + llm := &mockLLM{responses: []string{ + `Let me check.{"method":"GET","path":"/api/my-traders","body":{}}`, + "You have one trader: BTC Strategy.", + }} + a := New(port, "tok", mockGetLLM(llm), testPrompt) + + reply := a.Run("list my traders") + + if reply != "You have one trader: BTC Strategy." { + t.Fatalf("unexpected reply: %q", reply) + } + if llm.calls != 2 { + t.Fatalf("expected 2 LLM calls, got %d", llm.calls) + } +} + +// TestAgentMultiStep: LLM chains two API calls before final reply — three LLM calls. +func TestAgentMultiStep(t *testing.T) { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(`{"ok":true}`)) + })) + defer srv.Close() + + var port int + fmt.Sscanf(srv.Listener.Addr().String(), "127.0.0.1:%d", &port) + + llm := &mockLLM{responses: []string{ + `Checking account.{"method":"GET","path":"/api/account","body":{}}`, + `Now checking positions.{"method":"GET","path":"/api/positions","body":{}}`, + "Account looks healthy and no open positions.", + }} + a := New(port, "tok", mockGetLLM(llm), testPrompt) + + reply := a.Run("show me account status") + + if llm.calls != 3 { + t.Fatalf("expected 3 LLM calls (2 api + 1 final), got %d", llm.calls) + } + if reply != "Account looks healthy and no open positions." { + t.Fatalf("unexpected final reply: %q", reply) + } +} + +// TestAgentAPIResultInContext: API result must appear in next LLM message. +func TestAgentAPIResultInContext(t *testing.T) { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(`{"balance":1234.56}`)) + })) + defer srv.Close() + + var port int + fmt.Sscanf(srv.Listener.Addr().String(), "127.0.0.1:%d", &port) + + llm := &mockLLM{responses: []string{ + `{"method":"GET","path":"/api/account","body":{}}`, + "Balance is 1234.56 USDT.", + }} + a := New(port, "tok", mockGetLLM(llm), testPrompt) + a.Run("show balance") + + found := false + for _, msg := range llm.lastMsgs { + if strings.Contains(msg.Content, "API result") || strings.Contains(msg.Content, "balance") { + found = true + break + } + } + if !found { + t.Fatalf("API result not found in subsequent LLM context") + } +} + +// TestParseAPICall: unit tests for the XML tag parser. +func TestParseAPICall(t *testing.T) { + t.Run("valid call", func(t *testing.T) { + resp := `Stopping trader.{"method":"POST","path":"/api/traders/t1/stop","body":{}}` + req, text := parseAPICall(resp) + if req == nil { + t.Fatal("expected api_call, got nil") + } + if req.Method != "POST" || req.Path != "/api/traders/t1/stop" { + t.Fatalf("unexpected req: %+v", req) + } + if text != "Stopping trader." { + t.Fatalf("unexpected text before tag: %q", text) + } + }) + + t.Run("no call tag", func(t *testing.T) { + req, text := parseAPICall("Just a reply.") + if req != nil { + t.Fatal("expected nil api_call") + } + if text != "Just a reply." { + t.Fatalf("expected original text, got %q", text) + } + }) + + t.Run("malformed JSON", func(t *testing.T) { + req, _ := parseAPICall(`NOT JSON`) + if req != nil { + t.Fatal("expected nil for malformed JSON") + } + }) +} +``` + +**Step 1: Create the test file** + +**Step 2: Run tests** + +```bash +go test ./telegram/agent/... -v +``` + +Expected: all PASS. + +**Step 3: Commit** + +```bash +git add telegram/agent/agent_test.go +git commit -m "test(telegram/agent): add agent tests with mock HTTP server" +``` + +--- + +## Task 8: Simplify `telegram/session/session.go` + +Replace file content: + +```go +package session + +import ( + "nofx/mcp" + "sync" + "time" +) + +// Session holds conversation memory for a single Telegram chat. +type Session struct { + ChatID int64 + Memory *Memory + UpdatedAt time.Time +} + +func (s *Session) ResetFull() { s.Memory.ResetFull() } + +// Manager manages sessions by chat ID. +type Manager struct { + mu sync.RWMutex + sessions map[int64]*Session + llm mcp.AIClient +} + +func NewManager(llm mcp.AIClient) *Manager { + return &Manager{sessions: make(map[int64]*Session), llm: llm} +} + +func (m *Manager) Get(chatID int64) *Session { + m.mu.Lock() + defer m.mu.Unlock() + s, ok := m.sessions[chatID] + if !ok { + s = &Session{ChatID: chatID, Memory: NewMemory(m.llm), UpdatedAt: time.Now()} + m.sessions[chatID] = s + } + s.UpdatedAt = time.Now() + return s +} +``` + +```bash +go build ./... +git add telegram/session/session.go +git commit -m "refactor(telegram/session): remove intent/params fields" +``` + +--- + +## Task 9: Wire `telegram/bot.go` + +**Step 1: In `runBot`, replace old wiring with:** + +```go +botToken, err := agent.GenerateBotToken() +if err != nil { + logger.Errorf("Failed to generate bot JWT: %v", err) + return false +} +agents := agent.NewManager(cfg.APIServerPort, botToken, + func() mcp.AIClient { return newLLMClient(st) }, + api.GetAPIDocs(), +) +``` + +**Step 2: Replace `/start` reset:** +```go +// old: sessions.Get(chatID).ResetFull() +agents.Reset(chatID) +``` + +**Step 3: Replace message processing:** +```go +go func(chatID int64, text string) { + bot.Send(tgbotapi.NewChatAction(chatID, tgbotapi.ChatTyping)) //nolint:errcheck + reply := agents.Run(chatID, text) + msg := tgbotapi.NewMessage(chatID, reply) + msg.ParseMode = "Markdown" + if _, err := bot.Send(msg); err != nil { + msg.ParseMode = "" + bot.Send(msg) //nolint:errcheck + } +}(chatID, text) +``` + +**Step 4: Update imports** — remove `service`, `handler`, `intent`, `session`; add `agent`, `api`: + +```go +import ( + "nofx/config" + "nofx/logger" + "nofx/manager" + "nofx/mcp" + "nofx/store" + "nofx/api" + "nofx/telegram/agent" + "os" + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" +) +``` + +**Step 5: Full build** + +```bash +go build ./... +git add telegram/bot.go +git commit -m "feat(telegram): wire agent.Manager with auto-generated API docs" +``` + +--- + +## Task 10: Delete old files + +```bash +git rm telegram/intent/parser.go telegram/handler/handler.go telegram/handler/handler_test.go +rmdir telegram/intent telegram/handler 2>/dev/null || true +go build ./... && go test ./... +git commit -m "refactor(telegram): delete old intent/handler packages" +``` + +--- + +## Task 11: End-to-end verification + +```bash +go test ./telegram/... ./api/... -v -count=1 +go build ./... +``` + +Manual verification — none of these scenarios need any special code: +- [ ] "hello" → natural conversation reply +- [ ] "list my traders" → GET /api/my-traders, formatted reply +- [ ] "show positions" → GET /api/positions +- [ ] "check balance then stop trader if loss > 5%" → multi-step: GET /api/account → POST /api/traders/:id/stop +- [ ] "create a BTC strategy with 5% stop loss" → GET /api/strategies/default-config → POST /api/strategies +- [ ] "show latest trading decisions" → GET /api/decisions/latest +- [ ] "what's the BTC 1h chart looking like" → GET /api/klines?symbol=BTCUSDT&interval=1h +- [ ] "delete trader xxx" → DELETE /api/traders/:id +- [ ] Any unrecognized input → LLM replies naturally, no error diff --git a/docs/plans/2026-03-06-telegram-bot.md b/docs/plans/2026-03-06-telegram-bot.md new file mode 100644 index 00000000..1627dce5 --- /dev/null +++ b/docs/plans/2026-03-06-telegram-bot.md @@ -0,0 +1,1218 @@ +# Telegram Bot Integration Implementation Plan + +> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. + +**Goal:** 在 NOFX 单进程内内置 Telegram Bot,用户通过自然语言(LLM 解析意图)在 Telegram 配置策略、交易所、大模型、交易员、查询持仓、控制交易。 + +**Architecture:** 新增 `telegram/` 包,单一 Facade 层(`service/nofx.go`)作为唯一接触 NOFX 内部的边界,借鉴 openclaw compaction 模式实现多轮对话记忆压缩,`main.go` 仅增加 3 行。 + +**Tech Stack:** Go, `github.com/go-telegram-bot-api/telegram-bot-api/v5`(已在 go.mod), `nofx/mcp`(复用现有 LLM 客户端) + +--- + +## 监工修正(Claude 开始前先读) + +这份文档里的代码块只能当伪代码参考,**不能直接照抄**。当前仓库真实接口和文档示例存在多处偏差,首轮实现必须以编译通过的仓库接口为准。 + +### 真实接口约束 + +1. `manager.TraderManager` **没有** `StartTrader` / `StopTrader` 方法。 + - Telegram 启停交易员时,必须复用现有 API Server 的流程语义: + - 启动:校验归属 -> 移除已停止的内存实例 -> `LoadUserTradersFromStore()` -> `GetTrader()` -> `go trader.Run()` -> `store.Trader().UpdateStatus(userID, traderID, true)` + - 停止:`GetTrader()` -> 检查 `GetStatus()["is_running"]` -> `Stop()` -> `UpdateStatus(..., false)` + +2. `store` 方法签名与文档示例不一致,必须按真实接口实现: + - `store.Trader().List(userID)` 返回 `[]*store.Trader` + - `store.Trader()` 没有 `Get(traderID)`,常用的是 `GetFullConfig(userID, traderID)` + - `store.Strategy().Get(userID, id string)`,`Strategy.ID` 是 `string`,不是 `uint` + - `store.AIModel().Create(...)` 返回 `error`,不是 `*store.AIModel` + - `store.Exchange().Create(...)` 返回 `(string, error)`,不是 `*store.Exchange` + - `store.Exchange()` 读单条配置用 `GetByID(userID, id)` + - `store.Equity()` 没有 `Latest`,现有方法是 `GetLatest(traderID, limit)` + - `store.Position()` 没有 `ListByTrader` + +3. `mcp.New()` 在当前仓库中不存在。 + - 必须使用已有构造器,例如 `mcp.NewDeepSeekClient()`、`mcp.NewClient(...)`,或新增一个显式 helper。 + +4. 策略创建不能直接拼一个“猜测字段”的 JSON。 + - 当前真实结构是 `store.StrategyConfig` + - 首选做法:从 `store.GetDefaultStrategyConfig("zh")` 起步,修改需要的字段,再 `json.Marshal` + - `Strategy.ID` 需要像现有 API 一样使用 `uuid.New().String()` + +5. “修改策略 Prompt” 不能按文档示例那样直接改 `Strategy.CustomPrompt`。 + - `store.Strategy` 没有这个顶层字段 + - 真实做法应是:读取 `strategy.Config` -> `ParseConfig()` -> 更新 `StrategyConfig.CustomPrompt` 或相关 prompt section -> 序列化回 `strategy.Config` -> `Update(strategy)` + +6. `/start` 的“完全重置”与当前伪代码冲突。 + - 现在 `Memory.Reset()` 只清空短期历史,不清空长期摘要 + - 如果 `/start` 要“重置会话”,就必须新增 `ClearAll()` 或重建 `Memory` + +7. 不要在 Telegram 回复里默认启用 `Markdown` parse mode。 + - 用户输入、策略名、API key、交易对等都可能包含 Markdown 特殊字符 + - 首版建议纯文本回复,稳定后再做 escape + +8. 不要在日志、回复、错误信息中回显敏感字段。 + - `api_key` + - `secret_key` + - `passphrase` + - 私钥或钱包密钥 + +### 首轮交付范围(必须收敛) + +首个可交付版本只做“最小可用闭环”,不要一口气把所有写操作做满: + +1. 必做: + - Telegram Bot 启动 + - 管理员 chat ID 鉴权 + - `/start` 重置会话 + - 会话管理 + - LLM 意图解析 + - 只读查询:`list traders` / `query positions` / `query equity` + - 控制:`start trader` / `stop trader` + +2. 第二阶段再做: + - `config_strategy` + - `config_exchange` + - `config_model` + - `config_trader` + - `update_prompt` + +3. `control_close` 先不要做,除非先找到仓库里现成且安全的平仓入口。 + +### 硬性门禁 + +1. 每个子任务至少过 `go build ./telegram/...` +2. 合并前必须过 `go build ./...` +3. `handler/` 不允许直接碰 `store/` 或 `manager/` +4. 所有跨层访问都只能从 `telegram/service/nofx.go` 进入 +5. 任何伪代码字段名、方法名、返回值,在落地前都必须先对照真实仓库接口 + +--- + +## 文件结构 + +``` +telegram/ +├── bot.go # 新建:Bot 启动、消息收发路由 +├── session/ +│ ├── session.go # 新建:会话状态(当前意图、进度) +│ └── memory.go # 新建:对话记忆 + 自动压缩 +├── intent/ +│ └── parser.go # 新建:LLM 意图解析 +├── service/ +│ └── nofx.go # 新建:Facade(唯一接触 store/manager 的地方) +└── handler/ + └── handler.go # 新建:业务路由,只调 service/ 和 intent/ + +config/config.go # 修改:加 TelegramBotToken, TelegramAdminChatID +main.go # 修改:加 3 行启动 Telegram Bot +``` + +--- + +### Task 1: 扩展 Config + +**Files:** +- Modify: `config/config.go` + +**Step 1: 在 Config struct 末尾加两个字段** + +```go +// Telegram Bot configuration +TelegramBotToken string // TELEGRAM_BOT_TOKEN +TelegramAdminChatID int64 // TELEGRAM_ADMIN_CHAT_ID (only this user can operate) +``` + +**Step 2: 在 Init() 函数的解析段加读取逻辑** + +找到 Init() 函数中 os.Getenv 的模式,加: + +```go +cfg.TelegramBotToken = os.Getenv("TELEGRAM_BOT_TOKEN") +if chatIDStr := os.Getenv("TELEGRAM_ADMIN_CHAT_ID"); chatIDStr != "" { + if id, err := strconv.ParseInt(chatIDStr, 10, 64); err == nil { + cfg.TelegramAdminChatID = id + } +} +``` + +**监工补充:** `Init()` 函数里当前一直在填充局部变量 `cfg`,最后才赋值给 `global`,这里不能提前写 `global.TelegramBotToken` + +**Step 3: 构建验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./... +``` + +Expected: 无错误 + +**Step 4: Commit** + +```bash +git add config/config.go +git commit -m "feat(telegram): add TelegramBotToken and TelegramAdminChatID to config" +``` + +--- + +### Task 2: Facade 层 telegram/service/nofx.go + +**Files:** +- Create: `telegram/service/nofx.go` + +这是**唯一**接触 NOFX 内部(store、manager)的文件。handler 不直接碰 store/manager。 + +**Step 1: 创建文件** + +```go +package service + +import ( + "fmt" + "nofx/manager" + "nofx/store" +) + +// NofxService is the single facade between Telegram bot and NOFX internals. +// All store/manager access MUST go through this layer. +type NofxService struct { + store *store.Store + manager *manager.TraderManager + userID string // fixed user ID for single-user mode: "default" +} + +func New(st *store.Store, tm *manager.TraderManager) *NofxService { + return &NofxService{store: st, manager: tm, userID: "default"} +} + +// --- Trader --- + +func (s *NofxService) ListTraders() ([]store.Trader, error) { + return s.store.Trader().List(s.userID) +} + +func (s *NofxService) StartTrader(traderID string) error { + t, err := s.store.Trader().Get(traderID) + if err != nil { + return fmt.Errorf("trader not found: %w", err) + } + return s.manager.StartTrader(t, s.store) +} + +func (s *NofxService) StopTrader(traderID string) error { + return s.manager.StopTrader(traderID) +} + +// --- Strategy --- + +func (s *NofxService) ListStrategies() ([]store.Strategy, error) { + return s.store.Strategy().List(s.userID) +} + +func (s *NofxService) CreateStrategy(name string, configJSON string) (*store.Strategy, error) { + strategy := &store.Strategy{ + UserID: s.userID, + Name: name, + Config: configJSON, + } + if err := s.store.Strategy().Create(strategy); err != nil { + return nil, err + } + return strategy, nil +} + +func (s *NofxService) UpdateStrategyPrompt(strategyID uint, prompt string) error { + strategy, err := s.store.Strategy().Get(strategyID) + if err != nil { + return err + } + strategy.CustomPrompt = prompt + return s.store.Strategy().Update(strategy) +} + +// --- AI Model --- + +func (s *NofxService) ListModels() ([]store.AIModel, error) { + return s.store.AIModel().List(s.userID) +} + +func (s *NofxService) CreateModel(provider, apiKey, model string) (*store.AIModel, error) { + m := &store.AIModel{ + UserID: s.userID, + Provider: provider, + APIKey: apiKey, + Model: model, + } + if err := s.store.AIModel().Create(m); err != nil { + return nil, err + } + return m, nil +} + +// --- Exchange --- + +func (s *NofxService) ListExchanges() ([]store.Exchange, error) { + return s.store.Exchange().List(s.userID) +} + +func (s *NofxService) CreateExchange(exchangeType, apiKey, secretKey string) (*store.Exchange, error) { + ex := &store.Exchange{ + UserID: s.userID, + ExchangeType: exchangeType, + APIKey: apiKey, + SecretKey: secretKey, + } + if err := s.store.Exchange().Create(ex); err != nil { + return nil, err + } + return ex, nil +} + +// --- Positions / Query --- + +func (s *NofxService) GetPositions(traderID string) ([]store.TraderPosition, error) { + return s.store.Position().ListByTrader(traderID) +} + +func (s *NofxService) GetEquitySummary(traderID string) (*store.EquitySnapshot, error) { + return s.store.Equity().Latest(traderID) +} +``` + +**Step 2: 注意事项** + +store 的方法名称(List、Get、Create、Update)需要根据实际 store 接口调整。运行 `go build ./telegram/...` 后根据编译错误逐一对齐方法名。 + +**监工补充:这一节不能照抄上面的示例实现,至少要修正以下事实** + +- `ListTraders()` / `ListStrategies()` / `ListModels()` / `ListExchanges()` 的返回值都应与真实 store 一致,当前仓库大多是指针切片 +- `StartTrader()` / `StopTrader()` 不能调用不存在的 `manager` 方法,必须镜像 `api/server.go` 的启动/停止流程 +- `CreateStrategy()` 不能假设 `Strategy.ID` 是整数;请复用现有 API 的 `uuid.New().String()` 方案 +- `CreateModel()` / `CreateExchange()` 不能假设 store 会返回新建对象;真实接口要么返回 `error`,要么返回 `(id, error)` +- `GetPositions()` / `GetEquitySummary()` 需要在 `service` 内封装真实查询逻辑,不能调用仓库中不存在的 `ListByTrader()` / `Latest()` + +**Step 3: Build 验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./telegram/... +``` + +Expected: 只可能有 store 方法名不匹配的错误,逐一修正即可。 + +**Step 4: Commit** + +```bash +git add telegram/service/nofx.go +git commit -m "feat(telegram): add NofxService facade layer" +``` + +--- + +### Task 3: 会话记忆 telegram/session/memory.go + +**Files:** +- Create: `telegram/session/memory.go` + +借鉴 openclaw compaction 模式:token 超阈值 → LLM 静默压缩 → 写入长期记忆 → 清空短期历史。 + +**Step 1: 创建文件** + +```go +package session + +import ( + "fmt" + "nofx/mcp" + "strings" +) + +const ( + // When short-term history exceeds this token estimate, trigger compaction + compactionThresholdTokens = 3000 + // Rough estimate: 1 token ≈ 4 chars (Chinese ~2 chars/token) + charsPerToken = 3 +) + +// Message represents a single conversation turn +type Message struct { + Role string // "user" or "assistant" + Content string +} + +// Memory manages conversation history with automatic compaction. +// Inspired by openclaw's compaction pattern. +type Memory struct { + LongTerm string // Durable summary (survives compaction) + ShortTerm []Message // Recent conversation (cleared on compaction) + llm mcp.AIClient +} + +func NewMemory(llm mcp.AIClient) *Memory { + return &Memory{llm: llm} +} + +// Add appends a message and triggers compaction if needed +func (m *Memory) Add(role, content string) { + m.ShortTerm = append(m.ShortTerm, Message{Role: role, Content: content}) + if m.estimateTokens() > compactionThresholdTokens { + m.compact() + } +} + +// BuildContext returns context string for LLM intent parsing +func (m *Memory) BuildContext() string { + var sb strings.Builder + if m.LongTerm != "" { + sb.WriteString("【历史摘要】\n") + sb.WriteString(m.LongTerm) + sb.WriteString("\n\n") + } + if len(m.ShortTerm) > 0 { + sb.WriteString("【近期对话】\n") + for _, msg := range m.ShortTerm { + sb.WriteString(fmt.Sprintf("%s: %s\n", msg.Role, msg.Content)) + } + } + return sb.String() +} + +// Reset clears session (called on /start or new session) +func (m *Memory) Reset() { + m.ShortTerm = []Message{} + // LongTerm is preserved intentionally +} + +func (m *Memory) estimateTokens() int { + total := len(m.LongTerm) + for _, msg := range m.ShortTerm { + total += len(msg.Content) + } + return total / charsPerToken +} + +// compact summarizes short-term history into long-term memory (silent, user doesn't see this) +func (m *Memory) compact() { + if m.llm == nil || len(m.ShortTerm) == 0 { + return + } + + history := m.BuildContext() + systemPrompt := `你是一个对话摘要助手。将以下交易配置对话压缩为简洁摘要。 + +必须保留: +- 用户正在配置什么(策略/交易所/大模型/交易员) +- 已确认的参数(交易对、杠杆、止损比例、指标等) +- 待确认或缺失的参数 +- 用户表达的偏好和要求 + +输出格式:纯文本摘要,不超过200字。` + + summary, err := m.llm.CallWithMessages(systemPrompt, history) + if err != nil { + // Compaction failed: keep short-term as-is, don't lose data + return + } + + // Write summary to long-term, clear short-term + if m.LongTerm != "" { + m.LongTerm = m.LongTerm + "\n" + summary + } else { + m.LongTerm = summary + } + m.ShortTerm = []Message{} +} +``` + +**Step 2: Build 验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./telegram/... +``` + +**Step 3: Commit** + +```bash +git add telegram/session/memory.go +git commit -m "feat(telegram): add conversation memory with openclaw-style compaction" +``` + +--- + +### Task 4: 会话状态 telegram/session/session.go + +**Files:** +- Create: `telegram/session/session.go` + +**Step 1: 创建文件** + +```go +package session + +import ( + "nofx/mcp" + "sync" + "time" +) + +// Intent represents what the user is currently trying to do +type Intent string + +const ( + IntentNone Intent = "" + IntentConfigStrategy Intent = "config_strategy" + IntentConfigExchange Intent = "config_exchange" + IntentConfigModel Intent = "config_model" + IntentConfigTrader Intent = "config_trader" + IntentQueryPositions Intent = "query_positions" + IntentControlTrader Intent = "control_trader" + IntentUpdatePrompt Intent = "update_prompt" +) + +// Session holds state for a single Telegram conversation +type Session struct { + ChatID int64 + Intent Intent + Params map[string]string // collected parameters so far + Memory *Memory + UpdatedAt time.Time +} + +// Manager manages all active sessions (one per chat ID) +type Manager struct { + mu sync.RWMutex + sessions map[int64]*Session + llm mcp.AIClient +} + +func NewManager(llm mcp.AIClient) *Manager { + return &Manager{ + sessions: make(map[int64]*Session), + llm: llm, + } +} + +// Get returns or creates a session for the given chat ID +func (m *Manager) Get(chatID int64) *Session { + m.mu.Lock() + defer m.mu.Unlock() + + s, ok := m.sessions[chatID] + if !ok { + s = &Session{ + ChatID: chatID, + Intent: IntentNone, + Params: make(map[string]string), + Memory: NewMemory(m.llm), + UpdatedAt: time.Now(), + } + m.sessions[chatID] = s + } + s.UpdatedAt = time.Now() + return s +} + +// Reset clears session intent and params (keeps memory) +func (s *Session) Reset() { + s.Intent = IntentNone + s.Params = make(map[string]string) +} + +// ResetFull clears everything including memory (on /start command) +func (s *Session) ResetFull() { + s.Reset() + s.Memory.Reset() +} +``` + +**监工补充:这里的伪代码与注释不一致** + +- 当前 `Memory.Reset()` 只清空短期历史,不会清空 `LongTerm` +- 如果 `/start` 的产品语义是“完全重置”,这里必须改成真正清空长期摘要,或者直接新建一个 `Memory` + +**Step 2: Build 验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./telegram/... +``` + +**Step 3: Commit** + +```bash +git add telegram/session/session.go +git commit -m "feat(telegram): add session state manager" +``` + +--- + +### Task 5: LLM 意图解析 telegram/intent/parser.go + +**Files:** +- Create: `telegram/intent/parser.go` + +复用 `nofx/mcp` 的现有 LLM 客户端,不引入新依赖。 + +**Step 1: 创建文件** + +```go +package intent + +import ( + "encoding/json" + "nofx/mcp" + "strings" +) + +// ParsedIntent is the structured output from LLM intent parsing +type ParsedIntent struct { + Action string `json:"action"` // e.g. "config_strategy", "query_positions" + Params map[string]string `json:"params"` // extracted parameters + Missing []string `json:"missing"` // params still needed + Reply string `json:"reply"` // what bot should say to user +} + +const systemPrompt = `你是 NOFX 交易系统的对话助手。分析用户消息,提取交易配置意图和参数。 + +支持的操作(action): +- config_strategy: 创建/修改策略(需要:name, coins, indicators, max_position_pct, stop_loss_pct) +- config_exchange: 配置交易所(需要:exchange_type, api_key, secret_key) +- config_model: 配置大模型(需要:provider, api_key, model) +- config_trader: 配置交易员(需要:name, model_id, exchange_id, strategy_id) +- query_positions: 查询持仓(需要:trader_id 或 "all") +- query_equity: 查询账户余额/盈亏 +- control_start: 启动交易员(需要:trader_id 或 trader_name) +- control_stop: 停止交易员(需要:trader_id 或 trader_name) +- control_close: 紧急平仓(需要:trader_id, symbol) +- update_prompt: 修改策略 Prompt(需要:strategy_id 或 strategy_name, prompt) +- unknown: 无法识别 + +输出严格 JSON 格式: +{ + "action": "action_name", + "params": {"key": "value"}, + "missing": ["param1", "param2"], + "reply": "对用户的回复(询问缺失参数或确认操作)" +} + +安全要求:API Key 等敏感信息原样保留在 params 中,不要截断或修改。` + +// Parser uses LLM to parse user message into structured intent +type Parser struct { + llm mcp.AIClient +} + +func NewParser(llm mcp.AIClient) *Parser { + return &Parser{llm: llm} +} + +// Parse sends user message + conversation context to LLM, returns structured intent +func (p *Parser) Parse(userMessage, conversationContext string) (*ParsedIntent, error) { + userPrompt := userMessage + if conversationContext != "" { + userPrompt = conversationContext + "\n\n【当前消息】\n" + userMessage + } + + resp, err := p.llm.CallWithMessages(systemPrompt, userPrompt) + if err != nil { + return nil, err + } + + // Extract JSON from response (LLM may wrap in markdown code block) + jsonStr := extractJSON(resp) + + var result ParsedIntent + if err := json.Unmarshal([]byte(jsonStr), &result); err != nil { + // Fallback: return unknown intent with raw response as reply + return &ParsedIntent{ + Action: "unknown", + Reply: "抱歉,我没有理解你的意思。请描述你想做什么,例如:「帮我创建一个 BTC 策略」", + }, nil + } + return &result, nil +} + +func extractJSON(s string) string { + // Strip markdown code block if present + s = strings.TrimSpace(s) + if idx := strings.Index(s, "```json"); idx >= 0 { + s = s[idx+7:] + } else if idx := strings.Index(s, "```"); idx >= 0 { + s = s[idx+3:] + } + if idx := strings.LastIndex(s, "```"); idx >= 0 { + s = s[:idx] + } + // Find first { to last } + start := strings.Index(s, "{") + end := strings.LastIndex(s, "}") + if start >= 0 && end > start { + return s[start : end+1] + } + return s +} +``` + +**Step 2: Build 验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./telegram/... +``` + +**Step 3: Commit** + +```bash +git add telegram/intent/parser.go +git commit -m "feat(telegram): add LLM intent parser" +``` + +--- + +### Task 6: 业务处理 telegram/handler/handler.go + +**Files:** +- Create: `telegram/handler/handler.go` + +handler 只调 service/ 和 intent/,不直接碰 store/manager。 + +**Step 1: 创建文件** + +```go +package handler + +import ( + "fmt" + "nofx/telegram/intent" + "nofx/telegram/service" + "nofx/telegram/session" + "strings" +) + +// Handler dispatches parsed intents to the right operation +type Handler struct { + svc *service.NofxService + parser *intent.Parser + sessions *session.Manager +} + +func New(svc *service.NofxService, parser *intent.Parser, sessions *session.Manager) *Handler { + return &Handler{svc: svc, parser: parser, sessions: sessions} +} + +// Handle processes a user message and returns the bot reply +func (h *Handler) Handle(chatID int64, userMessage string) string { + sess := h.sessions.Get(chatID) + + // Record user message in memory + sess.Memory.Add("user", userMessage) + + // Build conversation context for LLM + ctx := sess.Memory.BuildContext() + + // Parse intent via LLM + parsed, err := h.parser.Parse(userMessage, ctx) + if err != nil { + return "❌ 解析失败,请重试" + } + + // Merge newly extracted params into session + for k, v := range parsed.Params { + sess.Params[k] = v + } + + // If there are missing params, ask user + if len(parsed.Missing) > 0 { + sess.Intent = session.Intent(parsed.Action) + reply := parsed.Reply + sess.Memory.Add("assistant", reply) + return reply + } + + // Execute the action + reply := h.execute(sess, parsed) + sess.Memory.Add("assistant", reply) + sess.Reset() // clear intent after successful execution + return reply +} + +func (h *Handler) execute(sess *session.Session, parsed *intent.ParsedIntent) string { + params := sess.Params + + switch parsed.Action { + case "config_strategy": + return h.createStrategy(params) + + case "config_exchange": + return h.createExchange(params) + + case "config_model": + return h.createModel(params) + + case "query_positions": + return h.queryPositions(params) + + case "query_equity": + return h.queryEquity(params) + + case "control_start": + return h.startTrader(params) + + case "control_stop": + return h.stopTrader(params) + + case "update_prompt": + return h.updatePrompt(params) + + default: + return parsed.Reply + } +} + +func (h *Handler) createStrategy(params map[string]string) string { + name := params["name"] + if name == "" { + name = "我的策略" + } + // Build a minimal strategy config JSON from params + // Full StrategyConfig is complex; we start with essential fields + configJSON := buildStrategyConfigJSON(params) + strategy, err := h.svc.CreateStrategy(name, configJSON) + if err != nil { + return fmt.Sprintf("❌ 创建策略失败: %v", err) + } + return fmt.Sprintf("✅ 策略「%s」已创建(ID: %d)\n\n配置摘要:\n%s", strategy.Name, strategy.ID, formatParams(params)) +} + +func (h *Handler) createExchange(params map[string]string) string { + exType := params["exchange_type"] + apiKey := params["api_key"] + secretKey := params["secret_key"] + ex, err := h.svc.CreateExchange(exType, apiKey, secretKey) + if err != nil { + return fmt.Sprintf("❌ 配置交易所失败: %v", err) + } + return fmt.Sprintf("✅ %s 交易所已配置(ID: %d)", ex.ExchangeType, ex.ID) +} + +func (h *Handler) createModel(params map[string]string) string { + provider := params["provider"] + apiKey := params["api_key"] + model := params["model"] + m, err := h.svc.CreateModel(provider, apiKey, model) + if err != nil { + return fmt.Sprintf("❌ 配置大模型失败: %v", err) + } + return fmt.Sprintf("✅ %s (%s) 已配置(ID: %d)", m.Provider, m.Model, m.ID) +} + +func (h *Handler) queryPositions(params map[string]string) string { + traderID := params["trader_id"] + if traderID == "" { + traders, err := h.svc.ListTraders() + if err != nil || len(traders) == 0 { + return "❌ 没有找到交易员" + } + traderID = traders[0].ID + } + positions, err := h.svc.GetPositions(traderID) + if err != nil { + return fmt.Sprintf("❌ 查询持仓失败: %v", err) + } + if len(positions) == 0 { + return "📭 当前无持仓" + } + var sb strings.Builder + sb.WriteString("📊 当前持仓:\n") + for _, p := range positions { + sb.WriteString(fmt.Sprintf("• %s %s | 入场: %.4f | 未实现P&L: %.2f USDT\n", + p.Symbol, p.Side, p.EntryPrice, p.UnrealizedPnl)) + } + return sb.String() +} + +func (h *Handler) queryEquity(params map[string]string) string { + traders, err := h.svc.ListTraders() + if err != nil || len(traders) == 0 { + return "❌ 没有找到交易员" + } + traderID := params["trader_id"] + if traderID == "" { + traderID = traders[0].ID + } + eq, err := h.svc.GetEquitySummary(traderID) + if err != nil { + return fmt.Sprintf("❌ 查询余额失败: %v", err) + } + return fmt.Sprintf("💰 账户余额:%.2f USDT", eq.TotalBalance) +} + +func (h *Handler) startTrader(params map[string]string) string { + traderID := params["trader_id"] + if err := h.svc.StartTrader(traderID); err != nil { + return fmt.Sprintf("❌ 启动失败: %v", err) + } + return "✅ 交易员已启动" +} + +func (h *Handler) stopTrader(params map[string]string) string { + traderID := params["trader_id"] + if err := h.svc.StopTrader(traderID); err != nil { + return fmt.Sprintf("❌ 停止失败: %v", err) + } + return "✅ 交易员已停止" +} + +func (h *Handler) updatePrompt(params map[string]string) string { + // strategy_id must be numeric; convert from params + strategyIDStr := params["strategy_id"] + var strategyID uint + fmt.Sscanf(strategyIDStr, "%d", &strategyID) + prompt := params["prompt"] + if err := h.svc.UpdateStrategyPrompt(strategyID, prompt); err != nil { + return fmt.Sprintf("❌ 更新 Prompt 失败: %v", err) + } + return "✅ 策略 Prompt 已更新" +} + +// buildStrategyConfigJSON builds a minimal valid StrategyConfig JSON from params +func buildStrategyConfigJSON(params map[string]string) string { + coins := params["coins"] + if coins == "" { + coins = "BTC" + } + stopLoss := params["stop_loss_pct"] + if stopLoss == "" { + stopLoss = "5" + } + maxPos := params["max_position_pct"] + if maxPos == "" { + maxPos = "20" + } + indicators := params["indicators"] + + return fmt.Sprintf(`{ + "strategy_type": "ai_trading", + "coin_source": {"source_type": "static", "static_coins": [%q]}, + "indicators": {"enable_rsi": %v, "enable_macd": %v}, + "risk_control": {"stop_loss_pct": %s, "max_position_pct": %s} + }`, + coins, + strings.Contains(indicators, "RSI"), + strings.Contains(indicators, "MACD"), + stopLoss, + maxPos, + ) +} + +func formatParams(params map[string]string) string { + var sb strings.Builder + for k, v := range params { + if k == "api_key" || k == "secret_key" { + v = "***" + } + sb.WriteString(fmt.Sprintf(" %s: %s\n", k, v)) + } + return sb.String() +} +``` + +**监工补充:这里至少有 6 个会直接出错或行为错误的点** + +1. 当前写法会把“当前消息”重复注入 LLM 上下文。 + - `sess.Memory.Add("user", userMessage)` 已经把本轮消息写进历史 + - `parser.Parse(userMessage, ctx)` 又会把 `userMessage` 拼到 `conversationContext` 后面 + - 二选一修正:要么先 parse 再写 memory,要么 `Parse()` 不再重复追加当前消息 + +2. `store.TraderPosition` 没有 `UnrealizedPnl` 字段。 + - 首版查询持仓只能返回仓位基础信息,或另找真实未实现盈亏来源 + +3. `store.EquitySnapshot` 没有 `TotalBalance` 字段,真实字段是 `TotalEquity` + +4. `strategy.ID` 不是 `%d`,`AIModel` 也没有示例中的 `Model` 字段 + +5. `buildStrategyConfigJSON()` 示例不符合当前仓库真实 `StrategyConfig` + - `risk_control.stop_loss_pct` + - `risk_control.max_position_pct` + 这些都不是当前结构里的真实字段名 + - 首版如果做策略写入,必须基于 `store.GetDefaultStrategyConfig("zh")` 组装 + +6. `updatePrompt()` 不能直接调用“按数值 strategyID 更新顶层 prompt”的假接口 + - 真实实现应该更新 `Strategy.Config` 里的 `CustomPrompt` 或 prompt sections + - 或者先把首版 prompt 修改目标收缩为 `Trader().UpdateCustomPrompt(...)` + +**Step 2: Build 验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./telegram/... +``` + +**Step 3: Commit** + +```bash +git add telegram/handler/handler.go +git commit -m "feat(telegram): add intent handler with 6 feature areas" +``` + +--- + +### Task 7: Bot 入口 telegram/bot.go + +**Files:** +- Create: `telegram/bot.go` + +**Step 1: 创建文件** + +```go +package telegram + +import ( + "nofx/config" + "nofx/logger" + "nofx/manager" + "nofx/mcp" + "nofx/store" + "nofx/telegram/handler" + "nofx/telegram/intent" + "nofx/telegram/service" + "nofx/telegram/session" + + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" +) + +// Start initializes and runs the Telegram bot. +// Called from main.go as a goroutine. +func Start(cfg *config.Config, st *store.Store, tm *manager.TraderManager) { + if cfg.TelegramBotToken == "" { + logger.Info("📵 Telegram bot not configured (TELEGRAM_BOT_TOKEN not set), skipping") + return + } + + bot, err := tgbotapi.NewBotAPI(cfg.TelegramBotToken) + if err != nil { + logger.Errorf("❌ Failed to start Telegram bot: %v", err) + return + } + + logger.Infof("🤖 Telegram bot started: @%s", bot.Self.UserName) + + // Build the LLM client for intent parsing (use DeepSeek by default, same as backtest) + llmClient := mcp.New() + // Configure with whatever key is available in env (intent parsing is lightweight) + // The service layer will use store to get user-configured models for actual trading + + svc := service.New(st, tm) + parser := intent.NewParser(llmClient) + sessions := session.NewManager(llmClient) + h := handler.New(svc, parser, sessions) + + u := tgbotapi.NewUpdate(0) + u.Timeout = 60 + updates := bot.GetUpdatesChan(u) + + for update := range updates { + if update.Message == nil { + continue + } + + chatID := update.Message.Chat.ID + + // Access control: only allow configured admin chat ID + if cfg.TelegramAdminChatID != 0 && chatID != cfg.TelegramAdminChatID { + msg := tgbotapi.NewMessage(chatID, "⛔ 未授权访问") + bot.Send(msg) + continue + } + + text := update.Message.Text + if text == "" { + continue + } + + // Handle /start command + if text == "/start" { + sessions.Get(chatID).ResetFull() + reply := tgbotapi.NewMessage(chatID, welcomeMessage()) + bot.Send(reply) + continue + } + + // Process message + reply := h.Handle(chatID, text) + msg := tgbotapi.NewMessage(chatID, reply) + msg.ParseMode = "Markdown" + bot.Send(msg) + } +} + +func welcomeMessage() string { + return `👋 欢迎使用 NOFX 交易助手! + +你可以用自然语言配置和管理你的交易系统: + +📋 *配置功能* +• 「帮我创建一个 BTC 策略,RSI+MACD,止损 8%」 +• 「配置 Binance 交易所」 +• 「添加 DeepSeek 大模型」 +• 「创建一个交易员」 + +📊 *查询功能* +• 「查看当前持仓」 +• 「查看账户余额」 + +⚙️ *控制功能* +• 「启动交易员」 +• 「停止交易员」 +• 「修改策略 Prompt」 + +输入 /start 重置会话` +} +``` + +**监工补充:本节伪代码需要先修正两个问题** + +1. `mcp.New()` 在当前仓库里不存在,必须改成真实可用的构造器 +2. `msg.ParseMode = "Markdown"` 首版不要开,先用纯文本,避免用户内容触发格式错误或意外转义 + +**Step 2: Build 验证** + +```bash +cd /Users/yida/gopro/open-nofx && go build ./telegram/... +``` + +**Step 3: Commit** + +```bash +git add telegram/bot.go +git commit -m "feat(telegram): add Telegram bot entry point with access control" +``` + +--- + +### Task 8: 接入 main.go(3 行改动) + +**Files:** +- Modify: `main.go` + +**Step 1: 加 import** + +在 main.go 的 import 块加: + +```go +"nofx/telegram" +``` + +**Step 2: 在 API Server 启动之后加 3 行** + +找到这段代码: +```go +// Start API server +server := api.NewServer(...) +go func() { ... }() +``` + +在其后加: + +```go +// Start Telegram bot (if configured) +go telegram.Start(cfg, st, traderManager) +logger.Info("🤖 Telegram bot goroutine started") +``` + +**Step 3: 完整构建** + +```bash +cd /Users/yida/gopro/open-nofx && go build -o nofx . +``` + +Expected: 成功编译,无错误 + +**Step 4: Commit** + +```bash +git add main.go +git commit -m "feat(telegram): wire Telegram bot into main startup (3 lines)" +``` + +--- + +### Task 9: .env.example 文档更新 + +**Files:** +- Modify: `.env.example` 或 `.env`(若存在) + +**Step 1: 在 .env.example 末尾加** + +```env +# Telegram Bot Configuration +# Get token from @BotFather on Telegram +TELEGRAM_BOT_TOKEN= +# Get your chat ID from @userinfobot on Telegram +TELEGRAM_ADMIN_CHAT_ID= +``` + +**Step 2: Commit** + +```bash +git add .env.example +git commit -m "docs: add Telegram bot configuration to .env.example" +``` + +--- + +### Task 10: 手动集成测试 + +**Step 1: 配置环境变量** + +```bash +export TELEGRAM_BOT_TOKEN=你的bot_token +export TELEGRAM_ADMIN_CHAT_ID=你的chat_id +``` + +**Step 2: 启动 NOFX** + +```bash +cd /Users/yida/gopro/open-nofx && ./nofx +``` + +Expected 日志: +``` +✅ Configuration loaded +🤖 Telegram bot started: @your_bot_name +✅ System started successfully +``` + +**Step 3: 测试对话流程** + +在 Telegram 发送: +1. `/start` → 收到欢迎消息 +2. `查看当前持仓` → 返回持仓信息或「无持仓」 +3. `帮我创建一个 BTC 策略,RSI+MACD,止损 8%` → Bot 追问策略名 +4. `叫"主力BTC"` → 策略创建成功 + +**Step 4: 验证访问控制** + +用其他账号发送消息 → 收到「⛔ 未授权访问」 + +--- + +## 关键约束备忘 + +1. **`service/nofx.go` 是唯一接触 store/manager 的文件**,handler 不能绕过它 +2. **compaction 静默发生**,用户看不到压缩过程 +3. **LLM 客户端必须使用真实存在的构造器**,不能写 `mcp.New()` +4. **当前仓库的 `store` / `manager` 接口与本文示例存在偏差**,实现时必须以源码为准 +5. **首轮目标是“最小可用闭环”而不是功能铺满**,先交付查询与启停,再扩到配置写入 + +## 监工验收清单 + +1. `go build ./telegram/...` 成功 +2. `go build ./...` 成功 +3. 未授权 chat 收到拒绝消息,且不会进入业务逻辑 +4. `/start` 后会话状态确实被清空,且重置语义与代码一致 +5. 启动/停止交易员的行为与现有 HTTP API 一致 +6. 没有任何日志或回复泄露密钥、私钥、passphrase +7. 查询接口用到的字段名全部来自真实 struct,而不是文档猜测 + +## 后续可扩展 + +- 主动推送:NOFX 交易决策 → 推送到 Telegram +- 多语言:intent parser 的 systemPrompt 支持英文 +- 图表:发送持仓/权益曲线截图(需 TradingView Lightweight Charts 截图服务) diff --git a/main.go b/main.go index a0987f81..5758d4fb 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,7 @@ import ( "nofx/manager" "nofx/mcp" "nofx/store" + "nofx/telegram" "os" "os/signal" "path/filepath" @@ -130,12 +131,21 @@ func main() { // Start API server server := api.NewServer(traderManager, st, cryptoService, backtestManager, cfg.APIServerPort) + + // Create hot-reload channel for Telegram bot; wire it to the API server + // so that POST /api/telegram can trigger a bot restart when the token changes. + telegramReloadCh := make(chan struct{}, 1) + server.SetTelegramReloadCh(telegramReloadCh) + go func() { if err := server.Start(); err != nil { logger.Fatalf("❌ Failed to start API server: %v", err) } }() + // Start Telegram bot (if TELEGRAM_BOT_TOKEN is configured) + go telegram.Start(cfg, st, telegramReloadCh) + // Wait for interrupt signal quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) diff --git a/mcp/blockrun_base.go b/mcp/blockrun_base.go index 89ecf561..c97efa4a 100644 --- a/mcp/blockrun_base.go +++ b/mcp/blockrun_base.go @@ -1,14 +1,12 @@ package mcp import ( - "bytes" "crypto/ecdsa" "crypto/rand" "encoding/base64" "encoding/hex" "encoding/json" "fmt" - "io" "math/big" "net/http" "strings" @@ -97,120 +95,24 @@ func (c *BlockRunBaseClient) SetAPIKey(apiKey string, customURL string, customMo } } -func (c *BlockRunBaseClient) setAuthHeader(reqHeaders http.Header) { - // No Bearer token — payment is via x402 signing -} +func (c *BlockRunBaseClient) setAuthHeader(h http.Header) { x402SetAuthHeader(h) } -// call overrides the base call to handle HTTP 402 x402 v2 payment flow. func (c *BlockRunBaseClient) call(systemPrompt, userPrompt string) (string, error) { - c.logger.Infof("📡 [BlockRun Base] Request AI Server: %s", c.BaseURL) - - requestBody := c.hooks.buildMCPRequestBody(systemPrompt, userPrompt) - jsonData, err := c.hooks.marshalRequestBody(requestBody) - if err != nil { - return "", err - } - - url := c.hooks.buildUrl() - req, err := c.hooks.buildRequest(url, jsonData) - if err != nil { - return "", fmt.Errorf("failed to create request: %w", err) - } - - resp, err := c.httpClient.Do(req) - if err != nil { - return "", fmt.Errorf("failed to send request: %w", err) - } - defer resp.Body.Close() - - // Handle x402 v2 Payment Required - if resp.StatusCode == http.StatusPaymentRequired { - paymentHeader := resp.Header.Get("X-Payment-Required") - if paymentHeader == "" { - return "", fmt.Errorf("received 402 but no X-Payment-Required header") - } - - paymentSig, err := c.signPayment(paymentHeader) - if err != nil { - return "", fmt.Errorf("failed to sign x402 payment: %w", err) - } - - req2, err := c.hooks.buildRequest(url, jsonData) - if err != nil { - return "", fmt.Errorf("failed to build retry request: %w", err) - } - req2.Header.Set("X-Payment", paymentSig) - - resp2, err := c.httpClient.Do(req2) - if err != nil { - return "", fmt.Errorf("failed to send payment retry: %w", err) - } - defer resp2.Body.Close() - - body2, err := io.ReadAll(resp2.Body) - if err != nil { - return "", fmt.Errorf("failed to read payment retry response: %w", err) - } - if resp2.StatusCode != http.StatusOK { - return "", fmt.Errorf("BlockRun payment retry failed (status %d): %s", resp2.StatusCode, string(body2)) - } - return c.hooks.parseMCPResponse(body2) - } - - body, err := io.ReadAll(resp.Body) - if err != nil { - return "", fmt.Errorf("failed to read response: %w", err) - } - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("BlockRun API error (status %d): %s", resp.StatusCode, string(body)) - } - return c.hooks.parseMCPResponse(body) + return x402Call(c.Client, c.signPayment, "BlockRun Base", systemPrompt, userPrompt) } -// x402v2PaymentRequired is the structure of the X-Payment-Required header (x402 v2). -type x402v2PaymentRequired struct { - X402Version int `json:"x402Version"` - Accepts []struct { - Scheme string `json:"scheme"` - Network string `json:"network"` - Amount string `json:"amount"` - Asset string `json:"asset"` - PayTo string `json:"payTo"` - MaxTimeoutSeconds int `json:"maxTimeoutSeconds"` - Extra map[string]string `json:"extra"` - } `json:"accepts"` - Resource *struct { - URL string `json:"url"` - Description string `json:"description"` - MimeType string `json:"mimeType"` - } `json:"resource"` +func (c *BlockRunBaseClient) CallWithRequestFull(req *Request) (*LLMResponse, error) { + return x402CallFull(c.Client, c.signPayment, "BlockRun Base", req) } -// signPayment parses the X-Payment-Required header (x402 v2) and returns a signed X-Payment value. +// signPayment parses the Payment-Required header (x402 v2) and returns a signed payment value. func (c *BlockRunBaseClient) signPayment(paymentHeaderB64 string) (string, error) { - if c.privateKey == nil { - return "", fmt.Errorf("no private key set for BlockRun Base wallet") - } + return signBasePaymentHeader(c.privateKey, paymentHeaderB64, "BlockRun Base") +} - // Decode base64 → JSON - decoded, err := base64.RawStdEncoding.DecodeString(paymentHeaderB64) - if err != nil { - decoded, err = base64.StdEncoding.DecodeString(paymentHeaderB64) - if err != nil { - return "", fmt.Errorf("failed to base64-decode payment header: %w", err) - } - } - - var req x402v2PaymentRequired - if err := json.Unmarshal(decoded, &req); err != nil { - return "", fmt.Errorf("failed to parse x402 v2 payment header: %w", err) - } - - if len(req.Accepts) == 0 { - return "", fmt.Errorf("no payment options in x402 response") - } - - opt := req.Accepts[0] +// signX402Payment is the shared EIP-712 signing logic for x402 v2 on Base USDC. +// Used by both BlockRunBaseClient and Claw402Client. +func signX402Payment(privateKey *ecdsa.PrivateKey, senderAddr string, opt x402AcceptOption, resource *x402Resource) (string, error) { recipient := opt.PayTo amount := opt.Amount network := opt.Network @@ -224,28 +126,22 @@ func (c *BlockRunBaseClient) signPayment(paymentHeaderB64 string) (string, error resourceURL := "" resourceDesc := "" resourceMime := "application/json" - if req.Resource != nil { - resourceURL = req.Resource.URL - resourceDesc = req.Resource.Description - resourceMime = req.Resource.MimeType + if resource != nil { + resourceURL = resource.URL + resourceDesc = resource.Description + resourceMime = resource.MimeType } - // Timestamps: validAfter = now-600 (clock skew), validBefore = now+maxTimeout now := time.Now().Unix() - validAfter := now - 600 + validAfter := int64(0) validBefore := now + int64(maxTimeout) - // Random nonce (bytes32) nonceBytes := make([]byte, 32) if _, err := rand.Read(nonceBytes); err != nil { return "", fmt.Errorf("failed to generate nonce: %w", err) } nonce := "0x" + hex.EncodeToString(nonceBytes) - // Sender address - senderAddr := crypto.PubkeyToAddress(c.privateKey.PublicKey).Hex() - - // Build EIP-712 domain separator domainName := "USD Coin" domainVersion := "2" if extra != nil { @@ -262,7 +158,6 @@ func (c *BlockRunBaseClient) signPayment(paymentHeaderB64 string) (string, error return "", fmt.Errorf("failed to build domain separator: %w", err) } - // Build struct hash amountBig, err := parseBigInt(amount) if err != nil { return "", fmt.Errorf("invalid amount: %w", err) @@ -273,26 +168,22 @@ func (c *BlockRunBaseClient) signPayment(paymentHeaderB64 string) (string, error return "", fmt.Errorf("failed to build struct hash: %w", err) } - // EIP-712 digest digest := make([]byte, 0, 66) digest = append(digest, 0x19, 0x01) digest = append(digest, domainSeparator...) digest = append(digest, structHash...) hash := keccak256Bytes(digest) - // Sign with secp256k1 - sig, err := crypto.Sign(hash, c.privateKey) + sig, err := crypto.Sign(hash, privateKey) if err != nil { return "", fmt.Errorf("failed to sign: %w", err) } - // Adjust V: go-ethereum returns 0/1, EIP-712 expects 27/28 if sig[64] < 27 { sig[64] += 27 } sigHex := "0x" + hex.EncodeToString(sig) - // Build x402 v2 payment payload paymentData := map[string]interface{}{ "x402Version": 2, "resource": map[string]string{ @@ -419,10 +310,14 @@ func hexToBytes32(s string) ([]byte, error) { } func parseBigInt(s string) (*big.Int, error) { - s = strings.TrimPrefix(s, "0x") n := new(big.Int) - if _, ok := n.SetString(s, 16); ok { - return n, nil + // Only treat as hex when explicitly prefixed with 0x/0X. + // x402 amounts are always decimal strings (e.g. "3000" = 0.003 USDC). + if strings.HasPrefix(s, "0x") || strings.HasPrefix(s, "0X") { + if _, ok := n.SetString(s[2:], 16); ok { + return n, nil + } + return nil, fmt.Errorf("cannot parse hex big.Int from %q", s) } if _, ok := n.SetString(s, 10); ok { return n, nil @@ -445,12 +340,6 @@ func (c *BlockRunBaseClient) buildUrl() string { return DefaultBlockRunBaseURL + BlockRunChatEndpoint } -// buildRequest creates the HTTP request without an Authorization header. func (c *BlockRunBaseClient) buildRequest(url string, jsonData []byte) (*http.Request, error) { - req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) - if err != nil { - return nil, fmt.Errorf("fail to build request: %w", err) - } - req.Header.Set("Content-Type", "application/json") - return req, nil + return x402BuildRequest(url, jsonData) } diff --git a/mcp/blockrun_sol.go b/mcp/blockrun_sol.go index 03dab8ec..cb88636e 100644 --- a/mcp/blockrun_sol.go +++ b/mcp/blockrun_sol.go @@ -1,12 +1,10 @@ package mcp import ( - "bytes" "context" "encoding/base64" "encoding/json" "fmt" - "io" "net/http" "strings" @@ -76,120 +74,34 @@ func (c *BlockRunSolClient) SetAPIKey(apiKey string, customURL string, customMod } } -func (c *BlockRunSolClient) setAuthHeader(reqHeaders http.Header) { - // No Bearer token — payment is via x402 signing -} +func (c *BlockRunSolClient) setAuthHeader(h http.Header) { x402SetAuthHeader(h) } -// call overrides the base call to handle HTTP 402 x402 v2 Solana payment flow. func (c *BlockRunSolClient) call(systemPrompt, userPrompt string) (string, error) { - c.logger.Infof("📡 [BlockRun Sol] Request AI Server: %s", c.BaseURL) - - requestBody := c.hooks.buildMCPRequestBody(systemPrompt, userPrompt) - jsonData, err := c.hooks.marshalRequestBody(requestBody) - if err != nil { - return "", err - } - - url := c.hooks.buildUrl() - req, err := c.hooks.buildRequest(url, jsonData) - if err != nil { - return "", fmt.Errorf("failed to create request: %w", err) - } - - resp, err := c.httpClient.Do(req) - if err != nil { - return "", fmt.Errorf("failed to send request: %w", err) - } - defer resp.Body.Close() - - // Handle x402 v2 Payment Required - if resp.StatusCode == http.StatusPaymentRequired { - paymentHeader := resp.Header.Get("X-Payment-Required") - if paymentHeader == "" { - return "", fmt.Errorf("received 402 but no X-Payment-Required header") - } - - paymentSig, err := c.signSolanaPayment(paymentHeader) - if err != nil { - return "", fmt.Errorf("failed to sign Solana x402 payment: %w", err) - } - - req2, err := c.hooks.buildRequest(url, jsonData) - if err != nil { - return "", fmt.Errorf("failed to build retry request: %w", err) - } - req2.Header.Set("X-Payment", paymentSig) - - resp2, err := c.httpClient.Do(req2) - if err != nil { - return "", fmt.Errorf("failed to send payment retry: %w", err) - } - defer resp2.Body.Close() - - body2, err := io.ReadAll(resp2.Body) - if err != nil { - return "", fmt.Errorf("failed to read payment retry response: %w", err) - } - if resp2.StatusCode != http.StatusOK { - return "", fmt.Errorf("BlockRun Sol payment retry failed (status %d): %s", resp2.StatusCode, string(body2)) - } - return c.hooks.parseMCPResponse(body2) - } - - body, err := io.ReadAll(resp.Body) - if err != nil { - return "", fmt.Errorf("failed to read response: %w", err) - } - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("BlockRun Sol API error (status %d): %s", resp.StatusCode, string(body)) - } - return c.hooks.parseMCPResponse(body) + return x402Call(c.Client, c.signSolanaPayment, "BlockRun Sol", systemPrompt, userPrompt) } -// solanaPaymentOption is an entry in the accepts[] array of the x402 v2 response. -type solanaPaymentOption struct { - Scheme string `json:"scheme"` - Network string `json:"network"` - Amount string `json:"amount"` - Asset string `json:"asset"` - PayTo string `json:"payTo"` - MaxTimeoutSeconds int `json:"maxTimeoutSeconds"` - Extra map[string]string `json:"extra"` +func (c *BlockRunSolClient) CallWithRequestFull(req *Request) (*LLMResponse, error) { + return x402CallFull(c.Client, c.signSolanaPayment, "BlockRun Sol", req) } -// x402v2SolanaRequired is the parsed X-Payment-Required header for Solana. -type x402v2SolanaRequired struct { - X402Version int `json:"x402Version"` - Accepts []solanaPaymentOption `json:"accepts"` - Resource *struct { - URL string `json:"url"` - Description string `json:"description"` - MimeType string `json:"mimeType"` - } `json:"resource"` -} - -// signSolanaPayment parses the X-Payment-Required header and builds a signed x402 v2 Solana payload. +// signSolanaPayment parses the Payment-Required header and builds a signed x402 v2 Solana payload. func (c *BlockRunSolClient) signSolanaPayment(paymentHeaderB64 string) (string, error) { if c.keypair == nil { return "", fmt.Errorf("no private key set for BlockRun Sol wallet") } - // Decode base64 → JSON - decoded, err := base64.RawStdEncoding.DecodeString(paymentHeaderB64) + decoded, err := x402DecodeHeader(paymentHeaderB64) if err != nil { - decoded, err = base64.StdEncoding.DecodeString(paymentHeaderB64) - if err != nil { - return "", fmt.Errorf("failed to base64-decode payment header: %w", err) - } + return "", err } - var req x402v2SolanaRequired + var req x402v2PaymentRequired if err := json.Unmarshal(decoded, &req); err != nil { return "", fmt.Errorf("failed to parse x402 v2 Solana header: %w", err) } // Find the Solana option - var opt *solanaPaymentOption + var opt *x402AcceptOption for i := range req.Accepts { if strings.HasPrefix(req.Accepts[i].Network, "solana:") { opt = &req.Accepts[i] @@ -360,12 +272,6 @@ func (c *BlockRunSolClient) buildUrl() string { return DefaultBlockRunSolURL + BlockRunChatEndpoint } -// buildRequest creates the HTTP request without an Authorization header. func (c *BlockRunSolClient) buildRequest(url string, jsonData []byte) (*http.Request, error) { - req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) - if err != nil { - return nil, fmt.Errorf("fail to build request: %w", err) - } - req.Header.Set("Content-Type", "application/json") - return req, nil + return x402BuildRequest(url, jsonData) } diff --git a/mcp/claude_client.go b/mcp/claude_client.go index 6b277e4a..d91bdb81 100644 --- a/mcp/claude_client.go +++ b/mcp/claude_client.go @@ -1,3 +1,19 @@ +// Package mcp — ClaudeClient implements the Anthropic Messages API. +// +// Wire-format differences from the OpenAI-compatible base Client: +// +// ┌─────────────────────┬───────────────────────────┬─────────────────────────────────┐ +// │ Concept │ OpenAI format │ Anthropic format │ +// ├─────────────────────┼───────────────────────────┼─────────────────────────────────┤ +// │ Endpoint │ /v1/chat/completions │ /v1/messages │ +// │ Auth header │ Authorization: Bearer xxx │ x-api-key: xxx │ +// │ System prompt │ messages[0] role=system │ top-level "system" field │ +// │ Tool definition │ type=function + parameters │ name + description + input_schema│ +// │ Tool choice │ "auto" (string) │ {"type":"auto"} (object) │ +// │ Assistant tool call │ tool_calls array │ content[{type:tool_use,...}] │ +// │ Tool result │ role=tool + tool_call_id │ role=user content[tool_result] │ +// │ Max tokens │ max_tokens │ max_tokens (same) │ +// └─────────────────────┴───────────────────────────┴─────────────────────────────────┘ package mcp import ( @@ -12,75 +28,64 @@ const ( DefaultClaudeModel = "claude-opus-4-6" ) +// ClaudeClient wraps the base Client and overrides the methods that differ +// for the Anthropic Messages API. All other behaviour (retry, timeout, +// logging) is inherited unchanged. type ClaudeClient struct { *Client } -// NewClaudeClient creates Claude client (backward compatible) +// NewClaudeClient creates a ClaudeClient with default settings. func NewClaudeClient() AIClient { return NewClaudeClientWithOptions() } -// NewClaudeClientWithOptions creates Claude client (supports options pattern) +// NewClaudeClientWithOptions creates a ClaudeClient with optional overrides. func NewClaudeClientWithOptions(opts ...ClientOption) AIClient { - // 1. Create Claude preset options - claudeOpts := []ClientOption{ + baseClient := NewClient(append([]ClientOption{ WithProvider(ProviderClaude), WithModel(DefaultClaudeModel), WithBaseURL(DefaultClaudeBaseURL), - } + }, opts...)...).(*Client) - // 2. Merge user options (user options have higher priority) - allOpts := append(claudeOpts, opts...) - - // 3. Create base client - baseClient := NewClient(allOpts...).(*Client) - - // 4. Create Claude client - claudeClient := &ClaudeClient{ - Client: baseClient, - } - - // 5. Set hooks to point to ClaudeClient (implement dynamic dispatch) - baseClient.hooks = claudeClient - - return claudeClient + c := &ClaudeClient{Client: baseClient} + baseClient.hooks = c // wire dynamic dispatch to ClaudeClient + return c } -func (c *ClaudeClient) SetAPIKey(apiKey string, customURL string, customModel string) { - c.APIKey = apiKey +// ── Hook overrides ──────────────────────────────────────────────────────────── +// SetAPIKey stores credentials and optional custom endpoint / model. +func (c *ClaudeClient) SetAPIKey(apiKey, customURL, customModel string) { + c.APIKey = apiKey if len(apiKey) > 8 { c.logger.Infof("🔧 [MCP] Claude API Key: %s...%s", apiKey[:4], apiKey[len(apiKey)-4:]) } if customURL != "" { c.BaseURL = customURL - c.logger.Infof("🔧 [MCP] Claude using custom BaseURL: %s", customURL) - } else { - c.logger.Infof("🔧 [MCP] Claude using default BaseURL: %s", c.BaseURL) + c.logger.Infof("🔧 [MCP] Claude BaseURL: %s", customURL) } if customModel != "" { c.Model = customModel - c.logger.Infof("🔧 [MCP] Claude using custom Model: %s", customModel) - } else { - c.logger.Infof("🔧 [MCP] Claude using default Model: %s", c.Model) + c.logger.Infof("🔧 [MCP] Claude Model: %s", customModel) } } -// setAuthHeader Claude uses x-api-key header instead of Authorization Bearer -func (c *ClaudeClient) setAuthHeader(reqHeaders http.Header) { - reqHeaders.Set("x-api-key", c.APIKey) - reqHeaders.Set("anthropic-version", "2023-06-01") +// setAuthHeader uses x-api-key instead of Authorization: Bearer. +func (c *ClaudeClient) setAuthHeader(h http.Header) { + h.Set("x-api-key", c.APIKey) + h.Set("anthropic-version", "2023-06-01") } -// buildUrl Claude uses /messages endpoint +// buildUrl targets /messages instead of /chat/completions. func (c *ClaudeClient) buildUrl() string { return fmt.Sprintf("%s/messages", c.BaseURL) } -// buildMCPRequestBody Claude has different request format +// buildMCPRequestBody builds the Anthropic wire format for the simple +// CallWithMessages path (no tool support). func (c *ClaudeClient) buildMCPRequestBody(systemPrompt, userPrompt string) map[string]any { - requestBody := map[string]any{ + return map[string]any{ "model": c.Model, "max_tokens": c.MaxTokens, "system": systemPrompt, @@ -88,16 +93,175 @@ func (c *ClaudeClient) buildMCPRequestBody(systemPrompt, userPrompt string) map[ {"role": "user", "content": userPrompt}, }, } - - return requestBody } -// parseMCPResponse Claude has different response format +// buildRequestBodyFromRequest converts a *Request into the Anthropic Messages +// API wire format. This is the key override that makes tool calling work +// correctly with Claude. +// +// Conversions applied: +// +// - System messages are lifted to the top-level "system" field. +// - Tool definitions: parameters → input_schema, wrapper removed. +// - Assistant messages with ToolCalls → content[{type:tool_use,...}]. +// - Tool result messages (role=tool) → role=user with tool_result blocks. +// Consecutive tool results are merged into a single user turn (Anthropic +// requires strictly alternating user/assistant turns). +// - tool_choice "auto"/"any" → {"type":"auto"/"any"} object. +func (c *ClaudeClient) buildRequestBodyFromRequest(req *Request) map[string]any { + // ── 1. Separate system prompt from conversation messages ────────────────── + var systemPrompt string + var convMsgs []Message + for _, m := range req.Messages { + if m.Role == "system" { + systemPrompt = m.Content + } else { + convMsgs = append(convMsgs, m) + } + } + + // ── 2. Convert messages to Anthropic format ─────────────────────────────── + anthropicMsgs := convertMessagesToAnthropic(convMsgs) + + // ── 3. Convert tool definitions (parameters → input_schema) ────────────── + var anthropicTools []map[string]any + for _, t := range req.Tools { + anthropicTools = append(anthropicTools, map[string]any{ + "name": t.Function.Name, + "description": t.Function.Description, + "input_schema": t.Function.Parameters, + }) + } + + // ── 4. Assemble request body ────────────────────────────────────────────── + body := map[string]any{ + "model": req.Model, + "max_tokens": c.MaxTokens, + "system": systemPrompt, + "messages": anthropicMsgs, + } + + if len(anthropicTools) > 0 { + body["tools"] = anthropicTools + } + + // tool_choice: Anthropic uses an object, not a string. + switch req.ToolChoice { + case "auto": + body["tool_choice"] = map[string]any{"type": "auto"} + case "any": + body["tool_choice"] = map[string]any{"type": "any"} + case "none", "": + // omit — no tool_choice sent + } + + if req.Temperature != nil { + body["temperature"] = *req.Temperature + } + + return body +} + +// convertMessagesToAnthropic translates from the OpenAI-shaped mcp.Message +// slice to Anthropic's messages array. +// +// Rules: +// 1. role=assistant + ToolCalls → role=assistant, content=[tool_use, ...] +// 2. role=tool (result) → role=user, content=[tool_result, ...] +// Consecutive tool-result messages are merged into one user turn so the +// conversation always alternates user/assistant. +// 3. All other messages → {role, content} as-is. +func convertMessagesToAnthropic(msgs []Message) []map[string]any { + var out []map[string]any + + for i := 0; i < len(msgs); { + msg := msgs[i] + + switch { + // ── Assistant message carrying tool calls ───────────────────────────── + case msg.Role == "assistant" && len(msg.ToolCalls) > 0: + var blocks []map[string]any + for _, tc := range msg.ToolCalls { + // Arguments are a JSON string; Claude wants a parsed object. + var input map[string]any + if err := json.Unmarshal([]byte(tc.Function.Arguments), &input); err != nil { + input = map[string]any{"_raw": tc.Function.Arguments} + } + blocks = append(blocks, map[string]any{ + "type": "tool_use", + "id": tc.ID, + "name": tc.Function.Name, + "input": input, + }) + } + out = append(out, map[string]any{ + "role": "assistant", + "content": blocks, + }) + i++ + + // ── Tool result message(s) → single user turn ───────────────────────── + case msg.Role == "tool": + // Collect all consecutive tool-result messages. + var blocks []map[string]any + for i < len(msgs) && msgs[i].Role == "tool" { + blocks = append(blocks, map[string]any{ + "type": "tool_result", + "tool_use_id": msgs[i].ToolCallID, + "content": msgs[i].Content, + }) + i++ + } + out = append(out, map[string]any{ + "role": "user", + "content": blocks, + }) + + // ── Regular user / assistant text message ───────────────────────────── + default: + out = append(out, map[string]any{ + "role": msg.Role, + "content": msg.Content, + }) + i++ + } + } + + return out +} + +// ── Response parsers ────────────────────────────────────────────────────────── + +// parseMCPResponse extracts the plain-text reply from an Anthropic response. +// Used by CallWithMessages / CallWithRequest (no tool support). func (c *ClaudeClient) parseMCPResponse(body []byte) (string, error) { - var response struct { + r, err := c.parseMCPResponseFull(body) + if err != nil { + return "", err + } + return r.Content, nil +} + +// parseMCPResponseFull extracts both text and tool calls from an Anthropic +// response envelope. +// +// Anthropic response shape: +// +// { +// "content": [ +// {"type": "text", "text": "..."}, +// {"type": "tool_use", "id": "...", "name": "...", "input": {...}} +// ], +// "stop_reason": "tool_use" | "end_turn" +// } +func (c *ClaudeClient) parseMCPResponseFull(body []byte) (*LLMResponse, error) { + var raw struct { Content []struct { - Type string `json:"type"` - Text string `json:"text"` + Type string `json:"type"` + Text string `json:"text,omitempty"` + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + Input json.RawMessage `json:"input,omitempty"` } `json:"content"` Usage struct { InputTokens int `json:"input_tokens"` @@ -109,36 +273,46 @@ func (c *ClaudeClient) parseMCPResponse(body []byte) (string, error) { } `json:"error"` } - if err := json.Unmarshal(body, &response); err != nil { - return "", fmt.Errorf("failed to parse Claude response: %w, body: %s", err, string(body)) + if err := json.Unmarshal(body, &raw); err != nil { + return nil, fmt.Errorf("failed to parse Anthropic response: %w — body: %s", err, body) + } + if raw.Error != nil { + return nil, fmt.Errorf("Anthropic API error: %s — %s", raw.Error.Type, raw.Error.Message) } - if response.Error != nil { - return "", fmt.Errorf("Claude API error: %s - %s", response.Error.Type, response.Error.Message) - } - - if len(response.Content) == 0 { - return "", fmt.Errorf("Claude returned empty content, body: %s", string(body)) - } - - // Report token usage if callback is set - totalTokens := response.Usage.InputTokens + response.Usage.OutputTokens - if TokenUsageCallback != nil && totalTokens > 0 { + total := raw.Usage.InputTokens + raw.Usage.OutputTokens + if TokenUsageCallback != nil && total > 0 { TokenUsageCallback(TokenUsage{ Provider: c.Provider, Model: c.Model, - PromptTokens: response.Usage.InputTokens, - CompletionTokens: response.Usage.OutputTokens, - TotalTokens: totalTokens, + PromptTokens: raw.Usage.InputTokens, + CompletionTokens: raw.Usage.OutputTokens, + TotalTokens: total, }) } - // Find text content - for _, content := range response.Content { - if content.Type == "text" { - return content.Text, nil + result := &LLMResponse{} + for _, block := range raw.Content { + switch block.Type { + case "text": + result.Content = block.Text + + case "tool_use": + // Input is a JSON object; serialise back to a JSON string so it + // matches the ToolCallFunction.Arguments field (always a string). + argsJSON, err := json.Marshal(block.Input) + if err != nil { + argsJSON = []byte("{}") + } + result.ToolCalls = append(result.ToolCalls, ToolCall{ + ID: block.ID, + Type: "function", + Function: ToolCallFunction{ + Name: block.Name, + Arguments: string(argsJSON), + }, + }) } } - - return "", fmt.Errorf("no text content in Claude response") + return result, nil } diff --git a/mcp/claude_client_test.go b/mcp/claude_client_test.go new file mode 100644 index 00000000..268c2849 --- /dev/null +++ b/mcp/claude_client_test.go @@ -0,0 +1,248 @@ +package mcp + +import ( + "encoding/json" + "net/http" + "testing" +) + +// ── buildRequestBodyFromRequest ──────────────────────────────────────────────── + +func TestClaudeClient_BuildRequestBody_SystemPromptLifted(t *testing.T) { + c := newTestClaudeClient() + req := &Request{ + Model: "claude-opus-4-6", + Messages: []Message{ + {Role: "system", Content: "You are helpful."}, + {Role: "user", Content: "Hello"}, + }, + } + body := c.buildRequestBodyFromRequest(req) + + if body["system"] != "You are helpful." { + t.Errorf("system not lifted to top level: %v", body["system"]) + } + msgs := body["messages"].([]map[string]any) + if len(msgs) != 1 || msgs[0]["role"] != "user" { + t.Errorf("system message should be removed from messages array: %v", msgs) + } +} + +func TestClaudeClient_BuildRequestBody_ToolsUseInputSchema(t *testing.T) { + c := newTestClaudeClient() + req := &Request{ + Model: "claude-opus-4-6", + Messages: []Message{{Role: "user", Content: "hi"}}, + Tools: []Tool{{ + Type: "function", + Function: FunctionDef{ + Name: "my_tool", + Description: "does stuff", + Parameters: map[string]any{"type": "object"}, + }, + }}, + } + body := c.buildRequestBodyFromRequest(req) + + tools, ok := body["tools"].([]map[string]any) + if !ok || len(tools) != 1 { + t.Fatalf("tools not set correctly: %v", body["tools"]) + } + tool := tools[0] + if tool["name"] != "my_tool" { + t.Errorf("tool name wrong: %v", tool["name"]) + } + if tool["input_schema"] == nil { + t.Error("tool must use input_schema, not parameters") + } + if _, hasParams := tool["parameters"]; hasParams { + t.Error("tool must NOT have parameters key (Anthropic uses input_schema)") + } +} + +func TestClaudeClient_BuildRequestBody_ToolChoiceObject(t *testing.T) { + c := newTestClaudeClient() + req := &Request{ + Model: "claude-opus-4-6", + Messages: []Message{{Role: "user", Content: "hi"}}, + ToolChoice: "auto", + } + body := c.buildRequestBodyFromRequest(req) + + tc, ok := body["tool_choice"].(map[string]any) + if !ok { + t.Fatalf("tool_choice must be an object, got: %T %v", body["tool_choice"], body["tool_choice"]) + } + if tc["type"] != "auto" { + t.Errorf("tool_choice.type must be 'auto', got: %v", tc["type"]) + } +} + +// ── convertMessagesToAnthropic ───────────────────────────────────────────────── + +func TestConvertMessages_AssistantToolCall(t *testing.T) { + msgs := []Message{ + { + Role: "assistant", + ToolCalls: []ToolCall{{ + ID: "tc1", + Type: "function", + Function: ToolCallFunction{Name: "api_request", Arguments: `{"method":"GET","path":"/api/x","body":{}}`}, + }}, + }, + } + out := convertMessagesToAnthropic(msgs) + + if len(out) != 1 { + t.Fatalf("expected 1 message, got %d", len(out)) + } + msg := out[0] + if msg["role"] != "assistant" { + t.Errorf("role should be assistant: %v", msg["role"]) + } + blocks := msg["content"].([]map[string]any) + if len(blocks) != 1 || blocks[0]["type"] != "tool_use" { + t.Errorf("content should be tool_use block: %v", blocks) + } + if blocks[0]["id"] != "tc1" { + t.Errorf("tool_use id wrong: %v", blocks[0]["id"]) + } + // Input must be parsed JSON object, not a string. + input, ok := blocks[0]["input"].(map[string]any) + if !ok { + t.Errorf("tool_use input must be map, got %T", blocks[0]["input"]) + } + if input["method"] != "GET" { + t.Errorf("input.method wrong: %v", input) + } +} + +func TestConvertMessages_ToolResultMergedIntoUserTurn(t *testing.T) { + // Anthropic requires strictly alternating turns; consecutive tool results + // must be merged into a single user message. + msgs := []Message{ + {Role: "tool", ToolCallID: "tc1", Content: `{"result":"a"}`}, + {Role: "tool", ToolCallID: "tc2", Content: `{"result":"b"}`}, + } + out := convertMessagesToAnthropic(msgs) + + if len(out) != 1 { + t.Fatalf("consecutive tool results must be merged into one user turn, got %d messages", len(out)) + } + if out[0]["role"] != "user" { + t.Errorf("tool results must become role=user: %v", out[0]["role"]) + } + blocks := out[0]["content"].([]map[string]any) + if len(blocks) != 2 { + t.Errorf("expected 2 tool_result blocks, got %d", len(blocks)) + } + if blocks[0]["type"] != "tool_result" || blocks[1]["type"] != "tool_result" { + t.Errorf("blocks should be tool_result: %v", blocks) + } + if blocks[0]["tool_use_id"] != "tc1" || blocks[1]["tool_use_id"] != "tc2" { + t.Errorf("tool_use_id mismatch: %v", blocks) + } +} + +// ── parseMCPResponseFull ─────────────────────────────────────────────────────── + +func TestClaudeClient_ParseResponse_TextOnly(t *testing.T) { + c := newTestClaudeClient() + body := []byte(`{ + "content": [{"type":"text","text":"Hello from Claude"}], + "usage": {"input_tokens": 10, "output_tokens": 5} + }`) + resp, err := c.parseMCPResponseFull(body) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if resp.Content != "Hello from Claude" { + t.Errorf("content mismatch: %q", resp.Content) + } + if len(resp.ToolCalls) != 0 { + t.Errorf("expected no tool calls: %v", resp.ToolCalls) + } +} + +func TestClaudeClient_ParseResponse_ToolUse(t *testing.T) { + c := newTestClaudeClient() + body := []byte(`{ + "content": [{ + "type": "tool_use", + "id": "toolu_01abc", + "name": "api_request", + "input": {"method":"POST","path":"/api/strategies","body":{"name":"BTC策略"}} + }], + "usage": {"input_tokens": 100, "output_tokens": 30} + }`) + resp, err := c.parseMCPResponseFull(body) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if len(resp.ToolCalls) != 1 { + t.Fatalf("expected 1 tool call, got %d", len(resp.ToolCalls)) + } + tc := resp.ToolCalls[0] + if tc.ID != "toolu_01abc" { + t.Errorf("tool call ID wrong: %v", tc.ID) + } + if tc.Function.Name != "api_request" { + t.Errorf("function name wrong: %v", tc.Function.Name) + } + // Arguments must be a valid JSON string. + var args map[string]any + if err := json.Unmarshal([]byte(tc.Function.Arguments), &args); err != nil { + t.Errorf("arguments not valid JSON: %q — %v", tc.Function.Arguments, err) + } + if args["method"] != "POST" { + t.Errorf("args.method wrong: %v", args) + } +} + +func TestClaudeClient_ParseResponse_APIError(t *testing.T) { + c := newTestClaudeClient() + body := []byte(`{"error":{"type":"authentication_error","message":"invalid x-api-key"}}`) + _, err := c.parseMCPResponseFull(body) + if err == nil { + t.Fatal("expected error for API error response") + } + if err.Error() == "" { + t.Error("error message should not be empty") + } +} + +// ── Auth header ──────────────────────────────────────────────────────────────── + +func TestClaudeClient_SetAuthHeader(t *testing.T) { + c := newTestClaudeClient() + c.APIKey = "sk-ant-test123" + + // net/http.Header canonicalizes keys (x-api-key → X-Api-Key). + h := make(http.Header) + c.setAuthHeader(h) + + if got := h.Get("x-api-key"); got != "sk-ant-test123" { + t.Errorf("x-api-key header not set correctly: %q", got) + } + if h.Get("anthropic-version") == "" { + t.Error("anthropic-version header must be set") + } + // Must NOT use Authorization: Bearer (that's OpenAI format). + if h.Get("Authorization") != "" { + t.Error("Claude must use x-api-key, not Authorization header") + } +} + +func TestClaudeClient_BuildUrl(t *testing.T) { + c := newTestClaudeClient() + url := c.buildUrl() + if url != DefaultClaudeBaseURL+"/messages" { + t.Errorf("URL should be /messages endpoint, got: %s", url) + } +} + +// ── helpers ──────────────────────────────────────────────────────────────────── + +func newTestClaudeClient() *ClaudeClient { + return NewClaudeClientWithOptions().(*ClaudeClient) +} diff --git a/mcp/claw402.go b/mcp/claw402.go new file mode 100644 index 00000000..03bb9ca6 --- /dev/null +++ b/mcp/claw402.go @@ -0,0 +1,166 @@ +package mcp + +import ( + "crypto/ecdsa" + "net/http" + "strings" + + "github.com/ethereum/go-ethereum/crypto" +) + +const ( + ProviderClaw402 = "claw402" + DefaultClaw402URL = "https://claw402.ai" + DefaultClaw402Model = "deepseek" +) + +// claw402ModelEndpoints maps user-friendly model names to claw402 API paths. +var claw402ModelEndpoints = map[string]string{ + // OpenAI + "gpt-5.4": "/api/v1/ai/openai/chat/5.4", + "gpt-5.4-pro": "/api/v1/ai/openai/chat/5.4-pro", + "gpt-5.3": "/api/v1/ai/openai/chat/5.3", + "gpt-5-mini": "/api/v1/ai/openai/chat/5-mini", + // Anthropic + "claude-opus": "/api/v1/ai/anthropic/messages/opus", + // DeepSeek + "deepseek": "/api/v1/ai/deepseek/chat", + "deepseek-reasoner": "/api/v1/ai/deepseek/chat/reasoner", + // Qwen + "qwen-max": "/api/v1/ai/qwen/chat/max", + "qwen-plus": "/api/v1/ai/qwen/chat/plus", + "qwen-turbo": "/api/v1/ai/qwen/chat/turbo", + "qwen-flash": "/api/v1/ai/qwen/chat/flash", + // Grok + "grok-4.1": "/api/v1/ai/grok/chat/4.1", + // Gemini + "gemini-3.1-pro": "/api/v1/ai/gemini/chat/3.1-pro", + // Kimi + "kimi-k2.5": "/api/v1/ai/kimi/chat/k2.5", +} + +// Claw402Client implements AIClient using claw402.ai's x402 v2 USDC payment gateway. +// Reuses the same EIP-712 signing as BlockRunBaseClient (same Base chain + USDC contract). +// When the selected model routes to an Anthropic endpoint, it automatically uses +// the Anthropic wire format for requests and responses (via an internal ClaudeClient). +type Claw402Client struct { + *Client + privateKey *ecdsa.PrivateKey + claudeProxy *ClaudeClient // non-nil when endpoint is /anthropic/ +} + +// NewClaw402Client creates a claw402 client (backward compatible). +func NewClaw402Client() AIClient { + return NewClaw402ClientWithOptions() +} + +// NewClaw402ClientWithOptions creates a claw402 client with options. +func NewClaw402ClientWithOptions(opts ...ClientOption) AIClient { + baseOpts := []ClientOption{ + WithProvider(ProviderClaw402), + WithModel(DefaultClaw402Model), + WithBaseURL(DefaultClaw402URL), + } + allOpts := append(baseOpts, opts...) + baseClient := NewClient(allOpts...).(*Client) + baseClient.UseFullURL = true + baseClient.BaseURL = DefaultClaw402URL + claw402ModelEndpoints[DefaultClaw402Model] + + c := &Claw402Client{Client: baseClient} + baseClient.hooks = c + return c +} + +// SetAPIKey stores the EVM private key and selects the model endpoint. +func (c *Claw402Client) SetAPIKey(apiKey string, _ string, customModel string) { + hexKey := strings.TrimPrefix(apiKey, "0x") + privKey, err := crypto.HexToECDSA(hexKey) + if err != nil { + c.logger.Warnf("⚠️ [MCP] Claw402: invalid private key: %v", err) + } else { + c.privateKey = privKey + c.APIKey = apiKey + addr := crypto.PubkeyToAddress(privKey.PublicKey).Hex() + c.logger.Infof("🔧 [MCP] Claw402 wallet: %s", addr) + } + if customModel != "" { + c.Model = customModel + } + endpoint := c.resolveEndpoint() + c.BaseURL = DefaultClaw402URL + endpoint + + // Anthropic endpoints need different wire format (Messages API) + if strings.Contains(endpoint, "/anthropic/") { + c.claudeProxy = &ClaudeClient{Client: c.Client} + c.logger.Infof("🔧 [MCP] Claw402 model: %s → %s (Anthropic format)", c.Model, endpoint) + } else { + c.claudeProxy = nil + c.logger.Infof("🔧 [MCP] Claw402 model: %s → %s", c.Model, endpoint) + } +} + +// resolveEndpoint returns the API path for the configured model. +func (c *Claw402Client) resolveEndpoint() string { + if ep, ok := claw402ModelEndpoints[c.Model]; ok { + return ep + } + // Allow raw path override (e.g. "/api/v1/ai/openai/chat/5.4") + if strings.HasPrefix(c.Model, "/api/") { + return c.Model + } + return claw402ModelEndpoints[DefaultClaw402Model] +} + +func (c *Claw402Client) setAuthHeader(h http.Header) { x402SetAuthHeader(h) } + +func (c *Claw402Client) call(systemPrompt, userPrompt string) (string, error) { + return x402Call(c.Client, c.signPayment, "Claw402", systemPrompt, userPrompt) +} + +func (c *Claw402Client) CallWithRequestFull(req *Request) (*LLMResponse, error) { + return x402CallFull(c.Client, c.signPayment, "Claw402", req) +} + +// signPayment signs x402 v2 EIP-712 payment (same Base chain + USDC as BlockRunBase). +func (c *Claw402Client) signPayment(paymentHeaderB64 string) (string, error) { + return signBasePaymentHeader(c.privateKey, paymentHeaderB64, "Claw402") +} + +// ── Format overrides for Anthropic endpoints ───────────────────────────────── + +func (c *Claw402Client) buildMCPRequestBody(systemPrompt, userPrompt string) map[string]any { + if c.claudeProxy != nil { + return c.claudeProxy.buildMCPRequestBody(systemPrompt, userPrompt) + } + return c.Client.buildMCPRequestBody(systemPrompt, userPrompt) +} + +func (c *Claw402Client) buildRequestBodyFromRequest(req *Request) map[string]any { + if c.claudeProxy != nil { + return c.claudeProxy.buildRequestBodyFromRequest(req) + } + return c.Client.buildRequestBodyFromRequest(req) +} + +func (c *Claw402Client) parseMCPResponse(body []byte) (string, error) { + if c.claudeProxy != nil { + return c.claudeProxy.parseMCPResponse(body) + } + return c.Client.parseMCPResponse(body) +} + +func (c *Claw402Client) parseMCPResponseFull(body []byte) (*LLMResponse, error) { + if c.claudeProxy != nil { + return c.claudeProxy.parseMCPResponseFull(body) + } + return c.Client.parseMCPResponseFull(body) +} + +// buildUrl returns the full claw402 endpoint URL. +func (c *Claw402Client) buildUrl() string { + return c.BaseURL +} + +func (c *Claw402Client) buildRequest(url string, jsonData []byte) (*http.Request, error) { + return x402BuildRequest(url, jsonData) +} diff --git a/mcp/client.go b/mcp/client.go index 3e778fb1..5b914965 100644 --- a/mcp/client.go +++ b/mcp/client.go @@ -1,7 +1,9 @@ package mcp import ( + "bufio" "bytes" + "context" "encoding/json" "fmt" "io" @@ -232,10 +234,21 @@ func (client *Client) marshalRequestBody(requestBody map[string]any) ([]byte, er } func (client *Client) parseMCPResponse(body []byte) (string, error) { + r, err := client.parseMCPResponseFull(body) + if err != nil { + return "", err + } + return r.Content, nil +} + +// parseMCPResponseFull parses the OpenAI-format response body and returns both +// the text content and any tool calls. +func (client *Client) parseMCPResponseFull(body []byte) (*LLMResponse, error) { var result struct { Choices []struct { Message struct { - Content string `json:"content"` + Content string `json:"content"` + ToolCalls []ToolCall `json:"tool_calls"` } `json:"message"` } `json:"choices"` Usage struct { @@ -246,11 +259,11 @@ func (client *Client) parseMCPResponse(body []byte) (string, error) { } if err := json.Unmarshal(body, &result); err != nil { - return "", fmt.Errorf("failed to parse response: %w", err) + return nil, fmt.Errorf("failed to parse response: %w", err) } if len(result.Choices) == 0 { - return "", fmt.Errorf("API returned empty response") + return nil, fmt.Errorf("API returned empty response") } // Report token usage if callback is set @@ -264,7 +277,11 @@ func (client *Client) parseMCPResponse(body []byte) (string, error) { }) } - return result.Choices[0].Message.Content, nil + msg := result.Choices[0].Message + return &LLMResponse{ + Content: msg.Content, + ToolCalls: msg.ToolCalls, + }, nil } func (client *Client) buildUrl() string { @@ -425,50 +442,106 @@ func (client *Client) CallWithRequest(req *Request) (string, error) { return "", fmt.Errorf("still failed after %d retries: %w", maxRetries, lastErr) } +// CallWithRequestFull calls the AI API and returns both text content and tool calls. +func (client *Client) CallWithRequestFull(req *Request) (*LLMResponse, error) { + if client.APIKey == "" { + return nil, fmt.Errorf("AI API key not set, please call SetAPIKey first") + } + if req.Model == "" { + req.Model = client.Model + } + + var lastErr error + maxRetries := client.config.MaxRetries + for attempt := 1; attempt <= maxRetries; attempt++ { + if attempt > 1 { + client.logger.Warnf("⚠️ AI API call failed, retrying (%d/%d)...", attempt, maxRetries) + } + result, err := client.callWithRequestFull(req) + if err == nil { + return result, nil + } + lastErr = err + if !client.hooks.isRetryableError(err) { + return nil, err + } + if attempt < maxRetries { + waitTime := client.config.RetryWaitBase * time.Duration(attempt) + time.Sleep(waitTime) + } + } + return nil, fmt.Errorf("still failed after %d retries: %w", maxRetries, lastErr) +} + +// callWithRequestFull single call that returns LLMResponse (content + tool calls). +func (client *Client) callWithRequestFull(req *Request) (*LLMResponse, error) { + client.logger.Infof("📡 [%s] Request AI Server (full): BaseURL: %s", client.String(), client.BaseURL) + + requestBody := client.hooks.buildRequestBodyFromRequest(req) + jsonData, err := client.hooks.marshalRequestBody(requestBody) + if err != nil { + return nil, err + } + + url := client.hooks.buildUrl() + httpReq, err := client.hooks.buildRequest(url, jsonData) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + + resp, err := client.httpClient.Do(httpReq) + if err != nil { + return nil, fmt.Errorf("failed to send request: %w", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("failed to read response: %w", err) + } + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("API returned error (status %d): %s", resp.StatusCode, string(body)) + } + + return client.hooks.parseMCPResponseFull(body) +} + // callWithRequest single AI API call (using Request object) func (client *Client) callWithRequest(req *Request) (string, error) { // Print current AI configuration client.logger.Infof("📡 [%s] Request AI Server with Builder: BaseURL: %s", client.String(), client.BaseURL) client.logger.Debugf("[%s] Messages count: %d", client.String(), len(req.Messages)) - // Build request body (from Request object) - requestBody := client.buildRequestBodyFromRequest(req) + requestBody := client.hooks.buildRequestBodyFromRequest(req) - // Serialize request body jsonData, err := client.hooks.marshalRequestBody(requestBody) if err != nil { return "", err } - // Build URL url := client.hooks.buildUrl() client.logger.Infof("📡 [MCP %s] Request URL: %s", client.String(), url) - // Create HTTP request httpReq, err := client.hooks.buildRequest(url, jsonData) if err != nil { return "", fmt.Errorf("failed to create request: %w", err) } - // Send HTTP request resp, err := client.httpClient.Do(httpReq) if err != nil { return "", fmt.Errorf("failed to send request: %w", err) } defer resp.Body.Close() - // Read response body body, err := io.ReadAll(resp.Body) if err != nil { return "", fmt.Errorf("failed to read response: %w", err) } - // Check HTTP status code if resp.StatusCode != http.StatusOK { return "", fmt.Errorf("API returned error (status %d): %s", resp.StatusCode, string(body)) } - // Parse response result, err := client.hooks.parseMCPResponse(body) if err != nil { return "", fmt.Errorf("fail to parse AI server response: %w", err) @@ -479,13 +552,23 @@ func (client *Client) callWithRequest(req *Request) (string, error) { // buildRequestBodyFromRequest builds request body from Request object func (client *Client) buildRequestBodyFromRequest(req *Request) map[string]any { - // Convert Message to API format - messages := make([]map[string]string, 0, len(req.Messages)) + // Convert Message to API format — must use map[string]any to support + // tool-call messages (tool_calls, tool_call_id fields). + messages := make([]map[string]any, 0, len(req.Messages)) for _, msg := range req.Messages { - messages = append(messages, map[string]string{ - "role": msg.Role, - "content": msg.Content, - }) + m := map[string]any{"role": msg.Role} + if len(msg.ToolCalls) > 0 { + // Assistant message that contains tool invocations. + // content must be null/omitted for OpenAI compatibility. + m["tool_calls"] = msg.ToolCalls + } else if msg.ToolCallID != "" { + // Tool result message (role="tool"). + m["tool_call_id"] = msg.ToolCallID + m["content"] = msg.Content + } else { + m["content"] = msg.Content + } + messages = append(messages, m) } // Build basic request body @@ -544,3 +627,124 @@ func (client *Client) buildRequestBodyFromRequest(req *Request) map[string]any { return requestBody } + +// CallWithRequestStream streams the LLM response via SSE (Server-Sent Events). +// onChunk is called with the full accumulated text so far after each received chunk. +// Returns the complete final text when the stream ends. +// +// Idle timeout: if no chunk arrives for 30 seconds the stream is cancelled automatically. +// This prevents the scanner from blocking indefinitely on a hung or stalled connection. +func (client *Client) CallWithRequestStream(req *Request, onChunk func(string)) (string, error) { + if client.APIKey == "" { + return "", fmt.Errorf("AI API key not set") + } + if req.Model == "" { + req.Model = client.Model + } + req.Stream = true + + requestBody := client.hooks.buildRequestBodyFromRequest(req) + jsonData, err := client.hooks.marshalRequestBody(requestBody) + if err != nil { + return "", err + } + + url := client.hooks.buildUrl() + httpReq, err := client.hooks.buildRequest(url, jsonData) + if err != nil { + return "", err + } + + // Idle-timeout watchdog: cancel the request if no SSE line arrives for 30 seconds. + // This breaks the scanner out of an indefinitely blocking Read on a hung connection. + const idleTimeout = 60 * time.Second + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + resetCh := make(chan struct{}, 1) + go func() { + t := time.NewTimer(idleTimeout) + defer t.Stop() + for { + select { + case <-ctx.Done(): + return + case <-t.C: + cancel() // idle timeout: kill the connection + return + case <-resetCh: + // received a line — reset the idle timer + if !t.Stop() { + select { + case <-t.C: + default: + } + } + t.Reset(idleTimeout) + } + } + }() + + httpReq = httpReq.WithContext(ctx) + resp, err := client.httpClient.Do(httpReq) + if err != nil { + return "", fmt.Errorf("streaming request failed: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + body, _ := io.ReadAll(resp.Body) + return "", fmt.Errorf("API error (status %d): %s", resp.StatusCode, string(body)) + } + + var accumulated strings.Builder + scanner := bufio.NewScanner(resp.Body) + + for scanner.Scan() { + // Ping the watchdog: we received a line, reset the idle timer. + select { + case resetCh <- struct{}{}: + default: + } + + line := scanner.Text() + if !strings.HasPrefix(line, "data: ") { + continue + } + data := strings.TrimPrefix(line, "data: ") + if data == "[DONE]" { + break + } + + // Parse the SSE JSON chunk + var chunk struct { + Choices []struct { + Delta struct { + Content string `json:"content"` + } `json:"delta"` + FinishReason *string `json:"finish_reason"` + } `json:"choices"` + } + if err := json.Unmarshal([]byte(data), &chunk); err != nil { + continue // skip malformed chunks + } + if len(chunk.Choices) == 0 { + continue + } + + delta := chunk.Choices[0].Delta.Content + if delta == "" { + continue + } + + accumulated.WriteString(delta) + if onChunk != nil { + onChunk(accumulated.String()) + } + } + + if err := scanner.Err(); err != nil { + return accumulated.String(), fmt.Errorf("stream interrupted: %w", err) + } + + return accumulated.String(), nil +} diff --git a/mcp/interface.go b/mcp/interface.go index 696b03ba..c7e62edc 100644 --- a/mcp/interface.go +++ b/mcp/interface.go @@ -10,21 +10,52 @@ type AIClient interface { SetAPIKey(apiKey string, customURL string, customModel string) SetTimeout(timeout time.Duration) CallWithMessages(systemPrompt, userPrompt string) (string, error) - CallWithRequest(req *Request) (string, error) // Builder pattern API (supports advanced features) + CallWithRequest(req *Request) (string, error) + // CallWithRequestStream streams the LLM response via SSE. + // onChunk is called with the full accumulated text so far (not raw deltas). + // Returns the complete final text when done. + CallWithRequestStream(req *Request, onChunk func(string)) (string, error) + // CallWithRequestFull returns both text content and tool calls. + // Use this when the request includes Tools — the LLM may respond with + // either a plain text reply (LLMResponse.Content) or tool invocations + // (LLMResponse.ToolCalls), but not both. + CallWithRequestFull(req *Request) (*LLMResponse, error) } -// clientHooks internal hook interface (for subclass to override specific steps) -// These methods are only used inside the package to implement dynamic dispatch +// clientHooks is the internal dispatch interface used to implement per-provider +// polymorphism without Go's lack of virtual methods. +// +// Each method can be overridden by an embedding struct (e.g. ClaudeClient). +// The base *Client provides OpenAI-compatible defaults; providers with a +// different wire format (Anthropic, Gemini native, etc.) override only what +// differs. All call-path methods in client.go invoke these via c.hooks so +// that the override is always picked up at runtime. type clientHooks interface { - // Hook methods that can be overridden by subclass - + // ── Simple CallWithMessages path ──────────────────────────────────────── call(systemPrompt, userPrompt string) (string, error) - buildMCPRequestBody(systemPrompt, userPrompt string) map[string]any + + // ── Shared request plumbing ───────────────────────────────────────────── buildUrl() string buildRequest(url string, jsonData []byte) (*http.Request, error) setAuthHeader(reqHeaders http.Header) marshalRequestBody(requestBody map[string]any) ([]byte, error) + + // ── Advanced (Request-object) path ────────────────────────────────────── + // buildRequestBodyFromRequest converts a *Request into the provider's + // native wire-format map. Providers that use a different protocol (e.g. + // Anthropic uses "input_schema" for tools, "tool_use" content blocks, and + // a top-level "system" field) override this method. + buildRequestBodyFromRequest(req *Request) map[string]any + + // parseMCPResponse extracts the plain-text reply from a non-streaming + // response body. parseMCPResponse(body []byte) (string, error) + + // parseMCPResponseFull extracts both text and tool calls. Providers whose + // response envelope differs from the OpenAI choices[] structure (e.g. + // Anthropic content[] with tool_use blocks) override this method. + parseMCPResponseFull(body []byte) (*LLMResponse, error) + isRetryableError(err error) bool } diff --git a/mcp/request.go b/mcp/request.go index 3ade2d71..548ef094 100644 --- a/mcp/request.go +++ b/mcp/request.go @@ -1,9 +1,34 @@ package mcp -// Message represents a conversation message +// Message represents a conversation message. +// Supports plain messages (Role+Content), assistant tool-call messages (ToolCalls), +// and tool result messages (Role="tool", ToolCallID, Content). type Message struct { - Role string `json:"role"` // "system", "user", "assistant" - Content string `json:"content"` // Message content + Role string `json:"role"` // "system", "user", "assistant", "tool" + Content string `json:"content,omitempty"` // Text content (omitted when ToolCalls present) + ToolCalls []ToolCall `json:"tool_calls,omitempty"` // Set by assistant when calling tools + ToolCallID string `json:"tool_call_id,omitempty"` // Set on role="tool" result messages +} + +// ToolCall is a single function call requested by the LLM. +type ToolCall struct { + ID string `json:"id"` // Unique call ID (e.g. "call_abc123") + Type string `json:"type"` // Always "function" + Function ToolCallFunction `json:"function"` // Function name and JSON-serialised arguments +} + +// ToolCallFunction holds the function name and raw JSON arguments string. +type ToolCallFunction struct { + Name string `json:"name"` // Function name + Arguments string `json:"arguments"` // JSON-encoded argument object +} + +// LLMResponse is returned by CallWithRequestFull and carries both the assistant +// text reply (Content) and any structured tool calls (ToolCalls). +// Exactly one of the two fields will be non-empty for a well-formed response. +type LLMResponse struct { + Content string // Plain-text reply (final answer) + ToolCalls []ToolCall // Structured tool invocations } // Tool represents a tool/function that AI can call diff --git a/mcp/x402.go b/mcp/x402.go new file mode 100644 index 00000000..5debb8d1 --- /dev/null +++ b/mcp/x402.go @@ -0,0 +1,219 @@ +package mcp + +import ( + "bytes" + "crypto/ecdsa" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "net/http" + + "github.com/ethereum/go-ethereum/crypto" +) + +// ── Shared x402 types ──────────────────────────────────────────────────────── + +// x402v2PaymentRequired is the structure of the Payment-Required header (x402 v2). +type x402v2PaymentRequired struct { + X402Version int `json:"x402Version"` + Accepts []x402AcceptOption `json:"accepts"` + Resource *x402Resource `json:"resource"` +} + +// x402AcceptOption is a payment option from the x402 v2 header. +type x402AcceptOption struct { + Scheme string `json:"scheme"` + Network string `json:"network"` + Amount string `json:"amount"` + Asset string `json:"asset"` + PayTo string `json:"payTo"` + MaxTimeoutSeconds int `json:"maxTimeoutSeconds"` + Extra map[string]string `json:"extra"` +} + +// x402Resource describes the resource being paid for. +type x402Resource struct { + URL string `json:"url"` + Description string `json:"description"` + MimeType string `json:"mimeType"` +} + +// x402SignFunc is a callback that signs an x402 payment header and returns the +// base64-encoded payment signature. +type x402SignFunc func(paymentHeaderB64 string) (string, error) + +// ── Shared x402 helpers ────────────────────────────────────────────────────── + +// x402DecodeHeader decodes a base64-encoded x402 Payment-Required header, +// trying RawStdEncoding first then StdEncoding as fallback. +func x402DecodeHeader(b64 string) ([]byte, error) { + decoded, err := base64.RawStdEncoding.DecodeString(b64) + if err != nil { + decoded, err = base64.StdEncoding.DecodeString(b64) + if err != nil { + return nil, fmt.Errorf("failed to base64-decode payment header: %w", err) + } + } + return decoded, nil +} + +// signBasePaymentHeader decodes a base64 x402 header, parses it, and signs with +// EIP-712 (USDC TransferWithAuthorization). Shared by BlockRunBase and Claw402. +func signBasePaymentHeader(privateKey *ecdsa.PrivateKey, paymentHeaderB64 string, providerName string) (string, error) { + if privateKey == nil { + return "", fmt.Errorf("no private key set for %s wallet", providerName) + } + + decoded, err := x402DecodeHeader(paymentHeaderB64) + if err != nil { + return "", err + } + + var req x402v2PaymentRequired + if err := json.Unmarshal(decoded, &req); err != nil { + return "", fmt.Errorf("failed to parse x402 v2 payment header: %w", err) + } + if len(req.Accepts) == 0 { + return "", fmt.Errorf("no payment options in x402 response") + } + + senderAddr := crypto.PubkeyToAddress(privateKey.PublicKey).Hex() + return signX402Payment(privateKey, senderAddr, req.Accepts[0], req.Resource) +} + +// doX402Request executes an HTTP request and handles the x402 v2 payment flow. +// On a 402 response it reads the Payment-Required (or X-Payment-Required) header, +// signs via signFn, retries with Payment-Signature, and logs the Payment-Response +// header (tx hash) on success. +func doX402Request( + httpClient *http.Client, + buildReqFn func() (*http.Request, error), + signFn x402SignFunc, + providerTag string, + logger Logger, +) ([]byte, error) { + req, err := buildReqFn() + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + + resp, err := httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to send request: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode == http.StatusPaymentRequired { + paymentHeader := resp.Header.Get("Payment-Required") + if paymentHeader == "" { + paymentHeader = resp.Header.Get("X-Payment-Required") + } + if paymentHeader == "" { + body, _ := io.ReadAll(resp.Body) + return nil, fmt.Errorf("received 402 but no Payment-Required header found. Body: %s", string(body)) + } + + // Drain 402 body to allow HTTP connection reuse. + _, _ = io.Copy(io.Discard, resp.Body) + + paymentSig, err := signFn(paymentHeader) + if err != nil { + return nil, fmt.Errorf("failed to sign x402 payment: %w", err) + } + + req2, err := buildReqFn() + if err != nil { + return nil, fmt.Errorf("failed to build retry request: %w", err) + } + req2.Header.Set("X-Payment", paymentSig) + req2.Header.Set("Payment-Signature", paymentSig) + + resp2, err := httpClient.Do(req2) + if err != nil { + return nil, fmt.Errorf("failed to send payment retry: %w", err) + } + defer resp2.Body.Close() + + body2, err := io.ReadAll(resp2.Body) + if err != nil { + return nil, fmt.Errorf("failed to read payment retry response: %w", err) + } + if resp2.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s payment retry failed (status %d): %s", providerTag, resp2.StatusCode, string(body2)) + } + + if txHash := resp2.Header.Get("Payment-Response"); txHash != "" { + logger.Infof("💰 [%s] Payment tx: %s", providerTag, txHash) + } + + return body2, nil + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("failed to read response: %w", err) + } + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s API error (status %d): %s", providerTag, resp.StatusCode, string(body)) + } + return body, nil +} + +// x402BuildRequest creates a POST request with Content-Type but no auth header. +func x402BuildRequest(url string, jsonData []byte) (*http.Request, error) { + req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData)) + if err != nil { + return nil, fmt.Errorf("fail to build request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + return req, nil +} + +// x402SetAuthHeader is a no-op — x402 providers authenticate via payment signing. +func x402SetAuthHeader(_ http.Header) {} + +// x402Call handles the x402 payment flow for the simple CallWithMessages path. +func x402Call(c *Client, signFn x402SignFunc, tag string, systemPrompt, userPrompt string) (string, error) { + c.logger.Infof("📡 [%s] Request AI Server: %s", tag, c.BaseURL) + + requestBody := c.hooks.buildMCPRequestBody(systemPrompt, userPrompt) + jsonData, err := c.hooks.marshalRequestBody(requestBody) + if err != nil { + return "", err + } + + body, err := doX402Request(c.httpClient, func() (*http.Request, error) { + return c.hooks.buildRequest(c.hooks.buildUrl(), jsonData) + }, signFn, tag, c.logger) + if err != nil { + return "", err + } + return c.hooks.parseMCPResponse(body) +} + +// x402CallFull handles the x402 payment flow for the advanced Request path. +func x402CallFull(c *Client, signFn x402SignFunc, tag string, req *Request) (*LLMResponse, error) { + if c.APIKey == "" { + return nil, fmt.Errorf("AI API key not set, please call SetAPIKey first") + } + if req.Model == "" { + req.Model = c.Model + } + + c.logger.Infof("📡 [%s] Request AI (full): %s", tag, c.BaseURL) + + requestBody := c.hooks.buildRequestBodyFromRequest(req) + jsonData, err := c.hooks.marshalRequestBody(requestBody) + if err != nil { + return nil, err + } + + body, err := doX402Request(c.httpClient, func() (*http.Request, error) { + return c.hooks.buildRequest(c.hooks.buildUrl(), jsonData) + }, signFn, tag, c.logger) + if err != nil { + return nil, err + } + return c.hooks.parseMCPResponseFull(body) +} diff --git a/nginx/nginx.conf b/nginx/nginx.conf index e09eec2c..85192be6 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -15,11 +15,18 @@ server { gzip_min_length 1024; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json; + # index.html — never cache (so new deploys take effect immediately) + location = /index.html { + add_header Cache-Control "no-cache, no-store, must-revalidate"; + add_header Pragma "no-cache"; + add_header Expires 0; + } + # Frontend routes (SPA) with static asset caching location / { try_files $uri $uri/ /index.html; - # Cache static assets + # Cache hashed static assets (js/css have content hashes in filenames) location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; diff --git a/start.sh b/start.sh index 8ce534b3..c0c4232e 100755 --- a/start.sh +++ b/start.sh @@ -1,7 +1,7 @@ #!/bin/bash # ═══════════════════════════════════════════════════════════════ -# NOFX AI Trading System - Docker Quick Start Script +# NOFX AI Trading System - Docker Management Script # Usage: ./start.sh [command] # ═══════════════════════════════════════════════════════════════ @@ -45,10 +45,10 @@ detect_compose_cmd() { elif command -v docker-compose &> /dev/null; then COMPOSE_CMD="docker-compose" else - print_error "Docker Compose 未安装!请先安装 Docker Compose" + print_error "Docker Compose not found. Please install Docker Compose first." exit 1 fi - print_info "使用 Docker Compose 命令: $COMPOSE_CMD" + print_info "Using Docker Compose: $COMPOSE_CMD" } # ------------------------------------------------------------------------ @@ -56,12 +56,12 @@ detect_compose_cmd() { # ------------------------------------------------------------------------ check_docker() { if ! command -v docker &> /dev/null; then - print_error "Docker 未安装!请先安装 Docker: https://docs.docker.com/get-docker/" + print_error "Docker not found. Please install Docker: https://docs.docker.com/get-docker/" exit 1 fi detect_compose_cmd - print_success "Docker 和 Docker Compose 已安装" + print_success "Docker and Docker Compose are installed" } # ------------------------------------------------------------------------ @@ -69,11 +69,11 @@ check_docker() { # ------------------------------------------------------------------------ check_env() { if [ ! -f ".env" ]; then - print_warning ".env 不存在,从模板复制..." + print_warning ".env not found, copying from template..." cp .env.example .env - print_info "已创建 .env 文件" + print_info ".env file created" fi - print_success "环境变量文件存在" + print_success "Environment file exists" } # ------------------------------------------------------------------------ @@ -83,15 +83,15 @@ is_env_configured() { local var_name="$1" local value=$(grep "^${var_name}=" .env 2>/dev/null | cut -d'=' -f2-) - # 去除引号 + # Strip quotes value=$(echo "$value" | tr -d '"'"'") - # 检查是否为空或占位符 + # Check empty if [ -z "$value" ]; then return 1 fi - # 检查是否是示例值 + # Check placeholder values case "$value" in *your-*|*YOUR_*|*change-this*|*CHANGE_THIS*|*example*|*EXAMPLE*) return 1 @@ -102,22 +102,23 @@ is_env_configured() { } # ------------------------------------------------------------------------ -# Helper: Generate and set env var in .env file +# Helper: Set env var in .env file # ------------------------------------------------------------------------ set_env_var() { local var_name="$1" local var_value="$2" - # 如果变量已存在(即使是占位符),替换它 if grep -q "^${var_name}=" .env 2>/dev/null; then - # macOS 和 Linux 兼容的 sed if [[ "$OSTYPE" == "darwin"* ]]; then sed -i '' "s|^${var_name}=.*|${var_name}=${var_value}|" .env else sed -i "s|^${var_name}=.*|${var_name}=${var_value}|" .env fi else - # 变量不存在,追加 + # Ensure .env ends with a newline before appending + if [ -s ".env" ] && [ "$(tail -c1 .env | wc -l)" -eq 0 ]; then + echo "" >> .env + fi echo "${var_name}=${var_value}" >> .env fi } @@ -126,51 +127,46 @@ set_env_var() { # Validation: Encryption Keys in .env # ------------------------------------------------------------------------ check_encryption() { - print_info "检查加密密钥配置..." + print_info "Checking encryption keys..." local generated=false - # 检查并生成 JWT_SECRET if ! is_env_configured "JWT_SECRET"; then - print_warning "JWT_SECRET 未配置,正在生成..." + print_warning "JWT_SECRET not set, generating..." local jwt_secret=$(openssl rand -base64 32) set_env_var "JWT_SECRET" "$jwt_secret" - print_success "JWT_SECRET 已生成" + print_success "JWT_SECRET generated" generated=true fi - # 检查并生成 DATA_ENCRYPTION_KEY if ! is_env_configured "DATA_ENCRYPTION_KEY"; then - print_warning "DATA_ENCRYPTION_KEY 未配置,正在生成..." + print_warning "DATA_ENCRYPTION_KEY not set, generating..." local data_key=$(openssl rand -base64 32) set_env_var "DATA_ENCRYPTION_KEY" "$data_key" - print_success "DATA_ENCRYPTION_KEY 已生成" + print_success "DATA_ENCRYPTION_KEY generated" generated=true fi - # 检查并生成 RSA_PRIVATE_KEY if ! is_env_configured "RSA_PRIVATE_KEY"; then - print_warning "RSA_PRIVATE_KEY 未配置,正在生成..." - # 生成 RSA 密钥并转换为单行格式(\n 替换为 \\n) + print_warning "RSA_PRIVATE_KEY not set, generating..." local rsa_key=$(openssl genrsa 2048 2>/dev/null | awk '{printf "%s\\n", $0}') set_env_var "RSA_PRIVATE_KEY" "\"$rsa_key\"" - print_success "RSA_PRIVATE_KEY 已生成" + print_success "RSA_PRIVATE_KEY generated" generated=true fi if [ "$generated" = true ]; then echo "" - print_success "所有缺失的密钥已自动生成并保存到 .env" - print_warning "请妥善保管 .env 文件,不要提交到版本控制系统" + print_success "Missing keys generated and saved to .env" + print_warning "Keep .env safe — do not commit it to version control" echo "" fi - print_success "加密密钥检查完成" + print_success "Encryption keys OK" print_info " • JWT_SECRET: OK" print_info " • DATA_ENCRYPTION_KEY: OK" print_info " • RSA_PRIVATE_KEY: OK" - # 修复 .env 文件权限 chmod 600 .env 2>/dev/null || true } @@ -197,13 +193,12 @@ read_env_vars() { # Validation: Database Directory (data/) # ------------------------------------------------------------------------ check_database() { - # Ensure data directory exists if [ ! -d "data" ]; then - print_warning "数据目录不存在,创建 data/ 目录..." + print_warning "Data directory missing, creating data/..." install -m 700 -d data - print_success "已创建 data/ 目录" + print_success "data/ directory created" else - print_success "数据目录存在" + print_success "Data directory exists" fi } @@ -211,47 +206,58 @@ check_database() { # Service Management: Start # ------------------------------------------------------------------------ start() { - print_info "正在启动 NOFX AI Trading System..." + echo "" + echo -e "${CYAN}╔══════════════════════════════════════════════════════╗${NC}" + echo -e "${CYAN}║ 🚀 NOFX AI Trading Bot — Startup ║${NC}" + echo -e "${CYAN}╚══════════════════════════════════════════════════════╝${NC}" + echo "" read_env_vars if [ ! -d "data" ]; then - print_info "创建数据目录..." install -m 700 -d data fi + echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + print_info "Starting services..." + if [ "$1" == "--build" ]; then - print_info "重新构建镜像..." $COMPOSE_CMD up -d --build else - print_info "启动容器..." $COMPOSE_CMD up -d fi - print_success "服务已启动!" - print_info "Web 界面: http://localhost:${NOFX_FRONTEND_PORT}" - print_info "API 端点: http://localhost:${NOFX_BACKEND_PORT}" - print_info "" - print_info "查看日志: ./start.sh logs" - print_info "停止服务: ./start.sh stop" + echo "" + echo -e "${GREEN}╔══════════════════════════════════════════════════════╗${NC}" + echo -e "${GREEN}║ ✅ Started! Next steps: ║${NC}" + echo -e "${GREEN}╚══════════════════════════════════════════════════════╝${NC}" + echo "" + echo " 1. Open the web dashboard to register and configure" + echo " 2. Add an AI model and exchange in Settings" + echo " 3. (Optional) Add a Telegram bot token in Settings → Telegram" + echo "" + echo -e " Web dashboard: ${BLUE}http://localhost:${NOFX_FRONTEND_PORT}${NC}" + echo -e " View logs: ${YELLOW}./start.sh logs${NC}" + echo -e " Stop: ${YELLOW}./start.sh stop${NC}" + echo "" } # ------------------------------------------------------------------------ # Service Management: Stop # ------------------------------------------------------------------------ stop() { - print_info "正在停止服务..." + print_info "Stopping services..." $COMPOSE_CMD stop - print_success "服务已停止" + print_success "Services stopped" } # ------------------------------------------------------------------------ # Service Management: Restart # ------------------------------------------------------------------------ restart() { - print_info "正在重启服务..." + print_info "Restarting services..." $COMPOSE_CMD restart - print_success "服务已重启" + print_success "Services restarted" } # ------------------------------------------------------------------------ @@ -271,25 +277,25 @@ logs() { status() { read_env_vars - print_info "服务状态:" + print_info "Service status:" $COMPOSE_CMD ps echo "" - print_info "健康检查:" - curl -s "http://localhost:${NOFX_BACKEND_PORT}/api/health" | jq '.' || echo "后端未响应" + print_info "Health check:" + curl -s "http://localhost:${NOFX_BACKEND_PORT}/api/health" | jq '.' || echo "Backend not responding" } # ------------------------------------------------------------------------ # Maintenance: Clean (Destructive) # ------------------------------------------------------------------------ clean() { - print_warning "这将删除所有容器和数据!" - read -p "确认删除?(yes/no): " confirm + print_warning "This will delete all containers and data!" + read -p "Confirm? (yes/no): " confirm if [ "$confirm" == "yes" ]; then - print_info "正在清理..." + print_info "Cleaning up..." $COMPOSE_CMD down -v - print_success "清理完成" + print_success "Cleanup complete" else - print_info "已取消" + print_info "Cancelled" fi } @@ -297,77 +303,74 @@ clean() { # Maintenance: Update # ------------------------------------------------------------------------ update() { - print_info "正在更新..." + print_info "Updating..." git pull $COMPOSE_CMD up -d --build - print_success "更新完成" + print_success "Update complete" } # ------------------------------------------------------------------------ # Command: Regenerate all keys (force) # ------------------------------------------------------------------------ regenerate_keys() { - print_warning "这将重新生成所有加密密钥!" - print_warning "如果已有加密数据,重新生成后将无法解密!" + print_warning "This will regenerate ALL encryption keys!" + print_warning "Any existing encrypted data will become unreadable!" echo "" - read -p "确认重新生成?(yes/no): " confirm + read -p "Confirm? (yes/no): " confirm if [ "$confirm" != "yes" ]; then - print_info "已取消" + print_info "Cancelled" return fi check_env - print_info "正在生成新的密钥..." + print_info "Generating new keys..." - # 生成 JWT_SECRET local jwt_secret=$(openssl rand -base64 32) set_env_var "JWT_SECRET" "$jwt_secret" - print_success "JWT_SECRET 已生成" + print_success "JWT_SECRET generated" - # 生成 DATA_ENCRYPTION_KEY local data_key=$(openssl rand -base64 32) set_env_var "DATA_ENCRYPTION_KEY" "$data_key" - print_success "DATA_ENCRYPTION_KEY 已生成" + print_success "DATA_ENCRYPTION_KEY generated" - # 生成 RSA_PRIVATE_KEY local rsa_key=$(openssl genrsa 2048 2>/dev/null | awk '{printf "%s\\n", $0}') set_env_var "RSA_PRIVATE_KEY" "\"$rsa_key\"" - print_success "RSA_PRIVATE_KEY 已生成" + print_success "RSA_PRIVATE_KEY generated" chmod 600 .env 2>/dev/null || true echo "" - print_success "所有密钥已重新生成并保存到 .env" - print_warning "请妥善保管 .env 文件" + print_success "All keys regenerated and saved to .env" + print_warning "Keep .env safe" } # ------------------------------------------------------------------------ # Help: Usage Information # ------------------------------------------------------------------------ show_help() { - echo "NOFX AI Trading System - Docker 管理脚本" + echo "NOFX AI Trading System - Docker Management Script" echo "" - echo "用法: ./start.sh [command] [options]" + echo "Usage: ./start.sh [command] [options]" echo "" - echo "命令:" - echo " start [--build] 启动服务(可选:重新构建)" - echo " stop 停止服务" - echo " restart 重启服务" - echo " logs [service] 查看日志(可选:指定服务名 backend/frontend)" - echo " status 查看服务状态" - echo " clean 清理所有容器和数据" - echo " update 更新代码并重启" - echo " regenerate-keys 重新生成所有加密密钥(慎用)" - echo " help 显示此帮助信息" + echo "Commands:" + echo " start [--build] Start services (optional: rebuild images)" + echo " stop Stop services" + echo " restart Restart services" + echo " logs [service] View logs (optional: backend / frontend)" + echo " status Show service status" + echo " clean Remove all containers and data" + echo " update Pull latest code and rebuild" + echo " regenerate-keys Regenerate all encryption keys (destructive)" + echo " help Show this help" echo "" - echo "示例:" - echo " ./start.sh start --build # 构建并启动" - echo " ./start.sh logs backend # 查看后端日志" - echo " ./start.sh status # 查看状态" + echo "Examples:" + echo " ./start.sh start --build # Build and start" + echo " ./start.sh logs backend # View backend logs" + echo " ./start.sh status # Check status" echo "" - echo "首次使用:" - echo " 直接运行 ./start.sh 即可,缺失的密钥会自动生成" + echo "First time:" + echo " Just run ./start.sh — missing keys are generated automatically" } # ------------------------------------------------------------------------ @@ -408,7 +411,7 @@ main() { show_help ;; *) - print_error "未知命令: $1" + print_error "Unknown command: $1" show_help exit 1 ;; diff --git a/store/ai_model.go b/store/ai_model.go index a9047866..b74d5780 100644 --- a/store/ai_model.go +++ b/store/ai_model.go @@ -137,6 +137,19 @@ func (s *AIModelStore) firstEnabled(userID string) (*AIModel, error) { return &model, nil } +// GetAnyEnabled returns the first enabled AI model across all users. +// Used by single-user features (e.g. Telegram bot) that need any working LLM client. +func (s *AIModelStore) GetAnyEnabled() (*AIModel, error) { + var model AIModel + err := s.db.Where("enabled = ? AND api_key != ''", true). + Order("updated_at DESC, id ASC"). + First(&model).Error + if err != nil { + return nil, err + } + return &model, nil +} + // Update updates AI model, creates if not exists // IMPORTANT: If apiKey is empty string, the existing API key will be preserved (not overwritten) func (s *AIModelStore) Update(userID, id string, enabled bool, apiKey, customAPIURL, customModelName string) error { diff --git a/store/store.go b/store/store.go index 8119b935..5e6ec457 100644 --- a/store/store.go +++ b/store/store.go @@ -18,17 +18,18 @@ type Store struct { driver *DBDriver // Database driver for abstraction (legacy) // Sub-stores (lazy initialization) - user *UserStore - aiModel *AIModelStore - exchange *ExchangeStore - trader *TraderStore - decision *DecisionStore - backtest *BacktestStore - position *PositionStore - strategy *StrategyStore - equity *EquityStore - order *OrderStore - grid *GridStore + user *UserStore + aiModel *AIModelStore + exchange *ExchangeStore + trader *TraderStore + decision *DecisionStore + backtest *BacktestStore + position *PositionStore + strategy *StrategyStore + equity *EquityStore + order *OrderStore + grid *GridStore + telegramConfig TelegramConfigStore mu sync.RWMutex } @@ -160,6 +161,9 @@ func (s *Store) initTables() error { if err := s.Grid().InitTables(); err != nil { return fmt.Errorf("failed to initialize grid tables: %w", err) } + if err := s.TelegramConfig().(*telegramConfigStore).initTables(); err != nil { + return fmt.Errorf("failed to initialize telegram config tables: %w", err) + } return nil } @@ -293,6 +297,16 @@ func (s *Store) Grid() *GridStore { return s.grid } +// TelegramConfig gets Telegram bot configuration storage +func (s *Store) TelegramConfig() TelegramConfigStore { + s.mu.Lock() + defer s.mu.Unlock() + if s.telegramConfig == nil { + s.telegramConfig = NewTelegramConfigStore(s.gdb) + } + return s.telegramConfig +} + // Close closes database connection func (s *Store) Close() error { if s.driver != nil { diff --git a/store/telegram_config.go b/store/telegram_config.go new file mode 100644 index 00000000..2c15f15a --- /dev/null +++ b/store/telegram_config.go @@ -0,0 +1,164 @@ +package store + +import ( + "errors" + "fmt" + "sync" + "time" + + "gorm.io/gorm" +) + +// TelegramConfig stores the Telegram bot binding (single row, always ID=1) +type TelegramConfig struct { + ID uint `gorm:"primaryKey"` + BotToken string `gorm:"column:bot_token"` + ChatID int64 `gorm:"column:chat_id"` + Username string `gorm:"column:username"` // @username for display + BoundAt time.Time `gorm:"column:bound_at"` + ModelID string `gorm:"column:model_id;default:''"` // AI model used for Telegram replies + Language string `gorm:"column:language;default:''"` // "zh" or "en"; empty = not chosen yet + CreatedAt time.Time + UpdatedAt time.Time +} + +// String returns a safe string representation of TelegramConfig with the token masked. +func (tc TelegramConfig) String() string { + token := "***" + if tc.BotToken == "" { + token = "" + } + return fmt.Sprintf("TelegramConfig{ID:%d, ChatID:%d, Username:%q, BotToken:%s, BoundAt:%v}", + tc.ID, tc.ChatID, tc.Username, token, tc.BoundAt) +} + +// TelegramConfigStore defines the interface for Telegram bot binding operations +type TelegramConfigStore interface { + Get() (*TelegramConfig, error) // Get current config (may not exist) + SaveToken(botToken string) error // Save bot token only (Web UI sets this) + Save(botToken, modelID string) error // Save bot token + selected AI model + BindUser(chatID int64, username string) error // Called on first /start + IsBound() (bool, error) // Check if any user is bound + GetBoundChatID() (int64, error) // Get bound chat ID (0 if not bound) + Unbind() error // Remove binding + SetLanguage(lang string) error // Set UI language ("en" or "zh") + GetLanguage() string // Get UI language; returns "en" if not set +} + +type telegramConfigStore struct { + db *gorm.DB + mu sync.RWMutex +} + +// NewTelegramConfigStore creates a new TelegramConfigStore +func NewTelegramConfigStore(db *gorm.DB) TelegramConfigStore { + return &telegramConfigStore{db: db} +} + +func (s *telegramConfigStore) initTables() error { + return s.db.AutoMigrate(&TelegramConfig{}) +} + +func (s *telegramConfigStore) Get() (*TelegramConfig, error) { + s.mu.RLock() + defer s.mu.RUnlock() + var cfg TelegramConfig + if err := s.db.First(&cfg, 1).Error; err != nil { + return nil, err + } + return &cfg, nil +} + +func (s *telegramConfigStore) SaveToken(botToken string) error { + return s.Save(botToken, "") +} + +func (s *telegramConfigStore) Save(botToken, modelID string) error { + s.mu.Lock() + defer s.mu.Unlock() + var cfg TelegramConfig + result := s.db.First(&cfg, 1) + if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { + return result.Error + } + cfg.ID = 1 + cfg.BotToken = botToken + cfg.ModelID = modelID + return s.db.Save(&cfg).Error +} + +func (s *telegramConfigStore) BindUser(chatID int64, username string) error { + s.mu.Lock() + defer s.mu.Unlock() + var cfg TelegramConfig + result := s.db.First(&cfg, 1) + if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { + return result.Error + } + cfg.ID = 1 + cfg.ChatID = chatID + cfg.Username = username + cfg.BoundAt = time.Now() + return s.db.Save(&cfg).Error +} + +func (s *telegramConfigStore) IsBound() (bool, error) { + s.mu.RLock() + defer s.mu.RUnlock() + var cfg TelegramConfig + if err := s.db.First(&cfg, 1).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return false, nil + } + return false, err + } + return cfg.ChatID != 0, nil +} + +func (s *telegramConfigStore) GetBoundChatID() (int64, error) { + s.mu.RLock() + defer s.mu.RUnlock() + var cfg TelegramConfig + if err := s.db.First(&cfg, 1).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return 0, nil + } + return 0, err + } + return cfg.ChatID, nil +} + +func (s *telegramConfigStore) Unbind() error { + s.mu.Lock() + defer s.mu.Unlock() + return s.db.Model(&TelegramConfig{}).Where("id = 1").Updates(map[string]interface{}{ + "chat_id": 0, + "username": "", + }).Error +} + +func (s *telegramConfigStore) SetLanguage(lang string) error { + s.mu.Lock() + defer s.mu.Unlock() + var cfg TelegramConfig + result := s.db.First(&cfg, 1) + if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { + return result.Error + } + cfg.ID = 1 + cfg.Language = lang + return s.db.Save(&cfg).Error +} + +func (s *telegramConfigStore) GetLanguage() string { + s.mu.RLock() + defer s.mu.RUnlock() + var cfg TelegramConfig + if err := s.db.First(&cfg, 1).Error; err != nil { + return "en" // default: English + } + if cfg.Language == "" { + return "en" + } + return cfg.Language +} diff --git a/store/user.go b/store/user.go index 73c9a671..5b084683 100644 --- a/store/user.go +++ b/store/user.go @@ -97,6 +97,13 @@ func (s *UserStore) GetAllIDs() ([]string, error) { return userIDs, err } +// GetAll returns all users ordered by creation time. +func (s *UserStore) GetAll() ([]User, error) { + var users []User + err := s.db.Model(&User{}).Order("created_at").Find(&users).Error + return users, err +} + // UpdatePassword updates password func (s *UserStore) UpdatePassword(userID, passwordHash string) error { return s.db.Model(&User{}).Where("id = ?", userID).Updates(map[string]interface{}{ diff --git a/telegram/agent/agent.go b/telegram/agent/agent.go new file mode 100644 index 00000000..8c4455d2 --- /dev/null +++ b/telegram/agent/agent.go @@ -0,0 +1,285 @@ +package agent + +import ( + "encoding/json" + "fmt" + "nofx/auth" + "nofx/logger" + "nofx/mcp" + "nofx/telegram/session" + "strings" +) + +const maxIterations = 10 + +// apiRequestTool is the single tool exposed to the LLM. +// Native function calling means the LLM returns EITHER ToolCalls OR Content — never both. +// This makes narration structurally impossible: text cannot appear alongside a tool call. +var apiRequestTool = mcp.Tool{ + Type: "function", + Function: mcp.FunctionDef{ + Name: "api_request", + Description: "Call the NOFX trading system REST API", + Parameters: map[string]any{ + "type": "object", + "properties": map[string]any{ + "method": map[string]any{ + "type": "string", + "enum": []string{"GET", "POST", "PUT", "DELETE"}, + "description": "HTTP method", + }, + "path": map[string]any{ + "type": "string", + "description": "API path; include query params in path: /api/positions?trader_id=xxx", + }, + "body": map[string]any{ + "type": "object", + "description": "Request body; use {} for GET requests", + }, + }, + "required": []string{"method", "path", "body"}, + }, + }, +} + +// Agent is a stateful AI agent for one Telegram chat. +// It exposes a single "api_request" tool and runs a loop until the LLM +// returns a plain-text reply (no tool calls). +type Agent struct { + apiTool *apiCallTool + getLLM func() mcp.AIClient + memory *session.Memory + systemPrompt string + userID string +} + +// New creates an Agent for one chat session. +func New(apiPort int, botToken, userID string, getLLM func() mcp.AIClient, systemPrompt string) *Agent { + return &Agent{ + apiTool: newAPICallTool(apiPort, botToken), + getLLM: getLLM, + memory: session.NewMemory(getLLM()), + systemPrompt: systemPrompt, + userID: userID, + } +} + +// GenerateBotToken creates a long-lived JWT for the bot's internal API calls. +// userID must match the actual registered user's ID so bot-made changes +// are visible in the frontend (shared user namespace). +func GenerateBotToken(userID string) (string, error) { + return auth.GenerateJWT(userID, "bot@internal") +} + +// buildAccountContext fetches the live account state (models, exchanges, strategies, traders, +// and per-trader account summary + statistics) and returns it as a formatted string for +// injection into the LLM context at the start of each conversation. +func (a *Agent) buildAccountContext() string { + var sb strings.Builder + sb.WriteString(fmt.Sprintf("[Current Account State — User: %s]\n\n", a.userID)) + + // ── AI Models ───────────────────────────────────────────────────────────── + modelsRaw := a.apiTool.execute(&apiRequest{Method: "GET", Path: "/api/models"}) + sb.WriteString("## AI Models\n") + sb.WriteString("⚠️ When creating a trader, use the EXACT \"id\" value below for \"ai_model_id\".\n") + sb.WriteString(" DO NOT use the \"provider\" field — it is NOT a valid ai_model_id.\n\n") + + var models []struct { + ID string `json:"id"` + Name string `json:"name"` + Provider string `json:"provider"` + Enabled bool `json:"enabled"` + } + if err := json.Unmarshal([]byte(modelsRaw), &models); err == nil && len(models) > 0 { + for _, m := range models { + status := "disabled" + if m.Enabled { + status = "ENABLED" + } + sb.WriteString(fmt.Sprintf(" • ai_model_id=\"%s\" provider=%s name=%s [%s]\n", m.ID, m.Provider, m.Name, status)) + } + } else { + sb.WriteString(modelsRaw) + } + sb.WriteString("\n") + + // ── Exchanges ───────────────────────────────────────────────────────────── + exchangesRaw := a.apiTool.execute(&apiRequest{Method: "GET", Path: "/api/exchanges"}) + sb.WriteString("## Exchanges\n") + sb.WriteString("⚠️ Use the EXACT \"id\" value below for \"exchange_id\" when creating a trader.\n\n") + + var exchanges []struct { + ID string `json:"id"` + Name string `json:"name"` + ExchangeType string `json:"exchange_type"` + AccountName string `json:"account_name"` + Enabled bool `json:"enabled"` + } + if err := json.Unmarshal([]byte(exchangesRaw), &exchanges); err == nil && len(exchanges) > 0 { + for _, e := range exchanges { + status := "disabled" + if e.Enabled { + status = "ENABLED" + } + sb.WriteString(fmt.Sprintf(" • exchange_id=\"%s\" type=%s account=%s [%s]\n", e.ID, e.ExchangeType, e.AccountName, status)) + } + } else { + sb.WriteString(exchangesRaw) + } + sb.WriteString("\n") + + // ── Strategies ──────────────────────────────────────────────────────────── + strategiesRaw := a.apiTool.execute(&apiRequest{Method: "GET", Path: "/api/strategies"}) + sb.WriteString("## Strategies\n") + + var strategies []struct { + ID string `json:"id"` + Name string `json:"name"` + } + if err := json.Unmarshal([]byte(strategiesRaw), &strategies); err == nil && len(strategies) > 0 { + for _, s := range strategies { + sb.WriteString(fmt.Sprintf(" • strategy_id=\"%s\" name=%s\n", s.ID, s.Name)) + } + } else { + sb.WriteString(strategiesRaw) + } + sb.WriteString("\n") + + // ── Traders ─────────────────────────────────────────────────────────────── + tradersRaw := a.apiTool.execute(&apiRequest{Method: "GET", Path: "/api/my-traders"}) + sb.WriteString("## Traders\n") + + var traders []struct { + TraderID string `json:"trader_id"` + Name string `json:"trader_name"` + IsRunning bool `json:"is_running"` + } + if err := json.Unmarshal([]byte(tradersRaw), &traders); err == nil && len(traders) > 0 { + for _, t := range traders { + status := "stopped" + if t.IsRunning { + status = "RUNNING" + } + sb.WriteString(fmt.Sprintf(" • trader_id=\"%s\" name=%s [%s]\n", t.TraderID, t.Name, status)) + } + } else { + sb.WriteString(tradersRaw) + } + sb.WriteString("\n") + + // ── Per-trader live data (running traders only) ──────────────────────────── + for _, t := range traders { + if !t.IsRunning { + continue + } + acct := a.apiTool.execute(&apiRequest{Method: "GET", Path: "/api/account?trader_id=" + t.TraderID}) + sb.WriteString(fmt.Sprintf("Account [%s]:\n%s\n\n", t.Name, acct)) + stats := a.apiTool.execute(&apiRequest{Method: "GET", Path: "/api/statistics?trader_id=" + t.TraderID}) + sb.WriteString(fmt.Sprintf("Statistics [%s]:\n%s\n\n", t.Name, stats)) + } + + return sb.String() +} + +// Run processes one user message through the native function-calling agent loop. +// +// Architecture: +// - LLM receives the api_request tool definition alongside conversation history. +// - LLM response is EITHER ToolCalls (execute API) OR Content (final reply) — never both. +// This is enforced by the protocol: narration is structurally impossible. +// - Loop continues until the LLM returns a plain-text reply (no tool calls). +// +// On the first message of a conversation the live account state is fetched and injected. +// onChunk is optional; when set it is called once with the complete final reply text. +func (a *Agent) Run(userMessage string, onChunk func(string)) string { + llm := a.getLLM() + if llm == nil { + return "AI assistant unavailable. Please configure an AI model in the Web UI." + } + + // Build initial user message: prepend account state on first turn, history on subsequent turns. + histCtx := a.memory.BuildContext() + var firstUserContent string + if histCtx == "" { + accountCtx := a.buildAccountContext() + firstUserContent = accountCtx + "\n[User Message]\n" + userMessage + } else { + firstUserContent = histCtx + "\n---\nUser: " + userMessage + } + + turnMsgs := []mcp.Message{mcp.NewUserMessage(firstUserContent)} + + for i := 0; i < maxIterations; i++ { + req, err := mcp.NewRequestBuilder(). + WithSystemPrompt(a.systemPrompt). + AddConversationHistory(turnMsgs). + AddTool(apiRequestTool). + WithToolChoice("auto"). + Build() + if err != nil { + logger.Errorf("Agent: failed to build request: %v", err) + break + } + + resp, err := llm.CallWithRequestFull(req) + if err != nil { + logger.Errorf("Agent: LLM call failed (iteration %d): %v", i+1, err) + return "AI assistant temporarily unavailable. Please try again." + } + + // No tool calls → LLM returned a final text reply. + if len(resp.ToolCalls) == 0 { + reply := strings.TrimSpace(resp.Content) + if onChunk != nil { + onChunk(reply) + } + a.memory.Add("user", userMessage) + a.memory.Add("assistant", reply) + return reply + } + + // Tool call iteration — show thinking indicator. + if onChunk != nil { + onChunk("⏳") + } + + // Append assistant message carrying the tool calls (no content field). + turnMsgs = append(turnMsgs, mcp.Message{ + Role: "assistant", + ToolCalls: resp.ToolCalls, + }) + + // Execute each tool call and append the results as tool messages. + for _, tc := range resp.ToolCalls { + var apiReq apiRequest + if err := json.Unmarshal([]byte(tc.Function.Arguments), &apiReq); err != nil { + logger.Errorf("Agent: invalid tool args for call %s: %v", tc.ID, err) + turnMsgs = append(turnMsgs, mcp.Message{ + Role: "tool", + ToolCallID: tc.ID, + Content: fmt.Sprintf(`{"error":"invalid arguments: %s"}`, err.Error()), + }) + continue + } + logger.Infof("Agent: iter=%d tool=%s %s %s", i+1, tc.ID, apiReq.Method, apiReq.Path) + result := a.apiTool.execute(&apiReq) + turnMsgs = append(turnMsgs, mcp.Message{ + Role: "tool", + ToolCallID: tc.ID, + Content: result, + }) + } + } + + // Safety: max iterations reached. + logger.Warnf("Agent: max iterations (%d) reached for message: %q", maxIterations, userMessage) + reply := "操作已完成,请检查您的账户查看最新状态。" + a.memory.Add("user", userMessage) + a.memory.Add("assistant", reply) + return reply +} + +// ResetMemory clears conversation history (called on /start). +func (a *Agent) ResetMemory() { + a.memory.ResetFull() +} diff --git a/telegram/agent/agent_test.go b/telegram/agent/agent_test.go new file mode 100644 index 00000000..ff2e0e41 --- /dev/null +++ b/telegram/agent/agent_test.go @@ -0,0 +1,439 @@ +package agent + +import ( + "fmt" + "net/http" + "net/http/httptest" + "strings" + "testing" + "time" + + "nofx/mcp" +) + +// mockLLM implements mcp.AIClient using pre-programmed LLMResponse objects. +// Native function calling: CallWithRequestFull is the primary method; +// CallWithRequest and CallWithRequestStream are stubs kept for interface compliance. +type mockLLM struct { + responses []*mcp.LLMResponse + calls int + lastMsgs []mcp.Message +} + +func (m *mockLLM) SetAPIKey(_, _, _ string) {} +func (m *mockLLM) SetTimeout(_ time.Duration) {} + +func (m *mockLLM) CallWithMessages(_, _ string) (string, error) { return "", nil } + +func (m *mockLLM) CallWithRequest(req *mcp.Request) (string, error) { + r, err := m.next() + if err != nil { + return "", err + } + return r.Content, nil +} + +func (m *mockLLM) CallWithRequestStream(req *mcp.Request, onChunk func(string)) (string, error) { + r, err := m.next() + if err != nil { + return "", err + } + if onChunk != nil { + onChunk(r.Content) + } + return r.Content, nil +} + +func (m *mockLLM) CallWithRequestFull(req *mcp.Request) (*mcp.LLMResponse, error) { + m.lastMsgs = req.Messages + return m.next() +} + +func (m *mockLLM) next() (*mcp.LLMResponse, error) { + if m.calls < len(m.responses) { + r := m.responses[m.calls] + m.calls++ + return r, nil + } + return &mcp.LLMResponse{Content: "OK"}, nil +} + +// toolCall builds a mock LLM response that contains a single tool invocation. +func toolCall(id, method, path string, body string) *mcp.LLMResponse { + if body == "" { + body = "{}" + } + return &mcp.LLMResponse{ + ToolCalls: []mcp.ToolCall{{ + ID: id, + Type: "function", + Function: mcp.ToolCallFunction{ + Name: "api_request", + Arguments: fmt.Sprintf(`{"method":%q,"path":%q,"body":%s}`, method, path, body), + }, + }}, + } +} + +// textReply builds a mock LLM response with a plain-text final answer. +func textReply(content string) *mcp.LLMResponse { + return &mcp.LLMResponse{Content: content} +} + +func mockGetLLM(llm *mockLLM) func() mcp.AIClient { + return func() mcp.AIClient { return llm } +} + +const testPrompt = "You are a test assistant." + +// mockAPIServer creates a test HTTP server with configurable route handlers. +func mockAPIServer(handlers map[string]string) (*httptest.Server, int) { + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + key := r.Method + " " + r.URL.Path + if body, ok := handlers[key]; ok { + w.Write([]byte(body)) //nolint:errcheck + return + } + // Also try path-only match (for GET) + if body, ok := handlers[r.URL.Path]; ok { + w.Write([]byte(body)) //nolint:errcheck + return + } + w.WriteHeader(http.StatusNotFound) + w.Write([]byte(`{"error":"not found"}`)) //nolint:errcheck + })) + var port int + fmt.Sscanf(srv.Listener.Addr().String(), "127.0.0.1:%d", &port) + return srv, port +} + +// ── Basic agent behaviour ────────────────────────────────────────────────── + +// TestAgentDirectReply: LLM replies with text (no tool calls) — one LLM call. +func TestAgentDirectReply(t *testing.T) { + llm := &mockLLM{responses: []*mcp.LLMResponse{textReply("Hello! How can I help you?")}} + a := New(8080, "tok", "test-user", mockGetLLM(llm), testPrompt) + + reply := a.Run("hello", nil) + + if reply != "Hello! How can I help you?" { + t.Fatalf("unexpected reply: %q", reply) + } + if llm.calls != 1 { + t.Fatalf("expected 1 LLM call, got %d", llm.calls) + } +} + +// TestAgentAPICall: LLM makes one tool call, gets result, gives final reply — two LLM calls. +func TestAgentAPICall(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/my-traders": `[{"trader_id":"t1","trader_name":"BTC Trader","is_running":false}]`, + }) + defer srv.Close() + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "GET", "/api/my-traders", "{}"), + textReply("You have one trader: BTC Trader."), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + + reply := a.Run("list my traders", nil) + + if reply != "You have one trader: BTC Trader." { + t.Fatalf("unexpected reply: %q", reply) + } + if llm.calls != 2 { + t.Fatalf("expected 2 LLM calls, got %d", llm.calls) + } +} + +// TestAgentMultiStep: LLM chains two tool calls before final reply — three LLM calls. +func TestAgentMultiStep(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/account": `{"total_equity":1000}`, + "/api/positions": `[]`, + }) + defer srv.Close() + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "GET", "/api/account", "{}"), + toolCall("c2", "GET", "/api/positions", "{}"), + textReply("Account looks healthy and no open positions."), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + + reply := a.Run("show me account status", nil) + + if llm.calls != 3 { + t.Fatalf("expected 3 LLM calls (2 tool + 1 final), got %d", llm.calls) + } + if reply != "Account looks healthy and no open positions." { + t.Fatalf("unexpected final reply: %q", reply) + } +} + +// TestAgentAPIResultInContext: tool result must appear as a tool message in the next LLM call. +func TestAgentAPIResultInContext(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/account": `{"balance":1234.56}`, + }) + defer srv.Close() + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "GET", "/api/account", "{}"), + textReply("Balance is 1234.56 USDT."), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + a.Run("show balance", nil) + + // The last request must contain a tool-result message with the balance data. + found := false + for _, msg := range llm.lastMsgs { + if msg.Role == "tool" && strings.Contains(msg.Content, "balance") { + found = true + break + } + } + if !found { + t.Fatalf("tool result message not found in subsequent LLM context; messages: %+v", llm.lastMsgs) + } +} + +// ── Narration-free architecture tests ───────────────────────────────────── + +// TestNarrationStructurallyImpossible: when ToolCalls are present in the response, +// any Content field is ignored and never surfaced to the user. +// In real LLM APIs, Content is always empty alongside ToolCalls, but we verify +// our agent handles a malformed response defensively. +func TestNarrationStructurallyImpossible(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/strategies": `[{"id":"s1","name":"BTC Trend"}]`, + }) + defer srv.Close() + + // Simulate a (malformed) response that has both Content and ToolCalls. + malformed := &mcp.LLMResponse{ + Content: "现在我将为您查询策略。", // narration — must NOT reach user + ToolCalls: []mcp.ToolCall{{ + ID: "c1", + Type: "function", + Function: mcp.ToolCallFunction{ + Name: "api_request", + Arguments: `{"method":"GET","path":"/api/strategies","body":{}}`, + }, + }}, + } + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + malformed, + textReply("你有1个策略:BTC Trend。"), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + reply := a.Run("查询我的策略", nil) + + if strings.Contains(reply, "现在我将") { + t.Fatalf("narration leaked into final reply: %q", reply) + } + if reply != "你有1个策略:BTC Trend。" { + t.Fatalf("unexpected reply: %q", reply) + } +} + +// TestOnChunkCalledWithFinalReply: onChunk receives the complete final reply. +func TestOnChunkCalledWithFinalReply(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/account": `{"equity":500}`, + }) + defer srv.Close() + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "GET", "/api/account", "{}"), + textReply("Equity: 500 USDT."), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + + var chunks []string + reply := a.Run("show equity", func(chunk string) { + chunks = append(chunks, chunk) + }) + + if reply != "Equity: 500 USDT." { + t.Fatalf("unexpected reply: %q", reply) + } + // Should have received ⏳ for the tool call, then the final reply. + if len(chunks) < 2 { + t.Fatalf("expected at least 2 chunks (⏳ + final), got: %v", chunks) + } + lastChunk := chunks[len(chunks)-1] + if lastChunk != "Equity: 500 USDT." { + t.Fatalf("last chunk should be final reply, got: %q", lastChunk) + } +} + +// ── Workflow tests ───────────────────────────────────────────────────────── + +// TestCreateStrategyWorkflow: simulates creating a BTC trend strategy. +// Verifies: POST strategy → GET verify → final reply shows strategy info. +func TestCreateStrategyWorkflow(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "POST /api/strategies": `{"id":"s1","name":"BTC趋势"}`, + "GET /api/strategies/s1": `{"id":"s1","name":"BTC趋势","config":{"coin_source":{"source_type":"static","static_coins":["BTC/USDT"]},"leverage":5}}`, + }) + defer srv.Close() + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "POST", "/api/strategies", `{"name":"BTC趋势","config":{}}`), + toolCall("c2", "GET", "/api/strategies/s1", "{}"), + textReply("策略已创建:BTC趋势,币种 BTC/USDT,杠杆 5x。"), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + reply := a.Run("帮我配置个btc趋势交易的策略", nil) + + if llm.calls != 3 { + t.Fatalf("expected 3 LLM calls, got %d", llm.calls) + } + if reply == "" { + t.Fatalf("empty final reply") + } +} + +// TestFullSetupWorkflow: create strategy → verify → create trader → start trader. +// This is the "帮我配置策略并跑起来" workflow. +func TestFullSetupWorkflow(t *testing.T) { + calls := map[string]int{} + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + key := r.Method + " " + r.URL.Path + calls[key]++ + switch key { + case "POST /api/strategies": + w.Write([]byte(`{"id":"s1","name":"BTC趋势"}`)) //nolint:errcheck + case "GET /api/strategies/s1": + w.Write([]byte(`{"id":"s1","name":"BTC趋势","config":{}}`)) //nolint:errcheck + case "POST /api/traders": + w.Write([]byte(`{"id":"tr1","name":"BTC趋势交易员"}`)) //nolint:errcheck + case "POST /api/traders/tr1/start": + w.Write([]byte(`{"ok":true}`)) //nolint:errcheck + default: + w.WriteHeader(http.StatusNotFound) + } + })) + defer srv.Close() + var port int + fmt.Sscanf(srv.Listener.Addr().String(), "127.0.0.1:%d", &port) + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "POST", "/api/strategies", `{"name":"BTC趋势"}`), + toolCall("c2", "GET", "/api/strategies/s1", "{}"), + toolCall("c3", "POST", "/api/traders", `{"name":"BTC趋势交易员","strategy_id":"s1"}`), + toolCall("c4", "POST", "/api/traders/tr1/start", "{}"), + textReply("策略和交易员已创建并启动!BTC趋势交易员正在运行。"), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + reply := a.Run("帮我配置个btc趋势交易的策略交易 跑起来", nil) + + if llm.calls != 5 { + t.Fatalf("expected 5 LLM calls, got %d", llm.calls) + } + if calls["POST /api/strategies"] != 1 { + t.Errorf("expected 1 POST /api/strategies, got %d", calls["POST /api/strategies"]) + } + if calls["POST /api/traders"] != 1 { + t.Errorf("expected 1 POST /api/traders, got %d", calls["POST /api/traders"]) + } + if calls["POST /api/traders/tr1/start"] != 1 { + t.Errorf("expected 1 POST /api/traders/tr1/start, got %d", calls["POST /api/traders/tr1/start"]) + } + if reply == "" { + t.Fatalf("empty final reply") + } +} + +// TestStartExistingTrader: when trader already exists, just start it. +func TestStartExistingTrader(t *testing.T) { + calls := map[string]int{} + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + key := r.Method + " " + r.URL.Path + calls[key]++ + switch key { + case "GET /api/my-traders": + w.Write([]byte(`[{"trader_id":"tr1","trader_name":"BTC Trader","is_running":false}]`)) //nolint:errcheck + case "POST /api/traders/tr1/start": + w.Write([]byte(`{"ok":true}`)) //nolint:errcheck + default: + w.WriteHeader(http.StatusNotFound) + } + })) + defer srv.Close() + var port int + fmt.Sscanf(srv.Listener.Addr().String(), "127.0.0.1:%d", &port) + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("c1", "GET", "/api/my-traders", "{}"), + toolCall("c2", "POST", "/api/traders/tr1/start", "{}"), + textReply("交易员 BTC Trader 已启动。"), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + reply := a.Run("启动交易员", nil) + + if calls["POST /api/traders/tr1/start"] != 1 { + t.Errorf("expected trader to be started, got %d start calls", calls["POST /api/traders/tr1/start"]) + } + if reply != "交易员 BTC Trader 已启动。" { + t.Fatalf("unexpected reply: %q", reply) + } +} + +// ── Safety limit ─────────────────────────────────────────────────────────── + +// TestMaxIterations: agent terminates after maxIterations and returns fallback message. +func TestMaxIterations(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/account": `{"ok":true}`, + }) + defer srv.Close() + + // Always returns another tool call — should hit max iterations. + responses := make([]*mcp.LLMResponse, maxIterations+2) + for i := range responses { + responses[i] = toolCall(fmt.Sprintf("c%d", i), "GET", "/api/account", "{}") + } + + llm := &mockLLM{responses: responses} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + reply := a.Run("loop forever", nil) + + if reply == "" { + t.Fatalf("expected a fallback reply, got empty string") + } + // Agent should have made exactly maxIterations tool-call LLM calls. + if llm.calls != maxIterations { + t.Fatalf("expected %d LLM calls (max iterations), got %d", maxIterations, llm.calls) + } +} + +// TestToolCallIDPropagated: tool result messages carry the correct ToolCallID. +func TestToolCallIDPropagated(t *testing.T) { + srv, port := mockAPIServer(map[string]string{ + "/api/account": `{"balance":999}`, + }) + defer srv.Close() + + llm := &mockLLM{responses: []*mcp.LLMResponse{ + toolCall("call-xyz-123", "GET", "/api/account", "{}"), + textReply("Balance is 999."), + }} + a := New(port, "tok", "test-user", mockGetLLM(llm), testPrompt) + a.Run("check balance", nil) + + // Find the tool result message and verify ToolCallID matches. + found := false + for _, msg := range llm.lastMsgs { + if msg.Role == "tool" && msg.ToolCallID == "call-xyz-123" { + found = true + break + } + } + if !found { + t.Fatalf("tool result with ToolCallID='call-xyz-123' not found in messages: %+v", llm.lastMsgs) + } +} diff --git a/telegram/agent/apicall.go b/telegram/agent/apicall.go new file mode 100644 index 00000000..eca6b9d5 --- /dev/null +++ b/telegram/agent/apicall.go @@ -0,0 +1,88 @@ +package agent + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "nofx/logger" + "strings" + "time" +) + +// apiCallTool executes HTTP requests against the NOFX API server. +// This is the only tool available to the agent. +type apiCallTool struct { + baseURL string + token string + client *http.Client +} + +// apiRequest holds the arguments decoded from the LLM's api_request tool call. +type apiRequest struct { + Method string `json:"method"` + Path string `json:"path"` + Body map[string]any `json:"body"` +} + +func newAPICallTool(port int, token string) *apiCallTool { + return &apiCallTool{ + baseURL: fmt.Sprintf("http://127.0.0.1:%d", port), + token: token, + client: &http.Client{Timeout: 30 * time.Second}, + } +} + +// execute calls the API and returns the response as a string for LLM consumption. +func (t *apiCallTool) execute(req *apiRequest) string { + if req.Method == "" || req.Path == "" { + return "error: method and path are required" + } + if !strings.HasPrefix(req.Path, "/") { + req.Path = "/" + req.Path + } + + var bodyReader io.Reader + if req.Method != "GET" && len(req.Body) > 0 { + b, err := json.Marshal(req.Body) + if err != nil { + return fmt.Sprintf("error marshaling body: %v", err) + } + bodyReader = bytes.NewReader(b) + } + + httpReq, err := http.NewRequest(req.Method, t.baseURL+req.Path, bodyReader) + if err != nil { + return fmt.Sprintf("error creating request: %v", err) + } + httpReq.Header.Set("Content-Type", "application/json") + httpReq.Header.Set("Authorization", "Bearer "+t.token) + + resp, err := t.client.Do(httpReq) + if err != nil { + return fmt.Sprintf("API call failed: %v", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return fmt.Sprintf("error reading response: %v", err) + } + + logger.Infof("Agent api_call: %s %s -> %d", req.Method, req.Path, resp.StatusCode) + + if resp.StatusCode >= 400 { + return fmt.Sprintf("API error %d: %s", resp.StatusCode, string(body)) + } + + // Pretty-print JSON for better LLM readability + var v any + if json.Unmarshal(body, &v) == nil { + if pretty, err := json.MarshalIndent(v, "", " "); err == nil { + return string(pretty) + } + } + return string(body) +} + diff --git a/telegram/agent/manager.go b/telegram/agent/manager.go new file mode 100644 index 00000000..d461c28b --- /dev/null +++ b/telegram/agent/manager.go @@ -0,0 +1,79 @@ +package agent + +import ( + "nofx/logger" + "nofx/mcp" + "sync" + "time" +) + +// Manager holds one Agent per Telegram chat ID. +// Messages for the same chat are serialized (OpenClaw Lane Queue pattern). +type Manager struct { + mu sync.Mutex + agents map[int64]*Agent + lanes map[int64]chan struct{} + apiPort int + botToken string + userID string + getLLM func() mcp.AIClient + systemPrompt string +} + +// NewManager creates a Manager. Call api.GetAPIDocs() before this and pass the result as apiDocs. +// userEmail is the registered email shown to the user when they ask "who am I". +// userID is the internal DB UUID used for API authentication. +func NewManager(apiPort int, botToken, userEmail, userID string, getLLM func() mcp.AIClient, apiDocs string) *Manager { + return &Manager{ + agents: make(map[int64]*Agent), + lanes: make(map[int64]chan struct{}), + apiPort: apiPort, + botToken: botToken, + userID: userID, + getLLM: getLLM, + systemPrompt: BuildAgentPrompt(apiDocs, userEmail, userID), + } +} + +// Run processes a message for the given chat ID. +// If the same chat is already processing a message, this call blocks until it completes +// or the lane wait times out (60 s), whichever comes first. +// onChunk is optional — when set, LLM reply chunks are forwarded progressively (SSE streaming). +func (m *Manager) Run(chatID int64, userMessage string, onChunk func(string)) string { + a, lane := m.getOrCreate(chatID) + select { + case lane <- struct{}{}: + case <-time.After(60 * time.Second): + logger.Warnf("Agent: lane wait timeout for chat %d — previous message still processing", chatID) + return "上一条消息仍在处理中,请稍等片刻后再试。" + } + defer func() { <-lane }() + return a.Run(userMessage, onChunk) +} + +// Reset clears memory for the given chat (called on /start). +func (m *Manager) Reset(chatID int64) { + m.mu.Lock() + a, ok := m.agents[chatID] + m.mu.Unlock() + if ok { + a.ResetMemory() + } +} + +func (m *Manager) getOrCreate(chatID int64) (*Agent, chan struct{}) { + m.mu.Lock() + defer m.mu.Unlock() + + a, ok := m.agents[chatID] + if !ok { + a = New(m.apiPort, m.botToken, m.userID, m.getLLM, m.systemPrompt) + m.agents[chatID] = a + } + lane, ok := m.lanes[chatID] + if !ok { + lane = make(chan struct{}, 1) // binary semaphore: one message at a time per chat + m.lanes[chatID] = lane + } + return a, lane +} diff --git a/telegram/agent/prompt.go b/telegram/agent/prompt.go new file mode 100644 index 00000000..c54bf5ee --- /dev/null +++ b/telegram/agent/prompt.go @@ -0,0 +1,97 @@ +package agent + +import "fmt" + +// BuildAgentPrompt constructs the full system prompt with live API documentation injected. +// apiDocs is the output of api.GetAPIDocs() — reflects all currently registered routes with full schemas. +// userEmail is the registered email of the bound user (shown when user asks "who am I"). +// userID is the internal DB UUID used for API authentication only. +func BuildAgentPrompt(apiDocs, userEmail, userID string) string { + return fmt.Sprintf(`You are the NOFX quantitative trading system AI assistant. + +## Your Identity +- You are operating as: %s +- Internal user ID (for API calls only): %s +- When asked "which user / account / email" — answer with the email address above +- All API calls are made on behalf of this user + +## Tool: api_request +Use the api_request tool to call the NOFX REST API: +- method: "GET" | "POST" | "PUT" | "DELETE" +- path: API path; query params go in the path: /api/positions?trader_id=xxx +- body: JSON object (use {} for GET requests) + +## NOFX API Documentation + +%s + +## CRITICAL: Exact ID Rule (read this before every API call) +API fields like "ai_model_id", "exchange_id", "strategy_id", "trader_id" require the EXACT "id" value +from the corresponding API response. NEVER use "provider", "type", or any other field as a substitute. + +Wrong: {"ai_model_id": "deepseek"} ← "deepseek" is the provider, NOT the id +Correct: {"ai_model_id": "abc123_deepseek"} ← full "id" from GET /api/models + +The Account State block at the start of this conversation lists every resource with its exact id. +Read the id field from there and copy it verbatim — do not abbreviate, shorten, or guess. + +## Behavior Rules +1. Reply in the same language the user used (中文→中文, English→English) +2. Keep final replies concise — show results, not process +3. Ask for ALL missing required info in ONE message — never ask one field at a time +4. When user provides enough info, act immediately — no confirmation needed +5. Be decisive — infer intent from context, use schema to fill in smart defaults + +## Verification Rule (CRITICAL) +After ANY PUT or POST that creates or modifies a resource: +1. Immediately GET the resource to read actual saved values +2. Show the user the KEY fields they care about from the GET response +3. NEVER just say "updated successfully" without showing the actual values +4. If saved values look wrong, correct them automatically + +## Error Handling +- 400: explain what was wrong, ask user to correct +- 404: resource doesn't exist — you may have used the wrong ID format; check the Account State for the exact id +- "AI model not enabled": tell user to enable the model first via PUT /api/models +- "Exchange not enabled": tell user to enable the exchange first +- 5xx: server error, ask user to try again + +## Account State (injected at conversation start) +At the start of each new conversation, a [Current Account State] block is provided with: +- AI Models: all configured models with their IDs and enabled status +- Exchanges: all configured exchanges with their IDs and enabled status +- Strategies: all existing strategies with their IDs +- Traders: all existing traders with their IDs and running status + +Use this to: +- NEVER ask for exchange/model info that is already configured — use the existing IDs directly +- Know instantly if the user has 0 or N resources of each type +- If only one exchange/model exists and user doesn't specify, use it directly without asking +- If multiple exist, list them and ask which one to use + +## Common Workflows + +**Create strategy** (independent from traders): +- Never GET trader info just to create a strategy. +- POST {"name":""} — config is OPTIONAL. Backend applies complete working defaults automatically (ai500 top coins, all indicators, standard risk control). Strategy is immediately usable. +- Only include "config" when user explicitly requests custom settings (specific coins, custom leverage, different timeframes). +- After POST: GET /api/strategies/:id to verify → show user: name, coin_source.source_type, key risk_control values + +**"帮我配置策略并跑起来" / "create strategy and start" (full setup workflow)**: +Execute these steps IN ORDER with NO user confirmation between them: +1. POST /api/strategies — body: {"name":""} — no config needed, defaults are complete +2. GET /api/strategies/:id — verify strategy was saved +3. POST /api/traders — create trader: use exchange_id and model_id from Account State (if only one each, use directly); set strategy_id from step 1; set name matching the strategy +4. POST /api/traders/:id/start — start the trader +5. Final reply: show strategy name, trader name, coin source, confirm running + +**Update strategy config**: +1. GET /api/strategies/:id to read current full config +2. Modify only what user asked (keep all other fields) +3. PUT /api/strategies/:id with complete merged config +4. GET /api/strategies/:id to verify → show user actual saved values for changed fields + +**Start/stop existing trader**: From Account State, if only one trader, act directly. If multiple, list and ask. + +**Query data**: Use trader_id from Account State, then query /api/positions?trader_id=xxx or /api/account?trader_id=xxx etc.`, userEmail, userID, apiDocs) +} diff --git a/telegram/bot.go b/telegram/bot.go new file mode 100644 index 00000000..e80e4c5a --- /dev/null +++ b/telegram/bot.go @@ -0,0 +1,479 @@ +package telegram + +import ( + "nofx/api" + "nofx/config" + "nofx/logger" + "nofx/mcp" + "nofx/store" + "nofx/telegram/agent" + "os" + "strings" + "sync" + "time" + + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" +) + +// Start initializes and runs the Telegram bot in a blocking supervisor loop. +// Supports hot-reload: when a signal is sent on reloadCh, the bot restarts +// with the latest token (re-read from DB or env). Must be called as a goroutine from main.go. +func Start(cfg *config.Config, st *store.Store, reloadCh <-chan struct{}) { + for { + token := resolveToken(cfg, st) + if token == "" { + logger.Info("Telegram bot disabled (no token configured), waiting for reload signal...") + <-reloadCh + continue + } + + stopped := runBot(token, cfg, st) + if !stopped { + return + } + + select { + case <-reloadCh: + logger.Info("Reloading Telegram bot with new token...") + } + } +} + +// resolveToken returns the bot token from DB (configured via Web UI). +func resolveToken(cfg *config.Config, st *store.Store) string { + dbCfg, err := st.TelegramConfig().Get() + if err == nil && dbCfg.BotToken != "" { + return dbCfg.BotToken + } + return "" +} + +// runBot runs the bot until the updates channel closes (clean stop → true) or a fatal error (false). +func runBot(token string, cfg *config.Config, st *store.Store) bool { + bot, err := tgbotapi.NewBotAPI(token) + if err != nil { + logger.Errorf("Telegram bot failed to start: %v", err) + return false + } + logger.Infof("Telegram bot @%s started", bot.Self.UserName) + + // Allowed chat ID: read from DB binding (0 = unbound, first /start will bind). + allowedChatID := int64(0) + if id, err := st.TelegramConfig().GetBoundChatID(); err == nil && id != 0 { + allowedChatID = id + } + + // botUserID / botToken / agents are resolved lazily and refresh when user registers. + var ( + botUserID string + botUserEmail string + botToken string + agents *agent.Manager + ) + + resolveBotUser := func() bool { + users, err := st.User().GetAll() + if err != nil || len(users) == 0 { + return false + } + u := users[0] + if u.ID == botUserID { + return true + } + newToken, err := agent.GenerateBotToken(u.ID) + if err != nil { + logger.Errorf("Failed to generate bot JWT for user %s: %v", u.ID, err) + return false + } + prev := botUserID + botUserID = u.ID + botUserEmail = u.Email + botToken = newToken + agents = agent.NewManager(cfg.APIServerPort, botToken, botUserEmail, botUserID, + func() mcp.AIClient { return newLLMClient(st, botUserID) }, + api.GetAPIDocs(), + ) + if prev == "" { + logger.Infof("Bot: resolved user %s (%s)", botUserID, botUserEmail) + } else { + logger.Infof("Bot: user changed → %s (%s)", botUserID, botUserEmail) + } + return true + } + resolveBotUser() + + u := tgbotapi.NewUpdate(0) + u.Timeout = 60 + updates := bot.GetUpdatesChan(u) + + // awaitingLang is set only when the user explicitly runs /lang. + awaitingLang := false + + for update := range updates { + if update.Message == nil { + continue + } + chatID := update.Message.Chat.ID + text := strings.TrimSpace(update.Message.Text) + + // ── Language selection (triggered only by /lang) ────────────────────── + if awaitingLang && chatID == allowedChatID { + if lang := parseLangChoice(text); lang != "" { + awaitingLang = false + st.TelegramConfig().SetLanguage(lang) //nolint:errcheck + sendMarkdownMsg(bot, chatID, statusMsg(st, botUserID, cfg.APIServerPort, lang)) + } else { + sendMarkdownMsg(bot, chatID, langMenuMsg()) + } + continue + } + + // ── /start ──────────────────────────────────────────────────────────── + if text == "/start" { + resolveBotUser() + if botUserID == "" { + sendMsg(bot, chatID, + "No account found.\nOpen the web dashboard to register, then send /start.") + continue + } + if allowedChatID == 0 { + username := update.Message.From.UserName + if err := st.TelegramConfig().BindUser(chatID, "@"+username); err != nil { + logger.Errorf("Failed to bind Telegram user: %v", err) + sendMsg(bot, chatID, "Binding failed. Please try again.") + continue + } + allowedChatID = chatID + logger.Infof("Telegram bound to @%s (chatID: %d)", username, chatID) + } else if chatID != allowedChatID { + sendMsg(bot, chatID, "This bot is already bound to another account.") + continue + } else { + agents.Reset(chatID) + } + lang := st.TelegramConfig().GetLanguage() + sendMarkdownMsg(bot, chatID, statusMsg(st, botUserID, cfg.APIServerPort, lang)) + continue + } + + // ── /lang ───────────────────────────────────────────────────────────── + if text == "/lang" { + awaitingLang = true + sendMarkdownMsg(bot, chatID, langMenuMsg()) + continue + } + + // ── /help ───────────────────────────────────────────────────────────── + if text == "/help" { + lang := st.TelegramConfig().GetLanguage() + sendMarkdownMsg(bot, chatID, helpMsg(lang)) + continue + } + + // ── Access control ──────────────────────────────────────────────────── + if allowedChatID != 0 && chatID != allowedChatID { + sendMsg(bot, chatID, "Unauthorized.") + continue + } + if allowedChatID == 0 { + sendMsg(bot, chatID, "Send /start first.") + continue + } + if text == "" { + continue + } + + // ── Refresh user before every AI call ──────────────────────────────── + resolveBotUser() + if botUserID == "" { + sendMsg(bot, chatID, "No account found. Open the web dashboard to register.") + continue + } + + lang := st.TelegramConfig().GetLanguage() + + // ── Guard: show status if not ready for trading ─────────────────────── + if newLLMClient(st, botUserID) == nil { + sendMarkdownMsg(bot, chatID, statusMsg(st, botUserID, cfg.APIServerPort, lang)) + continue + } + + // ── AI agent ───────────────────────────────────────────────────────── + go func(chatID int64, text string) { + sent, err := bot.Send(tgbotapi.NewMessage(chatID, "⏳")) + placeholderID := 0 + if err == nil { + placeholderID = sent.MessageID + } + + var ( + mu sync.Mutex + lastEdit time.Time + ) + onChunk := func(accumulated string) { + if placeholderID == 0 { + return + } + mu.Lock() + defer mu.Unlock() + if accumulated != "⏳" && time.Since(lastEdit) < time.Second { + return + } + lastEdit = time.Now() + edit := tgbotapi.NewEditMessageText(chatID, placeholderID, accumulated) + bot.Send(edit) //nolint:errcheck + } + + reply := agents.Run(chatID, text, onChunk) + + if placeholderID != 0 { + edit := tgbotapi.NewEditMessageText(chatID, placeholderID, reply) + edit.ParseMode = "Markdown" + if _, err := bot.Send(edit); err != nil { + edit2 := tgbotapi.NewEditMessageText(chatID, placeholderID, reply) + bot.Send(edit2) //nolint:errcheck + } + } else { + msg := tgbotapi.NewMessage(chatID, reply) + msg.ParseMode = "Markdown" + if _, err := bot.Send(msg); err != nil { + msg.ParseMode = "" + bot.Send(msg) //nolint:errcheck + } + } + }(chatID, text) + } + + return true +} + +// ── Helpers ─────────────────────────────────────────────────────────────────── + +func sendMsg(bot *tgbotapi.BotAPI, chatID int64, text string) { + msg := tgbotapi.NewMessage(chatID, text) + bot.Send(msg) //nolint:errcheck +} + +func sendMarkdownMsg(bot *tgbotapi.BotAPI, chatID int64, text string) { + msg := tgbotapi.NewMessage(chatID, text) + msg.ParseMode = "Markdown" + if _, err := bot.Send(msg); err != nil { + plain := tgbotapi.NewMessage(chatID, text) + bot.Send(plain) //nolint:errcheck + } +} + +// ── LLM client ─────────────────────────────────────────────────────────────── + +func newLLMClient(st *store.Store, userID string) mcp.AIClient { + // 1. Prefer the model explicitly configured for Telegram (Settings → Telegram → AI Model) + if tgCfg, err := st.TelegramConfig().Get(); err == nil && tgCfg.ModelID != "" { + if model, err := st.AIModel().Get(userID, tgCfg.ModelID); err == nil && model.Enabled { + apiKey := string(model.APIKey) + if apiKey != "" { + client := clientForProvider(model.Provider) + client.SetAPIKey(apiKey, model.CustomAPIURL, model.CustomModelName) + if isUSDCProvider(model.Provider) { + logger.Infof("Telegram agent: provider=%s (USDC payment) user=%s", model.Provider, userID) + } else { + logger.Infof("Telegram agent: provider=%s user=%s", model.Provider, userID) + } + return client + } + } + } + + // 2. Fall back to first enabled model + if model, err := st.AIModel().GetDefault(userID); err == nil { + apiKey := string(model.APIKey) + if apiKey != "" { + client := clientForProvider(model.Provider) + client.SetAPIKey(apiKey, model.CustomAPIURL, model.CustomModelName) + if isUSDCProvider(model.Provider) { + logger.Infof("Telegram agent: provider=%s (USDC payment) user=%s", model.Provider, userID) + } else { + logger.Infof("Telegram agent: provider=%s user=%s", model.Provider, userID) + } + return client + } + } + + // 3. Environment variable fallback + for _, pair := range []struct{ provider, key, url string }{ + {"deepseek", os.Getenv("DEEPSEEK_API_KEY"), mcp.DefaultDeepSeekBaseURL}, + {"openai", os.Getenv("OPENAI_API_KEY"), ""}, + {"claude", os.Getenv("ANTHROPIC_API_KEY"), ""}, + } { + if pair.key != "" { + client := clientForProvider(pair.provider) + client.SetAPIKey(pair.key, pair.url, "") + return client + } + } + return nil +} + +// isUSDCProvider returns true for providers that pay per call with USDC (x402 protocol). +func isUSDCProvider(provider string) bool { + return provider == "blockrun-base" || provider == "blockrun-sol" || provider == "claw402" +} + +func clientForProvider(provider string) mcp.AIClient { + switch provider { + case "openai": + return mcp.NewOpenAIClient() + case "deepseek": + return mcp.NewDeepSeekClient() + case "claude": + return mcp.NewClaudeClient() + case "qwen": + return mcp.NewQwenClient() + case "kimi": + return mcp.NewKimiClient() + case "grok": + return mcp.NewGrokClient() + case "gemini": + return mcp.NewGeminiClient() + case "minimax": + return mcp.NewMiniMaxClient() + case "blockrun-base": + return mcp.NewBlockRunBaseClient() + case "blockrun-sol": + return mcp.NewBlockRunSolClient() + case "claw402": + return mcp.NewClaw402Client() + default: + return mcp.NewDeepSeekClient() + } +} + +// ── Status message ──────────────────────────────────────────────────────────── + +// statusMsg is the single entry-point message shown after /start. +// It checks what's configured and shows either a setup prompt or the ready state. +func statusMsg(st *store.Store, userID string, apiPort int, lang string) string { + webURL := "http://localhost:3000" + + // Determine what's missing. + hasModel := false + if _, err := st.AIModel().GetDefault(userID); err == nil { + hasModel = true + } + + hasExchange := false + if exchanges, err := st.Exchange().List(userID); err == nil { + for _, e := range exchanges { + if e.Enabled { + hasExchange = true + break + } + } + } + + if !hasModel || !hasExchange { + missing := "" + if lang == "zh" { + if !hasModel { + missing += "\n❌ AI 模型 → 设置 → AI 模型 → 添加" + } + if !hasExchange { + missing += "\n❌ 交易所 → 设置 → 交易所 → 添加" + } + return "⚙️ *需要完成初始配置*\n\n打开 Web 管理界面完成配置:\n→ " + webURL + "\n" + missing + "\n\n配置完成后发送 /start" + } + if !hasModel { + missing += "\n❌ AI Model → Settings → AI Models → Add" + } + if !hasExchange { + missing += "\n❌ Exchange → Settings → Exchanges → Add" + } + return "⚙️ *Setup required*\n\nOpen the web dashboard to complete setup:\n→ " + webURL + "\n" + missing + "\n\nSend /start when done." + } + + // All configured — show ready state. + if lang == "zh" { + return `✅ *NOFX 就绪,开始交易吧!* + +直接告诉我你想做什么: + +📊 "查看我的持仓" +💰 "账户余额多少" +🤖 "帮我创建 BTC 趋势策略并启动" +⏹ "停止所有交易员" + +/help 查看更多 · /lang 切换语言` + } + return `✅ *NOFX is ready!* + +Just tell me what you want: + +📊 "Show my positions" +💰 "What's my balance?" +🤖 "Create a BTC trend strategy and start it" +⏹ "Stop all traders" + +/help for more · /lang to change language` +} + +// ── Language ────────────────────────────────────────────────────────────────── + +func langMenuMsg() string { + return "🌐 *Choose your language*\n\n1 — English\n2 — 中文\n\nReply with 1 or 2" +} + +func parseLangChoice(text string) string { + switch strings.TrimSpace(text) { + case "1", "en", "EN", "English", "english": + return "en" + case "2", "zh", "ZH", "中文", "chinese", "Chinese": + return "zh" + } + return "" +} + +// ── Help ────────────────────────────────────────────────────────────────────── + +func helpMsg(lang string) string { + if lang == "zh" { + return `*NOFX 使用指南* + +*查询* +• "查看我的持仓" +• "账户余额多少" +• "列出我的交易员" + +*创建 & 启动* +• "帮我创建 BTC 趋势策略并跑起来" +• "保守型策略,只交易 BTC 和 ETH" + +*控制* +• "启动交易员" +• "暂停交易员" +• "停止所有交易" + +*命令* +/start — 刷新状态 +/lang — 切换语言 +/help — 帮助` + } + return `*NOFX Help* + +*Query* +• "Show my positions" +• "What's my balance?" +• "List my traders" + +*Create & start* +• "Create a BTC trend strategy and start it" +• "Conservative strategy, BTC and ETH only" + +*Control* +• "Start trader" +• "Stop trader" +• "Stop all trading" + +*Commands* +/start — refresh status +/lang — change language +/help — show this` +} diff --git a/telegram/session/memory.go b/telegram/session/memory.go new file mode 100644 index 00000000..30e84b2c --- /dev/null +++ b/telegram/session/memory.go @@ -0,0 +1,105 @@ +package session + +import ( + "fmt" + "nofx/mcp" + "strings" +) + +const ( + compactionThresholdTokens = 3000 + charsPerToken = 3 // rough estimate for token counting +) + +type Message struct { + Role string // "user" or "assistant" + Content string +} + +// Memory manages conversation history with automatic compaction. +// Inspired by openclaw's compaction pattern: +// when ShortTerm exceeds threshold, LLM silently summarizes it into LongTerm. +type Memory struct { + LongTerm string // Durable summary (survives compaction, user never sees this happen) + ShortTerm []Message // Recent conversation (cleared on compaction) + llm mcp.AIClient +} + +func NewMemory(llm mcp.AIClient) *Memory { + return &Memory{llm: llm} +} + +// Add appends a message and triggers compaction if threshold exceeded +func (m *Memory) Add(role, content string) { + m.ShortTerm = append(m.ShortTerm, Message{Role: role, Content: content}) + if m.estimateTokens() > compactionThresholdTokens { + m.compact() + } +} + +// BuildContext returns context string for the agent's conversation history. +func (m *Memory) BuildContext() string { + var sb strings.Builder + if m.LongTerm != "" { + sb.WriteString("[Summary of earlier conversation]\n") + sb.WriteString(m.LongTerm) + sb.WriteString("\n\n") + } + if len(m.ShortTerm) > 0 { + sb.WriteString("[Recent conversation]\n") + for _, msg := range m.ShortTerm { + sb.WriteString(fmt.Sprintf("%s: %s\n", msg.Role, msg.Content)) + } + } + return sb.String() +} + +// Reset clears short-term history (LongTerm preserved intentionally) +func (m *Memory) Reset() { + m.ShortTerm = []Message{} +} + +// ResetFull clears everything including long-term memory +func (m *Memory) ResetFull() { + m.ShortTerm = []Message{} + m.LongTerm = "" +} + +func (m *Memory) estimateTokens() int { + total := len(m.LongTerm) + for _, msg := range m.ShortTerm { + total += len(msg.Content) + } + return total / charsPerToken +} + +// compact summarizes short-term history into long-term memory. +// This runs silently - the user never sees it happen. +// If LLM call fails, short-term is preserved as-is (no data loss). +func (m *Memory) compact() { + if m.llm == nil || len(m.ShortTerm) == 0 { + return + } + history := m.BuildContext() + systemPrompt := `You are a conversation summarizer. Compress the following trading assistant conversation into a concise summary. + +Must preserve: +- What the user is configuring (strategy/exchange/model/trader) +- Confirmed parameters (trading pairs, leverage, stop loss, indicators, etc.) +- Pending or missing parameters +- User preferences and requirements + +Output: plain text summary, under 200 words.` + + summary, err := m.llm.CallWithMessages(systemPrompt, history) + if err != nil { + // Compaction failed: keep short-term as-is, never lose user data + return + } + if m.LongTerm != "" { + m.LongTerm = m.LongTerm + "\n" + summary + } else { + m.LongTerm = summary + } + m.ShortTerm = []Message{} +} diff --git a/trader/auto_trader.go b/trader/auto_trader.go index d2b1b905..3ee4777b 100644 --- a/trader/auto_trader.go +++ b/trader/auto_trader.go @@ -216,6 +216,11 @@ func NewAutoTrader(config AutoTraderConfig, st *store.Store, userID string) (*Au mcpClient.SetAPIKey(config.CustomAPIKey, "", config.CustomModelName) logger.Infof("🤖 [%s] Using BlockRun (Solana Wallet) AI", config.Name) + case "claw402": + mcpClient = mcp.NewClaw402Client() + mcpClient.SetAPIKey(config.CustomAPIKey, "", config.CustomModelName) + logger.Infof("🤖 [%s] Using Claw402 (Base USDC) AI", config.Name) + case "qwen": mcpClient = mcp.NewQwenClient() apiKey := config.QwenKey diff --git a/web/public/icons/claw402.png b/web/public/icons/claw402.png new file mode 100644 index 0000000000000000000000000000000000000000..613eaae0e10b419d66952720be7f57ec119c2ea4 GIT binary patch literal 816040 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 j5}YN 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≪%9YKJ;i~Zbp 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 L`Lg!*Bj;M4g%6-N}yQ;Fmrq*j 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 z ztIitFpj3k^TRsSSvpQQrqpMhJOB!|xrai?Hs_YjMpY}Op+Xr_ap0oPO=j?^g{%t#d ze&J(u;XfU;bB0l!BJK!qOG$s939KGOnnkN4k6HUsUYGlU{m z4Y7yl|LPU?L=d^tM@_W8UTGzTbFOU1O6XnIp@XBWcA65f$>#cuvBxlxY3BYi)j3(4 zZ5-q2V8!$^m}pxFPl?tCe?*^C)GsWR52O94JM+d{GjdiAho}Qn&dDe%Nx3p_r=L3&T<^WFgS@4iNOnuMGdYooKFe^9^wcx!p5>5 zIi$XEmY~)#Xk%d3DL@E97CZMHFJFpv8Wc&SKUr|{S*BxUgmWnjzmp@FOw{5}P%2v^ zvB2|YIslV#8Bo30w8OBt7 z$Ce}_c&6C!} zD(Xt_mTL_o<3nB#MhsA8GG#pIFidL*1!T>{a---&FrCNljks_kN+GI5F!Ew!<7#cM zzwsP~JtFaOaf#wW6rLdY%m)UnNdZ@<$11V0om1{-bu0(i69vPVa}QQudg)mk7NkdZ zBZYI&&YABS<9_shAE!ta-)l(d&SqKxR)alV1{v+smNf3S(J6xJBD!qS*{4w+ z?78P$q(HqgS%=OIFd9O=fqjjN3Mn>D?b_pi7aDd{Y}{`8P}=ry|Lo=Bf_>93UO`D#)VLu{hVqXwO8+es?tbI?1 zvjg~|;2iy)xr*)~Nnm%dChCUzKbgcHwq$K-k39HztAL&=;0vH+y6qe>;Wh*w+x6Bi zUOs2%FRpCUlDnKqo$90m3s6jbQ#SWr=J|&p6w<*E2OyT`?3t&&VjIlR*^_N9JPWY- zCrmyN(6hSSY0&UHtiF@Z8qS=u(QZ$iB8Xt2k^;glELw8S)&NpKt-ooF*wY*QJgT_e z#>M0De9VD(1lPr=LMhr=*uZ?EWOd(S!0dch2Ag{&>yBxf`g=y*Z=kITMaeh^^vsmq zC8{3OXbI@}dU#)nixT-ymwlUi6^t}7P`54_)cs(CD$YWZFcA9@C#-o@e+LrH90+~s zATgiItBThkTG1&jF`{E~AGY5RZd$r|S+*F`v=;wtsJ{dN0)*<^42+iXkb= z!d{&<%Fmm`cB(3rb7d~~WCi<1L3&huQst0wp52WoztLw_J0KAvE?nm`28BJjQa@6O zAdmzC4znIh=#lm0C3y=j2oQ6DU&&YYG-AFKx?3Q zEzNBTd{$D~W@W*lU4zx%*moR)Tj3+NEty6CQLC8xn6cyOlD+SD|JQcmoBy!Aezm=s zb%7{S+U&LDC?k<^s-34rUOSz##}gxI=t3+YL=h&uO0Z%Y#VAn+Pa&|xsF8!6@$*~u z82RT+V&eGBwG>%D3rkdyI=pYtQeQ>tdMYBnkKai$5u zjTCGq#A|Ex@6C7yD_}@6Q8?I%zm)`6(ZT`p<{506!F#iy77|pCL~J((i^{fpyi);{ zb01?tKf3S#J%WiibBu)$lje=U#GuU@_am|B`JA=Rw4dI{290<^_%sxO zLZ}pZRm6}Mm#`jqD%9Ekp;m!;DmN=KsfQ3Y2*hf zACQKX*ptG3tM+|Ifqe#yJ7HIA@m?4xmer0b(K+tZrK2%!!a-!YHjGV=uh;A`myS>n15r zO8(l|(}cl@2xiut=>e+Lp3$?6c(0?2kWBB`(T(Hwk$ZS1BqmNvjGnYghbJAGeoujH z^3P7iKtN2cQO!+Q?~~J$wlW<*L1#r)+z?vE{gD>y3Z|Pn44oX9N(ef)?^z3<^6~ zFZPO|@{lNV@72Kd=EN@CeFf{Bq1rgYX}SU+sR+3TwNa(;s@i>zJYttGU9orGeoJTf}iD+NC*0{_-f@GRR3+xnjO zzS}vzfn++{q&cbEuyLx{RmM_2AQLLPawpkl!bi>yF;Ldm6T$vEV37C zi{uHvTcX0Q1qRr%5VJsM&cEDkEL^U|pkUHzqK~au(8Qxp$#lM}oOaIaot%X~l<113 zk-At=yzTH~3UWntj)rAWn}W_G1ebkt{-05KovS}3lxR~_aJiq@lf`~FD=|Qw0R!jc zFi~f3*|EhO#p*r5sLqjTVS)ChL6yEU?0c+#4q=(-k10rcTzwLLgq$iN*zBCcJQbrl zUWxszN-O7ZX8Z$c6JL(T2ee>)!*@v^ssPv-E`w+~S}VLu$j?WkIFsRyJ%T_0-rr;HQXa1bguUG|6j*Jx?U?`{9Pf+Fa1jo(Y$(e0i0{zK9 z{v&qd-JiBs-e{i1?G1W82V45}+Ip9q(Xm5&zac>Z2W?i>+mt+42@1!oVPyXq5AQn)px4*(hRqj;^a44R$5ELs|gQ{5B z9|UsVl{U%$J}eIG@wAV^{3X|ZMWMhhxg+-#@yMRpryLLq}#6gV^SsWFg>6ui=mIrYvb3#!&k z=O7xBG&q)Y0A-vwr_u0CR1SkHla#<5A#=pfKO0S?6gOZ`j_5!&5ZnPt1~@$(4VbP`NKX<`y+<3`OPKxb$0+k4K zphqJIb&04E+qTxK>cpaz`Q2KTNXGz&MC0whw8FkPIcl|@lPw*T(_XZP2&NbVX%~!u zEpg=iyxwp7`Z%dyZ=hj?kjN1$E$z#D1%rdn?2{k+s!oZ72#0^xprAD=2}o7FbOp~n79#vxNAkv{o!+9b zg{#7m-#;;-E(--lTkG7Bs=bZlL_lG?xn}p?e+L7DW-munv2*`?{?b5uS-o-I2P}{F z=;I%@qnl^8$a^h_%IIC-I};!VA3HL6LbY_uio8i!20`38hQuRjCD(7hVqbpNE3kVw zmlmL$C@Ws2p`SXFL)Yg>D1!3E3sy}Pq*Ab^?e}^CeN>YM^HLId!29Cfl`u_`7?7U4 z^l|K=JXPfDSb3`A$#*f0Ocl!Lsq^cV64JJ71=EVy1a@H@1ClENiCy7|pbh(6algu6%`u4X8ZYp&r!Q*6wzNcYSX{<4(B8>pUUda zkfhtUSb=7pa`^sD7w(}FTm`K;D;_A4pXPpIQ#xY}2A_D70JP|9vQTh5PpV3q$R1&$ z6)b@RR6L^B4FuWFVSwn<@fW2~S;(4}y| zt5<`Hm~P&;0Wru&ZDG@9gr0OJLSiPguP2hKJb&)zuq|Ywqd5M*=k=vri#1 zr8u)j#lN#>#Ng;XV@t-ASwo*YeJ*IiqRL6-ZpakciKGX2re4>XsmWc65q0O_g-y7F5?jhp+%osOu&rqs7 zDpHEAQve1Fn=41V{a8B{r4)G!pKF|Xk<74RS{x-!W~Ni85xer;W8WC+^XroWrMNlK`- zWYuv-N;_j7zzqb39w27)BeA?mN1|rHNQkwBOdLiTq15j`hO-g{)dGMfrzANsiH-LY z3M-L-^zx|FAAzc$D)3Tca#Ht6qI9i0W*+1L0S9w;83s*(ww+!8G+=tNJ8kCR#e*Hp zPN@unggRMJDPk5-`)7T60*Cay-}mS3W1o1xJ^%cZP=HHG`(KpAEGl9*QbIDVo)Tqq zX=5ofme9}*R3!~IxAHY?ezmaIUwhSl@NfSm?t>KXRY`V#UQtJd7&AEwWtx~JW)>{bDXPJW&QUR5w8#Wn%*0SHzq?QwVg!rRa=wEDU;lX!2m!Z=Be(&pl`F z{m_T3UT@#?slcdg@Ws&IWG3Iba5#ZJ#5#r0$G#DP%yw?IZ%nhksI$WP@M zjlW;x9VH5GG>3Wl&MR%LCtNqz5L^-EtICmzOP(PSy@y1_mwU)`y+832|H3};iLbIp z9(~+SPj6YU7byWv`{t-91PIW_!5$nA@!Z+ zZyz3Bwk`*qW-2Ub!s4(eImzI(gASQ!QvhQ}FI?jM6K>0(OBL&q*$OPEk1EjGOscXW z5j|IR6Xyj*q9eI~_9t*ZVoT>8Ocit)RgXPz%^B~5XKV`^HUPJ>wfWClb|lH}n^`o& z`wSurW!Y*mz>*=+q#lc6oO{NA(R2d%;>Ysrv2}+&z3hcqe<|^(Q+;ga|5@6QN z8P6Q)z)a#iMB2*Ac+%@NLWl+=ohbzM6#W7ClnAhyVvmS4dw&_gunqSHel|pBwnnwq z_@kBpB%?=Md$%tQU>IG=v{l>Jt&0Ed-}bl6-uoNvts84QY(Q1r?qSXnz;VnYQl%BZ zT#>mdjIXffBhQw4fRKEn=gHSP_CsO}focGn|0LQX(7WmkRtE9-d5Eegu!ki2$mhfR zu-RrzjDaA0p}13~-U4Jtb)>)3u=&|Sop*Fwwb&red(XYep8T=DXfOW4{}n^zy^2*@ zygS%t_Juv(qHks`Md!f;-r;AWM=|2PVZMzb22+47!(wJZiJF*7o?{@t=fdhUKxur) zfS=_sV^$aYS)n1Mk|h>{i9Hgu&Kw(M2lyT+DwK7FWPP4rR7frMqbgzHKV%#k2dk%U z;tCZctQ;>?q3B#yiB<)%Q;8z(rNC2C6)A?M)3!4=h?b(DA6VOU+c?2MtNJk7|;`4&LXES|F$htVVR-@{~2TL<>#&axZ5djzY*0H#e zgjAWPG)ohPI6+kq#w$ieBi6F8$uEY>M$nd$b>Rp%Is*+J5ABw-ANn7nU$YRy+~64v z!l5FS^V}Pdv?-{qU*^x$?V+NPqB2+M^i9tt8Ur1ZY_qY7m7~F4$p&e8W8XMTZiz6M z1y_^Rn$%UHPAz0@!AtMR!GeK{pBE%8Uh%ldTXr;B6V6%gWs-xL7pe@E+sc;K-xvQB zpmC*_X=;C0M7V@N1aH;m;3ftF!%28RC}i2G2^15M$?*f@{bPPmwikGHAS9A1cK`r= zEejdi+L4o}J=X{_O7OLp{5hx8^=8FHDfaBhjM>rg3BLDd{@h=-4}Rpm_R_0gvAo=> z%wI6CAsn4o0keAF!Zvjj63Ar|Rir2xH?!V2sitI?H%)w=<#M#cgUh7R!ZgCiR)gWaB+e6V%5h+g0IVj};tDk#b+=o~9%41>GkYQz^gBp!J0R79Az+ z1Y=$qf8qHTut$bG$_X1kuVjl60;xNLKmv(GvTtIv7(nQkc3Jl2@|->X*az&z7rtT# z2P;gMpIb~+)zG_~wr6(X;vJy5og5!4iA<=}mZ&s#bw>dU?zWubBrKmM`y`Fkx%I+_6y*vT#EFPN5OM4sg z`7MBsBm|z+lhd;^yK>h9cITaUw~FRX`O_^?JK58q46-WbrsEv;8|NTqCVUjq){e1n!9{O0g%A zNp?EuIkfergu;5D07|tH^`|{aaLPIFtd|b?+&8ujKTNAtL(SB`I_kWR#<@>s6zEXj zK?5o{3_Su50ZQt1GmT@IZA(zZ7{svm&Ja99*58v~@3pAW$3)3{^fp$&ffmV)SFn5K zJSiEHyg9`jRu+9j2{w8Spbb^wqKdfIDQIKigCUw=0ge$$%TN*9f+{=7-&+Y&L*yM* ze*~mTR8(@T`zb^34+15(i*8$t(Pt=zP9<3vw=m9hV|8=M{a|czPdfrHNy?J| zUdz<~8*f$L@4iA~F`U_udsF@-o7QR--t#6)$Do(*5OGIUq9$Mr%kSeN#;pQpz2~$O z^v1u7`drFd9(C>otcdXnlMcmM2z343Phx8L{HpewH<}H&^0nV*dtd)M?dCgM+iz#t zA9*OG?0G*BKys*Xo-t`M0^pDzPo$!Qj_YM$!{bzsLUi-q|w~PB1K_B!A(&%vs%3y9f6=TW{)~JYuS;~2ihbnD*w_`PTkc)IP z^YHOcvGTIZ@Ky)!3mv8`H|{ z4~uQeJVcEuiK=%KjH{9-B?z}6{r%FBM3A2wjkHWX z*`-(Oj&TebX8x+#j{7J=B7-kjrN%S&UWFKho-T>oxVsT6H&JjW<*mC>p)}4}M<_6F zAO$Lz`pR`B8mqT&DwA;)($8~$yXHDK!Z5!FC5=%n01ZujQfzn*v_4sHq6?LeL^=V{ zXmVOn0Lx5NXy`f9C^kqBQcb8+RrwmU3LQpl(5-;b1(GG`oTQybRR#HcCN>S@`0q%K z@;#_8Am8pZ!r9&?mS99up-R;gPGgXw03s5>kn`qyi9;?mmY|VT&QXBV>b!pT8&UkD zS`298fA7BMiM=wF0eI=NG`L2*zj&v`sQ5Lu1nD~7+4uiIOOQVJ5qtI3H}EsymOJII zgdoY*`oP+qUL@Cu;kaz>#%NU@236Zl^Gw5xOSDF>dv3*Hxe|AWdRsjq6}<&jt1?J&EAHq zXmRn-1B=wp?Cr)0M!9YksPMgZLu*0rWbX@ueN`Kc0u0+}+t(?D7gfV_Qu*Eu{Bm_* zUw-P#c6NGZ<6^X+a^j&6Jljye!b-&ng zL5Vzn>0C=R?y@x`w1-I7tvdkqgoG_3prpj9CBS>j^Y-?e@3eU3%&uK~%f@m3kd6|n znLK(H2zG6{EzANjPTM|s?6D6r;Z8xB&HcaO7Zg;wdf>hH+=I^n)w6~af2a@AX4Dc* zx};+;z!|hQM21;WFOb1?nfNb!?(^-PtXP>(QKjrVBo@$mFDmj@o(YPLgk9#(N0kX` ze#RMAfl@HI5QSq0VW+ZYj0n&Soiv|8_SI;Qg*LKhsJ5QJ#v09Qf~UyU!b7MP$3nRk6~uV;CWX8lYJWoI zd(4$oagzdLWtAC;Tp}g*=;X{+_xwhC>|6g}^L0ilAxyA~Fl~?^B_%Xo0q;Y!E%hp@ z)!J1LYxi>%%!_ykGACrCB-nuabh@DDPLukMN_?#{37W{bs9Hb#qp!oyZ24JzJ5DP<%q#hAg0S z{uAe}`$Y@p%v`BsQnuqODy?lWk$!#QX!gds-5vWL+&LyHA=Ho<0Qg`_8WJjs0a!2M zvC4>tQbr$KhkK5coz8=yjEPg59C}a%HF&@iIO(8E$)Mu!R8sO-7F0sjH-vu>X(%zl z*VH)4!x=*oRff$(#^UF8vv=}KIfa}DBYI-QGp?y0uKtV`R0%l))9fN+&sEjB*4aYL zMpNh;8_tXg5uDYM>yfEK14H0}A}S01XSrj9g#<)pEFfwGJbwSDL{}1fD7aN81XDn? zAhw`HHM1uHbPimEj;(AM-~$m(H|Z#h^J<)uS;gN5O{Vt-nMH!?3M>{<)in-#R17#1 zhAMwDgjqpw8f`97#|Gw5xG*eMhra(ODf4mAs^({D*-7<~+FeOP_Qd^lWh(&k;%KY- z0QI=U;mY&iK{_;+v#}}hEFL)Bym=MXRO*@9kj8q0GJF0qH`wGVOhJJ=zu_$5MJyCZm zRhpDtChSLVw$7N#kx-S2eKt6kIu1oZK*qiomcZs72&#$|^(n+0d=KjqdxG#_ZSOb3Dp%kaZz=w_9kX<)@|P3=v8c&8XL0t^2@K{>+ihvrVR^; z)TC(GE!xK`CVnv}6i1fL`R)wIb`Fn^xAyqEK8kZXK@~~^O{1&VtUFDwEIjzg14zVJ?O4#{?$UluemXpboMOmoVg^Bf%86wAx@k;TZ&M% z+T06Esz>Z^`ZKZ}Quu|$up!t3DFqXNRW%}E8kQRYvq^LX*NH&R^!co=T7=W;w;&DW zrjahX?Dms>UISkJeMp?9CtFoQ2vw9D51bPj2Pxk)lK=uM4m3ChPio~$5Ee1v^ z&&0 zNgTaWe!qi~JG@)(qoc45!73(EHPxQ*@&d)?6UZK`2p;>%s59-SARtw*uPPw)iGz~3 zf#+|UD1V+Lz~Htx`kGZetxD=jC5RI353vP0D2oc0*d^%GP$HRG&51;+vo;hpQmm$Q z|C+|NZBLyB{fNEmJHN-Sj#t`NSvRXPHnTS=(L1#fd41(0T2NVezI*R3Dq0jdLcFjw ziI-RpYF!<+jszR32F9wUXfflb!xt0bs-ASA%DJYG=bJHB{K8|TfOsn`-LC=Q*CX2&dy(MHnQ9>7xO_~((PSa$Ft^J zbF+biSSuD)>S}$xg#dv065umw&xKXA9HR~Dj{n+PQ0nIMU&PuPjlwmmv|!&vPhISh zuu%N}7GXhSKwtlzL3f=Ugj} zF=Icy;s>k!+{H7`D!oNJg_d}F-p3q2snQ?!tc4n5TU0fnGO&?T!~$)V zS#6QUXC*A$TjWpEdGFHCss)NwVxVi8DOZ8cgi=SSM5PFh{h_^bQ6#}=yDvu%DD)2Z zll6i^E*SyT*aO=bEK2_Apl1ygyg<;7AzqQ3R)kf`L|)2H&xHcJ84WCujbuC%vc#>f@h*LL;x#^^I@&Sbf%3NbBv6Mi;zlAP!>H>VDT;e-Csk zg9V^zpe7v{g2{5mjjQ*G24nDg_n8<$YIp!O%<@%ZljxvilE=%WnglL)An@UYq5_i? z3{8R16r2?X#G)5gCL<*rc$hgkI+ksX?^J_${p%T&o;9nR6J=<-3Y7m}KGLaJDp}Hg zgQB14B;d1U9TEnSM03w}g6Yg40|7*6SzsK&q|BAi(`pXb$Fb&yc zFym@$r`GHJ+2(y8GP+Yp8yBqim`Gaz!X*y*Om|}AYOQlcts4UWzGOPFC+Z;Di{ba9 z@t8C`!&Ohp4+*%C&oo6oLsLkn42s533Fr%JDk$k=pB<5p6?R7!#bGNg)6 zjgs)BppfafvCVWwYKvl!s4B4u{fxn^UqdByni)DnZZWA)!9f-ze$mwJRk6UpxJxV3#tqI#Nx=m#vmQ$SQ!S_j*~LG+Z)@CZ z?`E*)zw$hO;@M}Pwp+*7+I9Kvcd#B%ECHfO5CZ$l?O?kH46$wZczm*LRjo(tV0o`? z)>mygEb*~KRTXsR*)~7&@WVj-N@0}{U(RcROtZvvkrSm5#!^)Uf;jA{Il=qi+dtP5 zq%Yg?(G9zJ;gSHMQ`nrWEM*8aRmml@a%sldOmy6-&gyp-pHag{(Km(t?ZAwvM+j2m zOx;#F*jmi)A-v7cn%N8TYsj$#7$hZg>M`KA69WI#&+fLrrvbKSVHDS4vV`A&|J_<2 z#@>V7!TOxI=pj%LMe@LL`|krKJIkIxz~}frPRBUU1AcF-vrPK5zt0WwC!P~fR~=k| zEc2etYJ&;3!X@vW6_COQPl0St78FIEV~QAL(dK*zGpZ;pp+b7*ZXDaJhb-$5x~AO%f+_4dBo&Q7z)k>5 zk7S+VlCt6)qrzF8dS66T9|_#d6sQ6Fl{HS-Hkj9_$dD51ltBk*Jef%vi^4Zex>cR= zJBtDJP#Q*cTf$9sP$G;QwLtHAz!wBJK&M^Uw%KKWFAsgyA2Yl28(KxN-6eW`8|ZUN z-#cYdrYaR9Ss1G5`Kbz4L#nw~7^I{&O`=3fDX>HjT2)d@vXhSGs3EbW4F}-O+=+21 z7+E+UqeW%f>2JAke@^I|60<@oi0+RF;&W#hsGX*cp<=-g8uyp>;C;FuuzYRkozcX;rnTPp6t}E;tzDfgV<4m-Q-ch{K?=1)-EV_GQ9WBuG|v zk_rOBRkHlE-An@elM?=+19!Zh6tk1!qrx_U-cyAw+Ua8!ekTlO&oPFu_hKg0Nj9^m zWOjQ#p(=cwgAOd4!b8GNK+u2e^J0~i$vOH`XOsOZR$ z;r=$GR?z`uGfnQwRo#qJ&^5GofYTcfPH6yB{EwQe+A0hY}0lmqepP1%Yvv>KqbG z?+H4=enroZE1|(zxX46XuX2hcIF$>Ap{6TbKvw1ev+}-w=I4LRzT@BiW&^U{_Tn^Mp;DL5W(~fxDX>q+ zqJD(*xT<)n2u|(1pSyI?uH1Ri-g@VicKa9A<5@5d1@x45Uz_Q~E?m0P?!59?%P}{o zFgn@_aSzOpIYW|)ZHhQ>fFouPhC7|3mVmkBe6g>5<=1c@&pz{-O{b2GUj$_o312?L z+zFzERpJ->bY`&Gl?r3ywf0}{*x?L)lyC56poB&H=2f^Nk%8`4EfN|24AfiO+PHEbtt9tz@v|tA8rlQWMBtP1NKDC; z(4;`AC)z-O0jCV+aT^D=1sh@o2S3&bNEonF2!jKhX){I!4_=K;=eQ3ul{rz-5CZEm z*`qq0Yoc-_{LEN5hs6D+_ew%wVaWGw$zG z`d)u0lalGdC6yC}Y++2AaGG* zKm1>1oCR8D+jomJp+9n(s4SUHv}}K`!$$L@PGI*#lAM%I^_ajOxv;~Mw7H_*Se%?k>qA-6>2ZmPvio$@FbV^6WiC=>EN}rEuOdzqW|+m3q=1Sff6Gc!$*KgB z_J`PRBE!Iq(>3+PUp>_QfCmn|Aeu|H;ms zZxy0(KmzH$Ve2sze4vNQjDvh_wj)~v2*9inrv{qy2wNxylq_G@{B2pFC zALn(1x(P)Xszw(O_@$jKp{!XMPa&2M+FSJVAh}rb{G^3IEdr+|S3}BsP}{|}%BL3W zi~tEpK_76IV6zfuiJD>)_Xh-L_y91~wt@}G0<76~z#c+Z-%E9;xPtSkxC+Ux0HnSk zjLrGq?7?SZ80(wiZ>y5Q-9H#_)AJ~1Cb$nv}GESySpnIDXTWu<=qtSlB4AX7ph z07VHv-1KgSJIgyqHOgeDxS?s5bcpdfIW%>yHVN^lN_KXrSnQpQl3^quRN?5H%n*`L zsk}xLn*x4N8g!o!1wdmb8^PH(G44Eb;vH;fC!zgZlk!O|XBM(rbUz^$KxG~U^C5+qM4gDF7=}*oA?o?Y zb%k+*#gXK&qpyzVx3h72dc7gUH|_A;MZ4pUds;Amm%aPl@3V(mRp8R)%eGoIv%g$o zYb+XiySF+|6+{o%eK1^#vzL)5pt{+DBd?5v8V!x&AQ2QlM=K+(sz7?#9mnP@*{xfr zbe4mvh=EK&GN1bxNdnNJH4|4MR}2aic!H+GpqtIsa^Pkbyn&FCt*V;)S}Ydl+BnJGj?ged9T*VnMR@1k$zKb5UJYV2Ly3XJ&>#w|Mi_xiS zZ`dm@zi5xY>q8naoRNq|)jtFTD4&}c>?aPCohqvY2bcHl{U3aaS-C>E7woP-u=`X2h(pZOVE?W4<{ zPQOx8Iqmos+F8*6EkL`lqr2##%$N6@qL|3N3Hj$V+a*-IBmht`7+r!o{+W^BI~B5q z%F{Sk22gz<$3Kg@in^`X5mY6UGfx7G5Ttp4wiKdCFoZouYS306Sk0uUAwV`hFQ{A^ zOipT>CpzsfOYW^;7y$T$e^FmC9z>OGZe8pBO$u~lE>wsMSfSlRp-zgkIWB|ku)uSb zu$e}mMA3=`z@8x~{a)pAHID#;HyWq+y`^7x*RigSbnQY=?SwwuiL z88u`%t8U-`UIS*v_Rj7+f6n&D8}`c2|G(`Ezx3a>4|&-RE>T#ZY^1yjR?3946>Sy_ zBf{CCbkvmp(Ds!$fR zJ}oH5KTMRKoi~_<))zWU({rZ&7uS6)QeUv^SMDT&)p4j zBuYi-h}46^=#?IPa;^%`sWR_yr}$_ZcW}RZOw$*UKPR=o;EqSK8wY|zR<{fWWDqQc zA@=+7D#kIX04a;2Rcv?fc1cWJQnI0GrYA6Yi~gGkB4b;Is>;gxr0AGRkHe)(Bb+ky+NUdHk?9rqIaxzZgK4{3-XlLtN7~bl#v-dstsD1r6 z{0{s0$39{A-gCb#mixAC4(9B10<~^C9V0OHwQ`4de0r6J+GitG(S9t>*AXd$S+kvt zRH&d?p<0S&?}UWSM4KY5Vhtyk^EfB6nkj}^F2-|78#JLRfyQBWi!ykP@;=skgMOC zk$~HbwW@K=X)H#&b#%+#`~DBuPy8=G&WY}c?~L|1oK>}tedMd{Y*R>&Ev#MvZBECk z`Y~WeC2qGjZEE&$dtiIx1$*JSFSelO%nr`)+s&IB`;}k$CHu(7Khf^trmDG1syg~0 zZuxRJf*~Zk+uPlGubj)zpS9$5YY*P%61Nyl86?rw#wHB-u)h;nMpIeU~7c( z2BX_{RGs`a4zfiyQ*z+c3IQt@(YW^ZwU)51Smk$TH}c=ybA!y0=8Pz5=m94FYm~Jr z-G=b3$q8rQ*X{gnxwj_B&^tOwnP2Xe=&>P%qo^;76-rTIL}#Y&TN-C8DbP@m7btaA zV*tZMRpBkEH*-?F?n+dwG_hxk33?ybfVn~hRk($fkO5VnXQ^O1{Xp;INlngs-N#o^ z9*H=6WrazL2|)#0AWhaKqm|f|q5_XgK|iy+BBl%B#F z@m{uUB=`9_B`UWSbi<%I=1M@bX3lB?1-Ax$xhN18IHc=2N}jhK7o4+fdwTETvnK7M z=og9@BY}Csm~PN}(7w%@0Rtt*^Ts)Z)p|c}GK*j{8td_hiW?YnY)Bf+bg`A_~1J8frUaP^KMOKRKaAeq2T_NUK)c0~oSDjs9fS$TP9Lim2E1Oh$L z@*X4zSNi+KyNm!^zNKpac;y?9DSw){kC*^(P7td`+>!oyQ`oKc+*?VB113YPc@BGU zp@gb9us-bBUbEW=d+X-5-?Xd0_}|-ePyY9Idi|$u|3cDd293M|&?+TFx7M;bAwOL$ zD4DcXb00M=R&nCr|q6qh1H=FyFQqVtp>J-U~Yy!XwegHOJ*;iFXRfMk zgM+fSV*Ql)x`;1W9qbo0*%CjCkq||46I5JKMOm$zfds{TQWuRuv^a-~iDFbJ?kcI* z5}z2hH{#0?Hlm=q=6-Ccm?6!1T=Z(@nFiQ}O?P7O_|ttl530_vsIhIokD;uT2PR9P zW}sBPC37!X5xh#SRHsFZpSWyMYZyZ#~dQuvEE${qsS=@_=u{WGIlIa1x|5 zC2e*gdKAUyy>_Ycq<6$;@%sa1vIs>SRI&2r#jK{leu#uZ=@~HOx0b$7ScznEQA=$2 z2q?ob7TqzE2Tr9=3XHh`Gcqz*G+7ggl2P{mp19vaS+DlJu4J$VostG6hIf(&ys$od zM^md|N0HP-@Y7Ec6V9r69}^APb~}MW75#LTou;}6Chtxc3cA^>u*fxwz$a>O+~1R) zrSz@P_j$i|vQTz{b4gKCA@<34nuNT!^=dZs+R;^8u2%L{U;SzO9l!Ip+oO*@i~+CL zuivn@uD!)=f_=;(!=Utm-dEVni}-Vc{YVOt8t!9_GCw``-{6K*dkXzrA%FmTKk|Hg zf72-Jde(&1UL#riU_24PaaY)qjJuZOmdNtszRl(l%u2xmNbl8&Xo9!8v3=AqM9z}u7Z}|FeL;#Xi zsYBH%Gf?l9B%R$NduVcs>`e_jF`=Ku_vn+q_C&LBZQrd{w6Bqe0!`g?XBgDmaQ-0} zG|18RGn}HanAKkVOxv65?OA)yV^y&jJTeSjBXQ{C6J)D>{i^mRPHk6Z+H_yjtIrnI z07-WzCAvxPNC_dE*F%J7SlI6qGH=85a=v%ke{Ol~Tp3I~ZeSOmsbM!K3>qTxUOEjsi zkkc+(Lb__z>E%c!K`DG!_&o3LZTIe#L0PU+a~HctZ+B!Bmyl=z5U6 zHYR53(;Q+SB~}-z3@gD*Ro3dD@AKS;iY#^?LYqQbQ{lNxz11Krp@LZbwP=LildP+-^-9VTe$CWB!`-_Bq?#$-X2Kj`9WPid#uS)^=vu^S@)ZG61^c1z zQ{HD*t3lG*nS59PFZ0XI@^RIo|0k+?^hvg}_aoh@ihncgeDoy7e&xMvQGw=Jp74I6 z?|f!MDejct<$f4su2?O<9gN`5L?tW$m!!C4w~92!m9il@>>!^3bCNi$$&?ZLMVP20 z9oTt6ql6c?X%Sv?X$iiIDvxOxeiO%z#ciVabs zswD1YmWoTC`7|HfkN{>j>mR((h9jpOFVYP-o^8-)M^pVs`ADh;ST9N9Io!!CV1!}N z{kv6-YeLC_{uMVAjyh-#RSHQd$LFPfpk~Qz28qeJt`n&SQ#my@O3s^(Jvu=T2H@_E^xrnPq`TEYSGYo+t4 zW!meg^`3*DS&BYcNUK{JdyvZDnev%c)gK0ZJBbaP!Kp=%jGzOcAk`18&kTwIx&G}% zh_A?CkSm>o%GebES?2XYdkh9QK$)EiQ>ubwBmz`T3^WFuDz zE+bG%H?CM0y!tdJkv4T%&t$Pq3%hZ%RU6AK`_wmlvwi1xeV0A-=tFkx+Esh~?RTt7 zfWZT`p(9(`ha+i%sHDKbIE`(oby2@xfJ_P^+{ooQqUEG_yuRfe9Xk)(hf@Mz5ZzOP z43W%QoKLBsG3XgFa8jmE=V+_EE2-}yloL7EY|J`i0jkLOg%rCfEG{i^SS*vh@XV98 zK0Sqy!Ze*p%C-nSpN%VCSrWajQz>_XWaFOno}I(rz+Cugm~_^{o7|AY4AQ(v&dgJnPDo(OK% z)fS6=yZ62aZM!DWmC-0J=cO4ea}_#+5~Rq@hEeZE`#&q`K0G|MpZv*x-QIy$iI$w< z1N42_ZHgm_epV?Wvt#!yzzo^I5IEp&WN&Bt`gY4cqp$gzueXODc~^VqYg?cf$FH@= zX94ZTpOHZkDrDZXI|#@~M697`3iiTQl&y(7R=^!**%aE54lHFdDx9(tQoRt(7&P#B zyP~I+{5-+LjQ07db75B@4VZtUB9Y$M%5zV0)>HC1gfa?kR3tMqB+nq zRc+{t=!>VeM-LB|_UYgFEe&D6fQqsA(M?I>OzuCn6eS^3X5#x97*ABORkkhBauJRv ze(jg-jhCNmi4p;m5>4zFS|&sqiI}mMQn$u~UTK2{+7?g`3!jH^AlC?|FE;zVtaH2(P&O)lDh#l3 zckHjMo1)%}IY>Xrd0AE0$zkfk%22HUUlhJ9K4z9ZiDpa^MRdHdy zLE|LIl+kx{%ciqdF}wPXm6O+OI(p7tdGe=ief{b7Gq2eBy>^9*3p?Gky>+r^=gpN~ zPtX$#CQ~F3b)&>)(bpMDj6)@+ncT7QPAx_;yfCiF{E^1EHMm z6$4z>*+k#&qWh27k5H_g2xMTmww!O&r~2Mh;=Bt)5!?;cxk&?MX={2)g`XEd86c0T z|IZ@EuRZr5Rargr>VL9`4<`aOjOB|3U9=_w>KI?3d&BRfS$(oIQ(*I^U$^gPe?I@P zuA}$i&)>3?Bi;~bNkYXShq_UQ8wbE{zjz`_#zaWXn^h`#NZS?U;<%1IIY^)_@xTCA zz#ch4gEEw#gy{E%ZKu2?(Ft}92VT-zGoH3PnPOzJsb`m{B86%Xc#82o2Fg^>IyM(; zp#0*(qCC!Kc$r-x*`TuxEU&`eNW$6joD8sWEhthu$t~0DRpNRIeELc)-JiDejGfVrL%uh=e36RVL&f z9QR?ZzE`n=SV zmPhU8wRcz<1ii;@H|lw=In4b^acCJ}p)Szg)m>N4+ar(OZ=d_6&$Z;`u68|7IyVfM z+S)w)$V0YVwn~#7x4n0$^BD<@udSNK6RS+>wBWlRTVgd_u;YgCAGIWFu~^~$R^vH) zr#b&OUVp>xyzeqZO>)s#g`}|wsPHkU_sS2F;ISdR+r4)09>BLCX1Q@x1v`%#EYiIcf-Y~7!DX|uLoBxLHU}m`bN8O=S4d{ zInn&=tm<MmJQ_kvxF+^X1L=W#rIJj8y2os#+Ti z+1$5~SBLO|S1GnTba0HP7})R)YR`G>ANMg%7xepZYUkP6ExU2!t+s}H*6DcgTOK&v zG9va%P&%`yD_v<&bH=z<48HxmI(__XeQbB#bH)CnKlC3OdW2j|0P1pENvY@NFPJ2O zJ_t%ItECtj0r8lOfy$TfxM<(^nLpXq{<*d`ix&89l)4lKH-*y2MU_5CO`>0`U4Npj z5m*fWXA*(pee(?F%^~UA2xvF3v#=a(bDj_(u&Ts}{bEs#%wz=^=~SczS0U~DN^+O9 z@3JSM&RTmPQ0!@q8L1k$UUcR%PcP@rQdlQ-$?`RVLGQ~UV~2@0XV683fJ`2|UG=9D z0A$j}eoceFD=u6!SdU>s9gG9jL#Z0QK&bcGRmK_^Qm&*PqC~?22_ep<0}|5)YdwsIw8PsIu8${=l@jxH+s>4)<5Kf3UG_JJ%amfo#_rkWf*y%=1~Na8DYOgZR-agNU2=)C=7$2KOUk znN3fK=C+Gn8yMAc(KjVjlKPytNN@!77y29rB{|D(M^0YCMEswa9aSo)QWU0O7@09; zTFMRtc+bJP^r=irg3ccIU5Qf5{%(n|7sa1xvY7L=6F6EF0p`RojA~Nx#4G^D6hM!Z zIzvRIsQQ^PPGe8;Zt3d-pWyxt>e%u_#_P^1)pH(`@|-oy&~BXz0Vz|0u8M=qWTq-; z8KLxpr3YfURZ~3=D;wdXw_*UwN1D~y&ZqH%*b9?@d{OsY4fsGcnM6TPUnRCUR8h6z z;5RmL;^3vIJmlH1W4$-}?6?LERTxo}iz|Pwc763F13_1@s??`yPIvggX8MdQojK+Z$4ROar7M$PC-2thB=0jN-TT3d-Km`yzpCpCk! zLMX(LEGC7|o0U#MTYbJ)C2uo2ur({uxEr#@W+9BJGlKiafpA*|KfjCKsvI6kZ%_`6 zhq{E=1!#$!7gYNyEc*Q>^?G2^|MF+ja=TZi_N@Ro0`jcsPRU$ebXpR3Y5=D1#2q5JA(3wBsT~$xgKph}@i)btc zD3`G#pr&$mP;xwQEud)l?`_d5$m+{NNtku2jyL3bCCE`M4?b?(yosOrcYg05w(t5~ z-)Xmw-?6W}@MRc!r!-*?X9i}GaAHTG0bP4>O9~Ke1ObW)iP$jcqjfH|_6<=UQ?qu$ zI;4s38uvWWP9X3|q}F2A2mWYg4?c0FfI|jfGo@0{Q#)r%!YD?R+}6 z$JM@Fym)A6`1a>^1u=KH=%H`bjIaHqot)l4AWV9sD9vzCqxv)%)J8uV17|vogM)qh zwbAAC{BtkZyWjtQbETvzdsaHyz9k@(LfYQH%RLrV{XA!ZZ3YeIqh-aH^BNVD~l)VJnAvUJMmtHJ)PKv#Ca)Z4DPSbHan8S`qc?&a*j!DrT1)Qc4z-Jy-4TRXUAN;@l7xwg* zK4%vXN4_=yCuDKV6q`VXiDpAW9LY&W5br_hgdyrKV5B%8*&HP1sgiiw%QTw4ls*86v7suLnC2B$*ezv zCn;M9Be2@bePr^VLAQ$cRcL>bs7#4$2~QMguQLm6iPcClc8YFyN1ZH$jGX4V^;l-# zF2CzjNcJb6Cp5?uqYt>~o@bgY`2+O3B?vLOO3^aS04-BGTW;y;%fX@Db#T*O`lGRu40aQOW7?-#F%_yNdiSnGc-YRs z;vA(@Ca0NW)J;o_+8UfmC3Xb;vpvgDAU;yj=)?CIy@q5?DY#B^1qA@RY+sUCLQ*vd zAeTw_C51|$>35v+Ooj`qGP@Ks_8}*&dJ>}qe4-R=lS<-GRl?HkSpuNVLC&f$%FAc5 zkHX%-M~HgI{{FC^@~cUET5pK>L!nY=Erh~Egnr#Q=sF%hDO z<-#P?1xPlyR!uY586px?!d5&`t;Zu|x+&i7Tv#*f6hQ0yZH|@OU9*BC$DEkGf?kBi zyggQvJTTQPASNColO*r8K!W54@IZ^Tw$vkN23^*Nc$!{TG`y<60|fV_UWV>GhoHiM z`%1hxhnP-nGmmfb`?!C12tK&*Sc|$4O<@8*mQGJ|av)E8W}FYRQq$eOf`$zdrbJo_ z&~q<=XI7wS|CZg+0nxz5bV}FOdXr`5A*F>L`=Tce*wv%RNaUUo)jG4F{&{v^A^^9%^WGWg4{66Cphs&Z$7e#O zPKh{H(%OQ5AJ0QxsUwI7ct0p@{mBw~{u_EZbviIC7I?xaEOG zGh~I_^#;mpNMK;}2D^E5hBdN8su-F;(}rqBjsm)o97NHV=Twj=kVj+M&Hu zm#W7*modWL^M`K;u_`^D6c@;r-=Gw-SIdxSY;7+1dw{!SAldfkwHw#%{G~hWGvD`T z?eX_LW-q?@LfaY(B=87wJ?Tazt^M8@q7r6(FkGS&OyvrbQK#d%1b3*c`Cioi45MA6 zxf=<>z&R<2$pAUyE-iZu*-ozr0PS-z2bWwn_38CqiGh3CW#PSoy@3wPPu$8XsRRagb_ z&3?Y?10S~2^*gjD`9R6tG5heQkoo42(yYDXcH3o+XUZg<6XX!ud3)~Jr>&yzj1~P- zLJs$)Z0b_|Ke3<^t(_TWE@)XJ<>L2$>)=g zLUldZAg>6x7(gLP&6z=0fg+n7a&Ne32Sg^0jXhuc1Q{0$1dyy0S9_xx9H=A!DMe?M zq%j5xSMIYSR1`G3@m6=@3`~pW#f>uW4EV_a*aG0Pa)HkSAjrRdLLc7y)Kpo)Mjl{G zY&d3c|?pO$JnU|s6TJC6Gl!JW}&0JJ>iyYhXdxQ4+cg>Fip$u|-yPXy>V zWLY%bx{0{eC}FQLA`{~ss?}}9WKy*)d~eBmcN=6S)t#H>#TC)p2lpe11K~%2>6xUR{F|Gw0-wiqmr^B zM<0^idxsYqfb@d>>OcG=wteeg+rhc>w#=8H>KTG4p?b(+vTH3Cdxvp$eFRIT%yoi= zkxFr8Rg0jb$(BxPBUx~N*AuMG+Cd7eH%G}#QW##S%IQgkr$eLrE>9T!Yfu_m3KWtu z9D4ksC!VzT=+ozL>u5_cBobBgJZZ29*3aTwQ5o6D{`ehoPNhHVU~G|y{2T+>r_|%J zte#h%_ksSaa%g;kz!JfHUlRv_vl5mVQ0>&l0dey}el@EI!0Ptg^Ft9P=GZzhL2aus z!iBLuyU+&>NDkmNSVvo>B=iYX%w?68Il(A!Iw|2Sh$&)TTqumzjvdf8>Myi`od$2c zPjH&%)(ulKTSJIUUm8PQBh=TpDMUvyAsiuFsw6%tFx;s|2jwVtN!AtdBCEmo`7(m$ zmOA1xDQ`XDHM)|O=IofLPEe7nr~u)*KFH1(5Kv%XDI>FBEaaafY1kx*TNAS6R5Heb zTUO7!=b`veGbSypLYXq)K!vnHQc?i4os&&ds%u#lw+)}UMg@#~%etGXMzbXv)mXlz za~*fqSX)M@1GDopqFR+mEh=K6mV;{!M#q1%LxwC>II`E8HFg@7qeJ{p9+1Nk81Ue}& zW*^JR(b_)xp|7>O?s=E3*C%ZiG}9!hIxtD@6iRihIBYi(B$2xV8sY2jMk!|ua76$; z+_1%RXo%-?c5>?ofg27w5;UJ_HB(c|G;pqmUBJaB+~d|{%eIVdbV73+=c9%O+! zB8ug03Nl{Rn3!mJa^emj>*~+W*;z#MjK&TXmWsIz*RH*3cijDu{pG*73F2VE72!nt72UNPg+n3tEg@SJ@}qxHys`h)# zJ&XO$-8rdJb!r4<7}TZP5TM%6WtTBVpNt^PNG2rbi!(UPN;h3ODkn7#8|G9w#bdEb z_T-aaw3D-`1n(Z! z9)93HJ3GCmdy`-QoaP=KY$TI@4q>}bjg{f(NEFzD?{6VB|C2xYZ(8tl2ukD-m8Qxe z#Z)5O&}mok+6BUdlkLI-l?;U9^U=`b&qM&{s8DEUShhrQeF|U%{>kZL^^`zHRIAjx z0?IFFbqoXvthrM?kUuz;Ot-+0x>PlLh~lQs)|P;tQ{N_W`vX1jeXRrz}=0 zeR5U9cI`Z~9U#Nw7zs(ypiKtsqOhj$7q;X3rVb>4nrl=@CGCnr4Lo-g z6oDVEIo|$`Z>;vfL-*M~_>q5LKm9NNiCt*mO_Kja&qGT#hDznzw5XJT9thw8UvfV` za7_Y9cfc^%0u+TIJ+JV1AXJ{j3JE0IX9bZ_HW`ObXC_VVE1lw6ZO5L34OF!lHq8As z2hB5)+OwF;l5+I*h+5z2Q6`_MSO; zff1^@>iuDGs?i?%-Y*@bah}C7H`{^{{A1deB-C>{Kci6wdY)KPK29C;0Xif z#Wq5MS}g|Xh9-^Mh)p5&9?vYAEZaY3mFBQbP<`802nI2#R@E(q&Cu{x^xsZ9J!g|_ zeZ-TZipET=G+Gb-jg;R$)LAsPh^=rs)J9^mZ}{3!EyO57+P;SE5cSP!^xh8K+e0vk zD*PEPS~#D~eJ$8M7X4_VxTj4|`m@bcaVo+UDMM~MkZ+w%$~cogkbW5cHAlQ0V6ZAh zRZO+6MNqAVpHKz33;f_C$ZTOheCi>q?#?)yPR}7mNv{e8jal(#5#s?#>yUba8h@g< z6YHf`nJSUF-Jcs7c!(wv+;1y7Jg#81#tUH##b&wMDQ+^ZK=ICu4)M@J{*XUagqoO= zvyjZB=t59$xag;5Dyvgj#(1D@RD+c1?z`|-ju*5i@8Oh zhNR%2n}uQ*hD56O0)ua1e3s~e;3RVOcp+vdt@PTpYj*L<9rl<0+Fxyf@nkoy-e~K< z$_px{VT4St2Qvq%soc2p&X`=9-dj(!htzFE2L>XJWDP>WsTqR@?G>R&d`TCpo!ZXjbs?;HR z#;SlCPnwTz9orYb_<8%PPkqYPXKPk+jeSo^if;gmph(7xW8iElZ2oTdKaLmdgCF^X z{o0p)rGcj_eC~REW|!}H&@NxO+!DW6;ixG%84}nlf?LKh5R419MtRt^DjQ|CgC3YI za!dG*?fTW%kSu{dEO3RkuNeDO^;XoHGQ=9MGG{ zQW!XVw?r_a03Fv%+y0qVlwbzT5`T$)71Q~*2++njGDhHOt#|1aDL>O2D{+2e*l~Xb zvp&=oJ~R}oiURa4ZQl^VPKcRsXVa-|sPvdZJ(T_(*Q}&7(T}GY97H2^*4~ydg3eG) zbKflI_zVhoHn?sT{pX=a?zMmZqyNnQ$&dUucJbn6(b@Ir5<@8ypLbj(CQ0}iDVUYo zV+8o%iG$WT3d2ZC3ZE&qO75obYgQjv4B53*=Y3PsT(PsHXI%7TIVt$1A4%FHtlnGv zuI==N>zT8F7U)4snXjOSY)}HCeFe0C3(#?O_anARhu8;IRU#kNkR?(By^JkI5vr0J z%Bu4mRxyr3&9bPsoi@7I9R~;Ym4Eh^tz7>pJ3P2-Q(M|)t6Wa#-Bn+kiSmy1I+J!5 zW1bN5!aB8Q9~I*z^;a{PW)HCUrsgrJ3Sk^D*25%Z6F-e`uX^R;l>>^}|`Na^=cEvm9y=ZJwL zJ`6x1(Wfg`$NG43=Y5^tJ3Pkq6lY?r3EOWX6pa&aYQ^A&R)4yFeRn)jQq0t!!9 zC03^|oG}p+7e6*o42oiIB(>a!F(1_m=j1dUv{LQiN>`C%Vo z?bktaF|eY-KqDRraGKqwP&ZW3vT|RCx%VU1aH4_3r$t$o_eZo;P3j1m*}p?Bys9r# z7NXA*p>Ld2gjS_&GxBb_kNKU%0jx6AtiX`RJPtniZ)J0msdb5*(cTXF%x#fT8RM1-Dq2Be znWKbm43d-fP*u+t6S0K_z)>VRg7;;+=xpl$B9b>)%p#lj92LO)cNlikE)0R(g~4{3 zaE|$593VQjXTNpwj(z#5C+xw8zum51KWzbfIJVKO2e6#uRFpLJB9+c@Rs*dk9Ny%- zckYtC?}Hz-*MIT}I29l8>i6}~BM+b|)0^lO_=f{#EjVL9DAnTVq?7FL!Nqg-PyXSL zLN0r?SgLBu>Fe%j9J&1LXMf&4{Y~Fu*X)|bJhzVc!S-(0Xph?;ncJa)Ky-e+-q<6L zJz_C3VY{KU`Ca$jYnLvZw-;Y|36-`;tZPsMje!d35u}zO;g?-zfGUUFe(d1zz`pdw zFEpUy%=T7`9a~cEwxmJxgtRf$mlvL}c0WZLGbhKyNC(V_35sM^^KPf?t?-H4D%;pU zo1cZVQ?-W`$dYgQt}1pR~_t4~JI8*iJ=$zFG&M zkZ=sQ-4lb!qU0j>LM8RK1kf1q!L}pZ5Xs5W?;=~x@)Mu2YTeZ9%PNY*Hgf4PKvZ%; zB0#_2sQY5CXjQ){<3}akJ;|q{9_(J_$|eP^)-fzSZzMxD&FkJ1*a}gpsc~_9R)`y&nebXzS5oCrP3-sSp z#I{etV1MNo?ACMt0Ae1umdAFu_TDLfz7WQUo)w<=0lh_BdyeTa?Y~Gu*;m>>xJH^= z2!PnkV)7t__JWCZ+$Vf#R;7NL?M=ifjM8=)35gZeLVv&tl&KPAn&CMKFwmpao$INu zHLBud268XZHpFbSsc(V+%9-qxeuirYEu)WECt1vyL0v7($$Y=e>a@YGN&OsU_=KJ~ zSg~1RJ5F0vv(o%K>Q|!hnS61$W-drX!AhRPuEh`SByzYn0XETp)-R(TXQdO25A@6_ zfR0Frc9S~W4IgY*-OgvOc0j}CXGKq1jUXIB0yE`V*89w6ClUP00aO7Z3+fvgsB@3a zHf(G*Tv>}YuqQz`oK>22w2s{J1FJ&C6jkaaP!)vEB_k+dG|d1ddN|lbmMpl?Axr>Y zmLr(-aH$1n4PEug^Ncf-{9PpitB@oK&S42rC0+&j!C6e2^xQd;iBo>3%HRv%E0O$h z!$y-N97LyNL}Ru#Zc->&s?d(wKf{B84X1-4@o=OjhuThxhF@js5m+E#+BIGZlG{7L zpucX&glJ{4M{?y{uF{0(NCs2w=pqbvvIZCGw|7w_mHm^iGM`mRIQh8u_@bi zrx4WO^H3gM$37E%ElRRRpRWUv!vg+!9rxHI>}+>e1M{DE3J-X^?8)goSa(X}qyc_` z7SXW|-ec8*n{iy(+z_brXY1>-R&}Ic-3tb}EftV$fz}sQU>T^KLvm5nN5rAB+NTJP zQb$912L0a`46{-k@lFbu6MMr3mVsd5l02c$dijt4#Gh-fR0gc;U zg)XFeGMU|R7??d4$pe#U23J&#!t)o=hitnO*fMy97|6tHlZHE^N1VT?b@ySDiB0{( zxUi?6e$u}ATYn3hs9^(O@RQb1|7g%>t>M(F1sy7Z5^~yJf3qvC>ay4y?EZ)D#b>#i z&~|%bcieH8ee9zjw%6XihN>5>B5A_A?*Y`06#bwD0X!7I96?>|*;k%@hJB)bc7{E@ zvo&m|S7cs)v8`46?@`|Uun;A z#&b9>84x8k_o@*)m7QRyN08e&ptqnyR)`{a^%WIr(Tn4EyccVL!_{0L3z4CL;ui`= zJyr$A@mr@ zGS4I*Ia{Y{D!JJWgt)&C6jTeuiQ(_IBNV}GOTkN=Ap#4z55_UshBMsH5Wq*}S@M5* zRsG(3?!~_RTYuxPw(9IY<|4V2xCcrl=GzqQnE=Y#?~Q26E({BOwvShZaV|NZ35LOY zN3pzXRk|2QfmGq=(N$1K0+C)D8Qkx9uZaUq=y75aV!TlB z8ot%<{Y3G@*aOE%Xz?sU&qL^_&z_MjuAvNC!Vrx<(HcelMIw2SATQrxY3F{BGHRa@ z2!x<$#|LehL9g3k(9Io9m*7-X?$a<@mv}DpyX^T9c;PhO)x}oKXuo@MjQ5iOTut)v z5wsWW`B~tq@1rUZT>vh@$@YltonJV&v{yd+kK0dPZ9jU^7F+uNb+cEaDi3{#sS^JX zv7z1F>ilMlBxZJGS#~p`;VK$-?Y1GJ|LXBm{2kj+P<3TIm}EnHq0FS(_<*K`ZQ4Hk~iV zu>>?2h7US-Wd>;?1`3u%Pc~xj&sEmWarJ`z1qW1J1v z>!VVh;sx}py1}&Iq+3YqqUnujZdLPN?+36n&&&~3FB-5)4>p>ah1BSJb}-mP18EOl z=5|S6%p)2(QvgWeo>5fc%qZ*X3&~k5sn@Le;L}702+sJl1g9Cn!4!@3Yhw?@AZIQk zhjl1I2e`RwaCf~5r9pZuFAl~sV3r}X+nja;QB076w;3-X3Z^6xX+Z}V zg<$%jI0Lm0Jk#K$#tGRGt%&E3q_z(hH6s2|nW%7zTTy>DNJ1(^2|STFG15L(xaR); zAu3;>VJ@l#RkPvt;+8T9No5daO7ks{46*{oM3(oFg&<;&xO}fuWlEh76$0Nq-KV5q z{n_(TTQ`b;3*jk+h;GCyg>-ba+gPym9;@?qdMuH99wJ zcASaHuRDqxH?G@Pf8B4ePkqC0ve#dIvn5Cp@nACz_kChOOyf56UD*w$|Eok_9{b$@ zVyLf#bW`&9Lo{LOvniIN&N$CX9@wLn%Zdgps+>aa>u?kMl@z}P0+3C6KgTz>los~i zbtjGL8wEQ87=xkRp|7y1JgA42$x@EyW(uJ|bfL}-*+U(LI1`B@y_11HsKsrq_Lh70 z<)@#r-}-V%f;ssiC0EG6^4#Slg$2rVGo+sk&}19#eur{AR*9c-iGhIu=&3C-XUq=xdTYi{#mtKI6Il_jW^zc-@zP@8lcZ$ ztiUeKLN?xPCpaqf#z`Pn2c{<8+vF9!Q-WQh%kjLQLvVopF%z8=!W8@1iy_8Sq^gBa z+n$48aw;r+ovN}BZdlTfi4urM9X(JwWk9!Ob$A|tII;2?pzCgu7eERSW{Cy`rL+Ty z8de^xjU@WIk~{t*QI_pKd<21`!Y1`*!=^}*ex1k=XQ7NcYdP4j3o*Fns*>Y#3um8Q zxqPMV%eU9|agvp*}W0HqjMZ`00Pzep4byTghk4m-_Q+fycH5j;*)fKWg`S2RzM)nCgt}*`SEeie(I{GR2qh zUIb1>6pUOUtgygF7yFQcBN-^|4kjP*5!BoT)-QL;gem@2wN-$I(hYjy_&6+CR`qF6 zf;llp#pRNPNCfwaDfu>L^JNAtxpxNblVN9%Z}bkU?uBO$v+ff203g*!ZeTOcM9F6| z4Iva5mq=>TY-~DM!?{eo3f5ygC8??O{W05s!Wg6qSgDbKoe}hudUU5T;?@^CCM0Gi zB{7j^DSalZs#0Y}#GL1-sh~(mqo`p09wKQAHNG04iuwVA&c9m~3kA!l{`J=(-{S9f zOhQgDtEfc6Bt9f)F{}OyN!1283Mnr2W?xBYSE#*28IFbm7t*UC?u;uJ z4X@7^cktxvCQ)|3o{efIUAIFr2ToWpBv?xdCin({VW+wsdYc69izZ04$8$I6Sn+9)F~*#tkjOh@^HZ5jm1V zP?V5VRqpWK0_eg&JYP^&^MrbNvw?h9(G!-+C46>)qF%vSOW~N%uX0n=)-5EvZ(h4@ zufFh>-T%NnwyvzKAV`4N!~p`N4yk)Px_M*M(Lm#(#{S9-`5Da8ACCy1^%&YE`_J{`%kezo#`l$Wn z9roD!K4G8#{1dinpY20r-}BhV?CAP2*B8*f8gffG)P-2TE~;`Y2PqpMMI%;7*R9fK zcJ0QO?YU>agkY9*XzEqbZyeAT_bRM_DI0X&&iFl3aPRiWZLtzn77Sw;ZnjXv0|;Yh z40fE+u%*2iG-RE_wiC`cw(a7EY}>}>z=f6XK!G8yB9Rp&>Vp&(u_sKy>XLp}G~p_6 zErl3>`vLfZJ*%n;aSX$RAeRGD+2kHWhuxRB@?{CyZVc#FA1}_mDRH%!@-_B*nuE5g zpep>zFn=x7N1=SnY8rr`_MB6*wdXF3w%HunU;KeTVW%hW*v0dg+y0~7&1nugDe{x% zB+paP^)b$sD?rxf+XffkK~TBH`J+AJc@6q&)vOqQ{>j&8aVEN2v6X`^Lpv8O*kAgG zuKfHE;PuJ~;I(=H&=eG4yn=OLG7O;oUI8+#84pEkfbW%<5s0;kBwdvyPu!4CoN|8@ z?$@nTuqK~VyS<@-nElE{Ft(UcxMtV4oy^%|5~caCM;}zjIZbtr;0ijwHR(?L*!LI1>9;i_u?j4-Ip`-$fj%K)eY2gN~j+sRyu#S-?;hrcOW5FTD?hHL?!+V#Y z2$^D$V9u4J=y@|GR^wb|QfVp`mBUp6tHpw*)#(#a4vo@irE(k>qKX%9`hArTMdz>- zuOy>+(E5;9vo59EdmgOQcuZ!!FD3$KQ8>CBrUFehn{t?&IKY{GDHNvIs)}G1h#cj{ z86=q|#ph`D?%ZNwI3>!>uGn(g4*=DZqM28G)fC1^ibR#w3RVtMUl#Tsh!@#uXj(gz zi>KZ|Nv`V>Dnp2wGpm4sFvSpHch0#`;uD)h!@`j2WYKu48moAq|d@if(S5-es;(I?jddI%)-}-m$+{HtC z>+P3i$ctI5F^+Ine;f_I0pX12E;1gw$W|bu3!H7A!{ak+zVIu*Y@hvw&)SR6zhGD2 zc@s$F@$pUEQwi7;cbs?LYlXAM-$fB3^324nG$(w|gCDT({j=X=@WVDecf;Tj3``rP z;0{-&EHhQzC=m?Aym0(O-Awk8k9^er#XtQ~J3T$J2OfN^Roq%IwmIWH*J{yw6umQX z#%oW+*iSdpDRk!BJzqR`(SG5Vex)Uor?$Vk0M#sFOG*qy=S77aRZclJFbrbP71>Y^ z8upN!A~DdJu^LrIo^|iJ!~pZ@$T)w+N;-`}xp zfHkwIGm-2?axUp$uD9(ZsijwI9IQJ$IBy4gqkYex`r~%3*@r84+^PM+y}=+!{ymry z{)m#Y+n!ukQBalrX&cP-2pwkg+tvHHhoQ&}05GGXlu;pIKQ#bUpLOH?P3<42bh$kC zR8?_^WV2T$lf@i5j9dsX1(eqCZ9zR-5Oh&&L>5i-zwlXWFhn%dZD_x@ap`PVZ*2GO z()_L_x7@pA>rDZR0dzlvSh=60xu%hIn;Cu)gHsca|5RDg%kpuUli2Qc)2iW{a-t-> zcGSG4+ha1*kY;a7NUA(kiCU0$T2=i``0uKB6Kh6XYk(v<2YM2eAZAuE#$(zZ!yi$m zdtgVd zsNJT%FbdO9l&Qa4#0%lCYmZ+^f3vOt*~JNBV13oOBWKiD_M8;ElE8R7b(_y0o#Tq=@1nYR!8>F{bH_AT?Q3iTQ8+P;`-0EN^=48iU)}qF#(q#e zf$^AN7?`Y8i}OPJ621CK?{!xX%mRpy!%m~RlSAlh0!z5&N%zmVhnG?xla;>TRf^jE zFq;!I?PF2ssb<=&E=t1wg>hlCq<1uyQfjrT=SCrxG0R(bwJ!AQNG{PQyR#ZXV^`v4 zRoZ5v!HPsqAv4aK#>>N^FuR2GsQ;eSigF6sPp=ByFbX*MA0ct|V0Ipbyix>}$dJA7 z;iC1vnluL^Y$Quc0tXEW)ZC~tFC6|WM<$#=%fRPNr^ZIoiG%SbQjKQbW|Z{g0Ff+g zdl@n-xM$$S06jK75FW@tGx$y7b|N^aERFN<`HyqBpwCsZ?P!tQa`A*bgj3a^Jyzs6 zI|bZMmx)D;ePF-kxBPbdub%ol&8RgaJW#!BSLQJx5ILihaSB|X6FctNk-?E>hcL)9 zX7?%j%BuDWzaKjMRs3Tu`4Cl}68iy6 z%3gsEb*iJ3rg$D`%zdZa(*pbJZ@*=K^>6VUbaBuITz5K#8%&%UaTiJFJ*aGC#t6V2cel?db0uCy#`DZNz0?Gb^`gckiT%Cn+ zEau#xcV!<`ZYp4IWeiWOfVwqOzCQXdbY4)kHuVuje~PY66xG*XbFRR8FjT?F&d_Hl zSn%t2Kp?X=9Ied-OpAfG163k_zn(<9Jy61Bsh?+})1HvfcO_K{QHk1$qUb^=DT%71 zeI~y`prP=rTIy>RDtta(BL^~H!@#r3>9ltTQZ8K@?a%$`&)C~ zo}C&-3QY7JFs|?!O}Frl>!$himV`h@L`tSv0BF#Q5NNx^H-r&pa3aa(gcJ4w1`dU_%nG~6% z>a7QS14asv_ES2*f`Rp3oOBuwY(~P*je8H6_hx$_&bUDG(ng9XB=Y^;6oRfP`cac7 z`}CeXgHIfqm-ih&95t{)?l=pH?Ofm*3NivpUl3;b{HjRrp zqPIB`I%*JA(+Q#TPB8w%&4I(y_ovHLKHH3>qAMXICnVvUVHKI~dEdWB3 zxCa#*cajDHx?Q@aQoS#AG^T*HAfw-7A%14Wsae%VB`6qGlB`#yl~}V_!6Lv;_@jHB z{eHI>5{{zHrCM?H=#jb_iItqOB@0nDi^wL;EkL1gSM^-M_Mu?c1e=!=l8It5yo!iA z1IMJSFZD{mjC2RT8-qRZEW6d1+B0p&pQBJqKR9O$*q~5^VwS}!r@pyWQnRri&J?r> zBty%d-I@%@96Sv?%yRrxgCkvG&XU&N!>pZ-nuNB-FV$!^}fj(IUzjd9`VtA?%x zMP$zYt>1g?h(CkzlwwoPzf)7FD@7HG+*+taxdNNh3Glv_pb5Fb|GKaLCeXBe5L%o$ z#z>Ui^rmdkCHpDMI;3Vqcjl(%-baNVfm1H&R_`r%yh7aEA(l!y5}pUzqo+NHN^$rT zD_c;!Ltw&Z=HX0o=q#t3s%CR=!o$n;V|bi&-*F$lU!AJ<_4E_Cx!+Cv{`Y+Uk@}t@*TL zP*a`*@Ves+R8fs8lv7a96Vw7=r_K&|SLzc%3AnTr##1pKVY_C;PpMU;oJG%9b ztyT*r)s=h2ZQd{(v!H{dJgF^#cE+OTp#Ncyrc=k>{hklvD-YcFh~0b7L#--vCI@R4 zq9VQLCiZ3`n#&=-JWoSg_qX17)vmqyqAm7Di^=v$!HLPPc(O1ovz^>}+g^M5S=-y+ zqt-@=L|&A)vNYRif}iP^JOi7}#x7mH&=R|QdH)aGXY1`50!|i4itM-ih$(2$+0RK7 zhhC9m8t%WhTrKULH{Y?Rp7=^z*FB^BY?={R^@;_8i)WL(c<%=>igL_UXwAbZOg)HM zO2twMassV$1tAU6QRGujduWXNUdat`x_*W5*|ZS>bYZp7 zd*T7(hJkDul&nq=MAc_kHho+Y8S z^Exnetv%Hll0{NCbxxz_*TR6zm0Su3m;yg04i&vug|zDi?qRysc4?O${uE-70gR7k zlU&ecn9w(d>!PtoR84%Y0#lq%4&ScmBTcw2t1wYDjCGao7O;#bOjI3=z~Az`m+DUFo?`A!Bx3V3_YInMm^exptA!m1 z5Q{!3l8uPzf)&BITRv3+3(?CO`+)bJ0CGT$zjxxmME{|ln4-j#F<}8cF!kq4{om;O zDoOD~?r}kn!4kzvV&>Ys8oSAZRv<-8FB_Ru5$&0?_Afx&I>#fsJx)=L0dO%XK{aE{ z&!3H|*!&LDEXyD3oC16@oBJS>*3aZ8^)5X;n6`G?qxIx>_x>d3p90L{A?o9LYQzBX z_tMv>QW)V2ak5dJm^H5Le!fXq=y2ndJ@kpiKaQ5p6#gi%m1Xr?p8fcw(r%l7h%FWF!Di+>*1x^VF#k}apt$m)T& zopu!D3a9`B9Zn?|+Az(VP6pwMWTgXHbx;LO#-3bBmex!4w3#y6NIq%!8CT_gZY{QJ zi9Sd(3I>Rxw^gqlsHIa!=6ZD|k`oVBM70D%u-(ggePpk`_PiyXbMG6XL_9ygWPv5_ zIAC`Jl{c(ojky_>0r93)aPGaANydBL_kjjJ97AC#lJpp^hyE+=;gVQQNs^(&8*6KH zc(Alz{^ifM0AD?dL(=yPg92ku8rD*q0*IxhK7SFBpCSf z`RY9S=wrD5d+&QdiI!{vXgJf(`Qlj&nb*0WQ30g)Ac!Kpe=yjKFMXvY}F6= z1!@${>*--r(7J1YhXE29DpBaoEv#-}=(h*v3b;kOG4|5roltDce`nJ<96_HdP|#c> zT!jcvi9k!iToJg5rC0LkEDHC{k?@4iibPRw!z}s$xc6h2D4#?9vF_hTicD<%Iila! zt>E&4-FMeR_Wgh6``Z5cN~5-A*sKN&tcnLZUS(eu5K-=biKJlK+-%F}0ylg= zn;xvtk5*ASDJqf7q!5Rs(cd9{oHjI9GCQciIpX8?F2B2d%w+{y4dB^&MQTJ+hU#`d zy}WPE_o|3HK;4zdPZ!@9m@tIrx=jf!&u1a#Miv?y+j{V-8Fda|ZtT3>`Jr#H4d$LD zi(%1jQ&}A`R1*1*d`azQ*dkUckPzpn1~;KwC21r&7pf#q678J2zHL$qf}6IaAUl$b&v#=7gixouHj>F2HtE0^h4P zx5W#(-{?uH5kK;oqAetX_y~xZk=+jLGT%@frfP4B50#G%vBW1LP;G9nSmuq`NHbdZtn*4KLQ8Ici> zgb%A!qyuv)#U2j9FWt{vTIx1~1%Y_B+V3GKncA(L(#*BxS?g<*^3K1j?k7NN-Z%dY zeGM&QtUBNSd=LDbpf!h2woZ*@MK@S39XP1b?eFDs&scr&)lX6*z);W898hRsrco%$ zM&-;?-biJ6KdCGmoO0ZpD~4e&h!Te1ie7}gO>^l#3?zRm4Oti1X86- z+a3&(N4>QO_yU2bQ|eO6b6^-5f$z{WNQ(yY8PCrlW`ocwIwuTh15$MaiCIqo`;=rk zgM@i8a{wC2L2;C;D4cU6IPfUqPNs#00q7MM7@Jk!ykm1#C#T1@^7(}=Sz0bxV$KMD z_RSS|5VQ}HL$0L$RSi4k2I4`A$@B%mWYK+ylb<;|;iXqzvfuoz{}v=<|DS*FZ`k2E zZ`$^Ey(ZEFpBHSP4b*QAQYwgjE&P4Xx_9x z`p3WD?!M=Kd+VLI%?CSBkw>48Br-*$L1z^e#L6BSG=zJA>*5m=6|TDcq=K#_WH->j zX%b}ul%fG#YAAuZa7aDh{`-c_sCLHZchf6FZ@tHl&n^?v*9B_;lu~;$#bIYJ2hhDt zXW(kOmoDC8pZMgbTLOE-ya$6c!tpj268!)(Qm#NC*RWws<|Hrcj?jmYx`Y0^fBSFZ z44*%@vd#JgbRTfXD--=BgC6J-9mYz5HvtrUL?yCDK>(gVilA_BASl*U`bA_4^@Z5_CT#Z$hGBA2xE7OgL*yQ_ob~tJDR@wOoYai7$P@ zKJ>}=o44m-0Am)Eix@uELF%AkmV}NyK?0U&f|OE`+g>rCDgrGr-|r!#NDjzW<+Z{VhUcpGU#~(ruqhUH{_$`m^?p-}dcBMNCnI zA-vN9Meo-F(6iqq;~`{3dbqBmQJ{=E3oleU?z+PU$3TX#{m%ZU5N(e;(d>KE)(LDO@4V(SU{KC0k|5Ycah zS`{T|!{NqAgzBH|LE{M%3i+C<>QAWwcW5AC>KHD4K#kL@zy^u5C+7!9ZV+5zpLp(N9&X8~rZF6G7`SW(=y}#Ao`nA7jt8?wHT=su6+GcTL%Verv>5qUU?EQSx zIJlBx8dzViyuz<-Y`1FB6OP``wM%o#NS3F8lrry48qZq#d+-4p@Axo!P-E~s_S`^# z0_v=YXLQzKuL=ulNt92uB19jFgP#S$FC(hz)6tvl-%dZ>m&oK+F^#eBF~*jtB2wh{ zFkcBVR|N3vV*w}`cbM9GPfb!$49axpG5V}NCK?;y}q|10n&U)g7S;Vrux0r9iWcSrv$O6sG#u_ zKC_Xu(yGr6;65w8Qo?VHp=Z=Qk^-Z@^1U{QlYr+@B|dNHKX0q5DT#M+3iYaSWpwHi zd%_{85wU90bp=L-Ae5;hU(wf3@S$|Pf;PPjA$*aoD>_#71X-SwQU47o`6a2EX3_A5 zK_gj$NmEO=S+lC9V(3Cp328Wuh*^)FqD?65yDC{}XMN1ndmsC4khNt`I9qNMkJY5t z&YvBTRA8ETR5*leVzW#_u>%ccrk0{fIB8fG0u%P{c=JCgbkRf`2YH3f#AHUnUz#i= z9ucnNYckMqR&tJbI2o{*QBy)7A?SeywYN~x;G3=e=s^NHX{hCHMyiIe)B{;&t(5Ry zs3~7%OVJ0Y=0l|)O4S;T5i(m3*oiQAI$s<##K?hyp_Xn@Au=7jMDAkGi235(AXAkq z2GSiIjtxy-*sWWJ1K|_I9d+1lH$+^VDu@ZsYpbF9RpMDxdd!BICypd|kI$yv_UW`n z@WcCX(awfIzw`ozQ7%{6e(>-9727{twd5>eUJ#K|@@liFlQlARt$p;hMa5~?AOz*G z_UhCD4NHptEA9~=_H}e}(|-5w{sZ=PU;in4`L#FtDNNe%Ni<4QSc=UwGa4rvEe$q~ zN~e|Cklfa!P0D4Tk=6HqOPWEgjLMG?a_lc1b_B_+F!YjoO&zUCamaB8ZZ z*vHj4_1$m{|FZXoZCXygi{;o7C2zDIiRgRvB*)suJ2vZ_><|pmJMc?;C24Pe-yVJU2knl# z?zFSBwIx+U%wp88oVngvDg2yx|DJp=8cK1k0R%6!B*}Y>I1(!<7=~5slE9ex)Bbm` zI<%KxdBIN3ICQv7Ltjry&Qh^4A%P;o9n{efB{;ctVi(R|v~T!^-(nZq9@(58A&6lD zlr4q@B9O~de}z6Dh#1$)jMh{OnB zr0x7k^BKdt8oFIzz%yB=Vh4R4!5#acIQy(3Nq^{p`|Lmc{y%R|f9V%mf^=`I5Zpxd z$@>=^Q1F;@MAc3`T2%YU$4HPh zA7@mcuh<}0PtMlvHPOE`w%WH|(L`^dH!;f45Dy+OtEY zca%@69hjrqW7Qd>y`jaB>~~VQQ<9)bisQIi<*M0;*WZ4!-GcXDooAde>SsDLCXzY@ zeJK{lzFHt zZH>#hvnY}JIjqtG2&y8j87tqlgGFiH*Sc;H`e$H3;1yyTC24j3o%sDoZ)zm}v2#e#lKKvVbApFj1A*60-iAYhQ` zHUxlmdmbN_7B^t%X#ncZ4WIEb9d&dy7OzkMxe`qRiZG*Ye$5OrYi?}7*dS8*~ z51k}S$NpYV5!6;lJRj;;j&;2g8X;6!h){F3%ZPxCy!<2M&{fl8FZE*b&MQj{Xf`WS zvoZ~$2TjFgUvnT3+Bor&Q#2=gAbkR-SG-}oTxx&!X66&#moi&A851om&F?W@bd{`S zcLog7LjZubyI`NJ4)*Pb{~teOKV<*F+xNj2M{kZFz=_;x3o2eXXB$;9F*I`eh8f$T z^=v*Zl3lsuf_?jUe5c)a|D$$#x|IXx09Kc9eet!Y?5jWZwf28Z-)}$oU;Z^*XSH%k z_I+D#L^q2NFN;fE=Mrk~O^UfdJI#trkUUsD0*YO;OL6bFYj~jFsz;lvc5=M2-}arq z$G-D-eV4uV=BpNSju1HH>zsMzdm(0u_%#t!EoRiD*t{O7KJBRze~hn#_~Ls2lIzVq z!l`WdYtwn1ySLa=gX-y#jZ1&`H)+tS%k}Q*zgcnz<)yGUD%A8i{Mb>$Jq3#lWKa=w zlo;=DCFgU3o`A{E)ZoGc`;bd5<*MEJ;GK5T{_PxlM^AyOhWJ9IYJEPY5oYJGB4x=YP`JIPLG>ecluh;nL^} zqEmrtdvzz%(Gg7~-Sh62?5$QSyMFDetY=X}cmxDXzQf7{-~5bDhYaE{k13;Ae^1_2-|qt8ct%%&G14+8sh4U8wknJd`UaKN2)tRiirj%Q+Il7ahf>F$`8f`NI1+ z!C>#2UT@!jsV)C~uxSHOZYrR$9b{5CG%&ZT>={M^QPsnP0QPz-L@|*ZGn>;fPT+X5 zv%BAA_kZp0w^#nn57>CIt>vce?)H4^p>PkR4VfWr4^9E3f+;}TQ!&y&`vS7lOAC>b ztbh|K1OyG1wCPAdIF^9&^lrxw+IhNV>D;I6?vMZb_D)OS1{1wcN^&v!z~3uW>jnX4 z2wX-5=ahU;!$!d8h|dOew{2H!@7igln;XB39xaGGR3_+ySIfarn0mb7KA(;J9HCi2 zr4_rVa8evWg#k>G2s>GI(|3{NY?1VPFErQ(?OY6rqg*!Y=$~Vymh&YCR#pKB_~(rT z8ju`GzzbEarFFWcSMdZqVkCoc1|H+O33i4w%u&8y6_aSq(ELQin3dOa8{+4IeM=!Q zMW#va0kvSQpo0pmND}($s=s(2e&2iYVFV!PV?vA~D2I$$0tlgVie7#m^WOUn@fe*~ z#a);UpDvV5YyFNr?N^&6DUZWxD@7>Zkss+?}ahMk11(iY+#f*BTxq2kRv zC_hykl4c4V)rpgmkw_fPg6KnlK;Rb!9}jbEZ&5*x;o2EA*ZpTtmPv#Oy?H*pXjZ{Zy*jUcz;o1OQO{x$Qkl>-aU0#=)A3ZA3OddFXl;@`f zoLLcPb*jhgS<|eMDiB~CT0nwXOgDLM3Y~?i*|Y~*Vd?OGMema#K+>4iV>UQ2;C(+= zj5EsE>&9M_wXwgCeHwS(aW}z*yphtAO8N2>K@Y|IS5Jj?#LZ;f*2aFn#QSOYeROZd>b&DJ^6xQ-Be zBltozFe==c%8eR|$wM;ou_hV)N`V(|3?_A!U`0yd^s0huDZ=ri6(?2!GcEjB?Az7r zuiNLo@Qe1X-~LNtEA=KhJY$Nk=k=`aM_-G>dWmKXSR2Efff2rKTuL7uC@0$ z=XS4&7cV0+rOZ@HDIpN5Qb%JDLRNu*VJK5ob^*p!#xDGWVH>+Bk3t?cO@c+E#(MrK4RA~U1!UqrnAHs|cUme>5gZ?1iwe5IH1-o59Z zv-jF-&E}im{ATCnhoDA=ZR{XH8kd5HW#JS9s&x-NblHCK=YQUA-MV3yj~^n?C3#>A zG~8lu?6i+)M|jwVr7sdeSnlX2_aG}{P?C;}^gX9wXDdua05Y|H&qd+U|Y z+ut8IIi3}D4@4nVC2O=zHfH|<|NYAE4>E;ymjk?L!PB#ZIH&hFj1Z(sH;|GvHU z*?(^3-sdbGUTYtHET%8 zcz`%!joaR8`+GCLZg<<~z4zPx3%ggYw>;=(t28q}=k4$w5e&{eFTB_CKr8_yeh9i8 zZKi`&?wdzHvzv3+r*U_IYK13$gT$eV0>UI;$^K8q3u8!T!(?+tl7nQ70|yB%nEcZc z(Z!?BG5j8t#nM6Lx%cl8tRp~EQSGb4B;;Rg3MvRLcO|=J2QY4(SGo!g-=*?1 zZ8It7tmubA8w4!o0B2Z|3((y5{5j5fxA`l|vSaTI!h)ARs0jA?JNkR{dEvXkD&QWf zO2P?l>V4G1V|%Z!`yWsxwwB_x5$}wa`u>P2AQM%@HAUwc)X{PAqXKSHzvfs6_NSLl z)2n;ez!|T7US7nN%ngOA!cSVM^E*#8o7d=2`02h?@p$iZE?gS*IsT~(5Jzu z>a~0bUqEDnGK>@X**U0Ap5Y%Uuwzh@f}(*dQe(1=Uc9wGV@__4YDiJiKCq-;<3ZKF zfEg+&E8B0}qf^L0-qQXC>&H4-4DYJdxs9;jXa}2wpRLyoNgDa5{Rq88oA!2_hGwt)Py2_{h@7%@a&pD)-MMN1;D_IDuf6hu z9j-Ix8Gx>bow5QQ=Eav^wXgfe-)?{Yzxd1T{jb=qn|CC2%JL+Fmog}^W5X^~bi`F< z(&2}B?$t3MsR&Xo!Ou+NAHmW9XS4zx3B614yr440J`Si&8H1bR6)dkH8YP#B z9PNx#)K?b$M_tAm+fHXiTys=1MOkFfbj~0yZ?ra&yao+N;6=@-DC}C`>r(k?q!fA$ ztI}tDWf>0zk2RE*5`te>59GkjGxMt5!NJ;|d-g@U`PM1Q_fD%xDfr)s$p(7Xc+O{0 zTZS*@it~%vjxSxa-~5|@i`~0-ZqY}`Yh@LJ4dO)MlNBq7 z_#Y0|V}fEz28)Hnr&&~yk=Ov?6K~nVo(m~9+M!_}y6<-Dxo4jtf7+zRR7k0e84cQM zwkSTbv75GUjUXcw`yBb&UBtk{%A6so4-@x%zX4Rghfpg8+*s zLaex;GUt_zy&eZEOF$c-%YwKc;2y?SNu6)LU_-OLQ%ksJ*fUXI{3 zEQR7>NeZQzj8@%T#WQX;v-yuVFRt6y|9^hCS(JyHsl8)k^M!+wgSoA#4@mX1Hf8oR z;T(GMG;^RUeRv4PREseZRSW2TWQ!p0qFI8wpb#cc{sEj%?Hcae-TN2zwr~88?ef?B zn|6NR2jQk3gzD;z1D$PlXD4% zl)BS75NKD6^|2`0v%JpI&m?{6pg%Jz5$=02&|K9ih{;sGZ-Ow&jJ~;`1kd#xJw!n} zcFHb9Hn248XQt?eM&h8tvSXDN@tymgbDV?8=TWsiIXUyg|K5JS(|sVBu8XJ={b23u zAC$GKDoVtpAqK?PDQ>8d7)Jk8vKWuBbbX1n)j?6k!+XF9;uHY@@m~18WcRz;B>*@6 zo%_Td_#!Zo0Un?)uCo8BCnL_M&*O4`xCSM?o;1#!Cm7;YQ9%t#C+8@I4OCxt4g@JJ z0JwVRl7vYh=+oT8zU0WKD6m=OeaM;n{cBEw31i@rSE z=)pnGjcK=A&K!ybj|T+)ym+0)hnzI)hX`-!ujT9s@^fQgC8-I)$=wToQ&v!!7i7+s zMZ_4Ao^-{3tq0WnS{`o5MB~91Ud1vE*(@ZNsm#H$Z5l+8!;!`0nz~n z7d7pDeqAzptG)UV19ag!vea5C(b=MA=H;Tr_bq%)pd5MeQV5_>Rr0D(OPaRLY5cQ) z`XhG#?oIKHi%RmTt17+p;>-4~_q^Bs%fIlQ_B(#}x7oeZJ9hidofhccw>$WAX7?H@ zc<=Ont4N)<|MK5wtt#YmVea1Bwm)-w{aLG8`1jB3>~ymG?R#hUw=FqpzjN=lea&zE zKihxxm;SPS-8X!LJ@>-PaFDsr@d$%VS^)o$#+52%(pgof;|k;2_n}J2biUP6C;1Kt zG^oeVq^@c|vtME$vf5{;xbrkVn?lhCPn4i0Qv>ZB_vaTl@=h$;&TSU99n)~sfKQT)9?7bE%17@?SXStNRy0TvH%W56BtR= zGR-oJnO!-Nnn%Z4EsQLhSEn6@lBRCh(*x()(gLvf6@^L}WAzzpylT~?r@#0`h^4GH zBdQ-&_k#hSzV-v{4Zo`avZ-h-YIM+oq!*s~g5AA)zg_Y=9*srcC)N1ktk6aT z*WYO~tUAd7Lr`I~keTMXhFz772O7@GVl?lXoH)Eq13>QHdCQ)7;?tN*#lVQpDwOd8 zgmVq8dndFNzL^N|6C~W6UubBk2wIE4D=a7C0><)Jp2x_&6ru^^j2VT?Y^dV zhcgw*yi($F(KC`eRUdWk(jei9A~BNgvmuRU!? z=Z?x}0Zv7Ms^Q+E7n;?E${+~ak3vKd=m6C9_aCLLi4R>PaGfvi*!`ogvv2$le!%XR z%PmQ{Lwi1OT*JC0XzQIzg}2pm`D~M%K}y|rBvrMS;4z@ZZBl-+c#lY5`d%OV(n1BTbM;TyFmPE;BTou4lu>iC>E~h*%03!sj z0-7-w&&GaU-LGK)yt83uB~dd)X8ak0Akq!Vr`$|3;>Z*nIf-1fBiBUr-F5>dC6gR>)L6!M5B4JkupeU+BGRqOFj53+4_pJU+4d8~{(%HKEbRlY*6*7!@e(gv z-Oo?rYuyo?F2R=1L%R=-dVR#^7CI&=RQ-=9KWN0Mpz^1hwONIy(iz+}o z9eB{rOLygxa-njgA=@TZOb)X17Re{Ba>RjVF+iPA*5#$k@W#Q2k}MWUO`(a+TzxQN zk}Rw-u?k0#r5d&5M1u_Xu0OjP=-1w&YLSepYwlDgsN2=3lGG*fs1badY4a@sM@k_g zu+wYG^1wZD9N=xNm;AJCQh)FvBA|xGM76*g2%)aQas&&pe%g%MH{qL z@WmHjupj%eAGQDFKmGr;a(KpEgE}8z4R5r4DnNk@wJ|6PY4}`hsjw6!NfP{U1i3fmR-nwJi}}wtx-H7^ z`_KIE2R^H4b=gkO?x^w8l(Y+p_X>r>jE9vKl6YfGRer$ z8Sb!-ps^ak1;$alFYhyPgshJeNO?H}kfJBj8JzFm|LxyycW>Xvp5{bzlT(hv$g)3p z>M{eQlOFJl;}VMYg&a>%R&ZpM@b=_VQsX!SRqY<~>^MYQBMoB&n(RUgH(q0Cj;9C20?FoT|00Iz^B$dS=QYM+k?>BqGUNMTHlvxO3TIisg zgVDbD^cU=n*PpX1m#(y6nZgY*-^z_YW=B+lH#rj_^$NR_t6zKVdAs%2ZM*)+!>HaN z&zbj~#AHFa2xKupAukOz84k@+ph)J>sG;j>*fu6 z{nZz2)7F{Sxtxz0GP;7#8LUJQzM!ktkwBvBmQuIlUg4mvC`)nxy2h@p;yV`PsY993qV`pmL!xVT`#2D`@Q5c)s)j6h83*LT*X zjZ4|v169<%75C6UMb+>6>+fs(?lsIw^Il|#s|=IQOF|OrwklX2-A-1D0H7J)D{nD4 zyV6$9UI{B_nD=%1){~ZRK4F_Hzs2si{lAt_M$FD~YF{*=M`L>tm^TQ>WH?bl3!UkF zm~eRV(XL}No;RT3O&j0-JM3ToPk-D#_K*LP-M#U1cDy>U)coI+m`tEA%G0V!!5Ocj z4zit8KMiUsK{n3N<1p=^tfA}YRCbqo8RuiP zd!lDc0%id;2;lXz?@U;#oBDIv;!Ni7qXU7tNr8M$OoY?SB#}-<;5aHcZC%`E#2{Y8 zHii0mi7>}dNtol%QHc?yrNYE{M9F%O(-75~g#E??toP5NjixG~dE}i6V`QwCENJNz zGRaD~xjxJ>BRSK2KJRB~?>TyvSaD?4d^TV6$!D=8^{hqp4gyjuB^Ipi#dDzf)3eqH z2o@4l#TN~ewEuu1 z`gzHErqMsO-|n(})t-L@$iVaM>UR0IfjF6t0(3O;r|1VZ2_5)pPf zElBW!dUjU_M$LqC){TKAsB>+soAz8Y#9f=&KiVgGDJus&tL?5lX|Z-w%2(xd1V5cL}&9vcSsEW z-LRzK<7QH<=&_=YN2O#(KP0Z{Jh<{ecK+o{x-X~dun|SjXMg_IWBf*_UaoK zEur};d*_#a2{$_S=UQ^=7aSU={9!8MD%a!oIZjo%V=mT^CE4z1>5v}PK|QrsUw;FJ ze_XAUe~5mPwp9Ew?m5s+k_r7NJ>U&v83!}wL2(~RTqNrN!9VOcPiJfi;0XgD?k#_| zZV=X>dgb9RjRS7W=X$ur;DHkSb0*wMs##$o54rb98LK-v=8epxQescbz@?mHFcyo7i$QXJRHBeNN(Qrnze-*{=H&o%a5`ptDmyw6 zcV>esYgCr;Jv%OrG|^^Ym*Eg`zoM+wadCc-ua^b>~g{w%_-M?aROXJuNAJ z%OWsNl@hZ^ln{U)VSS0*@*tjxW_~4AOgu@R4`r9tgQ-d>B#7PK>72z} z7CzczInFa7gha|c8Jo6S`&U2v)ArhpSKHt3Bir``Xg6(IqEZDcNYJHHt+L|Gu3+=I z=P%khZPzy3C#cebU~dja@B)Q3mpH!*A&F!s0E3|1=HMhMHJ93Ua2s-pAbxha_O|Ca z6`s{9a{YbC>bXTFqZG~p8^(m^ygP4uaPyG;p+EdbTUGY90)WCq$zo6HzZxR|+c$A; zmTBaHQepmayVCB#KjZA?tp*mnXjdP)))FM&yC?0w?ifX!F4(JqgzS*}*(qy9G$#eK ztg!03kZVxsP1?4WTcvZp{j{CE{>wIA`^r{9YwuMqm|!O+)^tAHC$!uWQ%Y3PWA!VJ z4E?_=HNr9uLhjqoPlnsJyOr#v&6nBN{MmnOH$L)@?3G{oQ9Hl=DO5OZbHb!TL22&5 zDtqjbF^J?^&8QFvd4aV5MXUaM?@{)#6}wYAYv=m--G9`+=G*?P9enw>+VihFgQKm{ zaBi#J%64e(uKKvm6QcrBtl!0oPTB9mO?d@pw`0HD6$L5toJWQzs+tr2U_8%;_S1E?1A)R zzYRk6)pmO32YWx8_pXQH8eNz``@<=vm##EGX1b4_V**>OWL3?LRvccDKryV{$4a%RgRblnvrRimiJL{fPnR2 zp*C1lRj<8$MvA2YqFdMsfx#+@Ku``n_T|We#)F51D$%I&;H(=v<`UMTp>*Ujrl252 z7Mu3aMOS9ZM1auCA=()GI;xP$tn5=NMOjU@kPAP;#wq$NtMNOkx`gr(6qOhVm2}If zUU9^O5NdjmlfFRG#kol;Jq8klhp@58tWz}IPhJ%}CjtRAvP#q))qxho>~w9eW;Cqv zJy*n|icvH+uW7LHkk_^-@U5&%ts)5(Vw-k4U{nb6-;aK+FDnw_#TxYnsq+5 zj0U;*>baUpU*ZfWQ-h!>rgH_IL5YetXr9|kufAwku6-$jnCx?avYx$F>y6bd^Lg{^ zZgZqE5=p$`LQm9GpC{g*ddc!!_*ir5Tq?-ttf1RPnDNqCK z2_&~N;Bdy-I>%H-tJ8Jh2S%(bsZI+M}9uT;kSx~Sz z^X9D5+EdXL?1!PO>R#b;5;%dB&Ii<+Zx&C$qgq^M;H1gMXPw1e5MT)Ad% zd)wRXxu-v8n|#?q2@Y;*C<5-ICoqg)P`#-7Rie+(lg@a5d~XA~*wt%qw?FnL|Af7I z<3;q!%%VdUodXy@?6(VB3iiI{?b&(nhlB~bb1DQGc!nmU_Uf!ESFPbAruu8Gj`I*ef&lQN09|9U=_v{aqpN!~g0d4aj&KK_s_NwO9;5g~Y2n zn?#WtlQWB%R^FfZsZV^!e&4r$Gx}pPY~vX|6V3ngF>Q^MqBtyfB3&1D^PGuyP*9M- zUvy^!ln;LonRxmUR53;K^d~tr+iEOF)<5Pa*k=KZWyaJ(W{jlkT5l7h_XYW zj6uF*e89m`P3nTEyO7$7rt@{Hm><|HFF$90|A)R`R2PPw1w9!XTY{yups-1F(8@!^ zL`-xw^vBJ#@pG25-)Ya23gnXVq3q`CNuWaLtEebB5Kj-_5`*BN2y>>FW{VgBE`BjU zzjpmA?BDtme-cvH08V@#dG8ZY`y<&vR>cV3WF@!TUKuB>yXG1war5_DkBk$_d{0Vp z0?pKLd@4fshnyD{XTXFx1C_;7+~o^9a41Q#fhU{w}*D~)mA~Nq_566<5UNw?%5>K5JT`t!2+t~A;I>uJSh$v zW+~{IfEM+AXU^!_9Nx88pZ!_e-g?0~eiLUsnCNM|3Q7nfByRGU+V(xUGX2cTE}_x5}DnqR--#`Y;dritAZPnMBWy{>|8meks%*x%VP2Tv?3tNT}#f z5W+#IkDEQyOQUt8+9J|6aONF^gtoRMk=3kM9$76-64xgH7JwQ7JA(1N4%)VvaliBo zI(S+K{f_@@&Db0PpX?j_po$m+)tl)LkU|Y9%CNoC7lAoH%dhqF&8tx zzH|V`&p~EpbdEu<^a{bMUHMu8y8@>^N6GXV3LGQB7tbGoP@OE~Gubq&9+v12%oD^D z&^r;8IL-AqJG*I~EENbBNQo=@@q+TD3J>Ja)hCivl_;@xjvAryvw&v3Ua#%9{q}FN zr$7IRW>+q2nY4yxLab!i zMNc|btHEA<c4YawsFA1uTMq)tRzT6hkD7{_@C2gAk+uQU`O z=S)oei~~(h>>)Tjxn?gs`;6VWb<@`AKn{j>snk%CvhHLUw5u8+MX8}x2w!>SX*<1t ztKC;iPIu?n4`nDF_y|=*&Z^6#QPrp<(+AKysb4I>p56;e#VVgw(|Z)cw+K-_Il62& zUVXz}eC7oR$HaYN{eU2filIb=ZBlfuunKkg8NagVF=01mW6vm2Mg-`R{AFtkZR5e= z#$s^y(qAGGk`O=WLAODv4mLYg1q&ngeDMG|tGbZb_38I-gM&|A&Dz0#W>IXRoQcYo z2M!2T9h=X}^URO&ED zIb(n`_eh5Nr6+W&_2srLvR%6V_EvOzyS;h4oxs;ut!lJw3DP-y1pGe6HtY~Tc<&jo zLOlkCVyv?*;O#)r2`vq(N`o3aV`h{;%faV2=2p4d+_Gms`QvslX8A9@UUsSH*eU7x zMD=56!8<|L9Is8J|3T10XBjLTCkgoe7<7#aA6ZeeWhP-%MatHWj<4CnzxO}FGw*$e znTnvGS^2#UngRtJzWx5lKz-){ar=O=P*2AHK7lb_K#hcAC0H}7mJqk3y7+5n%_16? zd-T4i%w*0-p}0+$9L#W)S!WQqzYPJHnX@Oi6KzP+_yO;3bZTLlSv^6F*8Y2WXwMlw z{@fmY+lgI1d)5Bs`#;cthJs4yTn6;tMR6_1nT!?-kDaq@MPbhsDA!0{NNru{-AVvz zwk~E6&o+q}g=$+!X>TpbZkR^GfE5ri@myt6{khK__)DFlSbLID6mP{qcG7|`kZ4sg zXe@w{9C0?qG5C7j z+N&NdIRxE*U2K-|+%b9e{h`t-shi;_i^U9z2TEIs;t2@UQpn~-mT3w=)EAV@Vo+2D zGQ0FG)+_Oby1anu1L}9VwvZ=R~+(Oz#ES50l4~VxU+&@KJnFC7QB~1nOgQyjh?R zkQLYLfYbY`aAC8qF;fGL>LvB($iS(fPlQ#w+}E?hpz^a9^dN(dK=F;Ol2D?VUbV~f z3AdCefGJ8u%R*b!6&NT<`K@yht)sF@)8-uM@xztE7)9bJ#6L?u{J5dZ!}_j$_jms- zd-dfP?Bwz#6ZzXhG8#knVypX#*M{1T_u%MaNFJ(xM(J+CsN5&+JmJ`|DbJ8_N6!jO zM%G%CqNJC!r=DONX;e_uYwLIO&HD=GCIl^*z2Y*+5CKR=ag?H@LG(ZcO`OA{>WhL( zM{zt)dF#!$?Dzft-)|rO(9but{rQ$SKBTsg=tWsd)8Q;(kYG9vEu=J=Q&-O7YS(`M z{%zdnU;HcIV~@V$QG4apmx0`2-cT*7fGP0}_5|pFJJK~OCH0|b=Zcvy{7N(uPXxe$ zX@rVX!4P17qf=H(LahkyErJ5|{HV{P)Ftt&s?Z!CAK9C4zHCoD^|*c6d*5rPyDfs$ zQb)lU)gl?j7KEvo7HVRqQ?4=h#$OF;8uxDGSx$YV^HbuSiC8-t=1fc>hG3;nwIXVZ|_Tese_U;o?__Eo?6Ywh+O&R+s54^w_2=SifW zd!6&UuulthTF?#mpSMBbdTdi_=mB%Ei>{2NrFMLO! z3?l=GRMyD6Ldghg9rT*9Cl$V*oo3CsKWm}MRq2LizsPB#k=I5GHgZpJWqXojy-~F; zdNyH8t?1gBfM-bu;tbB55f#jN$VE#b%x20S`{xXW!9M#G6GS2a#tp0hZ$Oa0pzaSp z4^0v)>x$5e4?jW!}^e)Hbews%h3V_e(H z85v-_6jY~JA)UnnCryv)X0(N{Dpd@h8lZ~72N%&X2QWYy*x_JWqWyDUx;eUH_g?y# zl{bH_C7vrgYp?Txy6ahLi5(lN3^oNCvmJE6*Z|Inayz1S3-~s+0q`EG9y9}X*w9pa z4Cx7T1~rfg5_^!GeR6K+w+Qf1oUT2I_A5KT{zCsXYd++Fy`Q0UIH-pXc$p{5UNv7; zNVIze+-a|{o!F~8^cX{S!{f2SeP;r5xpmJp>^5RvCi#96@B2C>R_>(QMH108T67M3 zV(QoJJ)i+HS9Ju{H87OI;?S)9WMa@4PqFuPt^au2p7msOKmx&#kMn)5*xxp zi+LkJF5yfgHfGSR*tXizo6FDVz~KOr`L*;5g(g7VOWLE)I(nH1enbYrg|Bx}Ao>@AC-hGNmr6FWFjUNuI|)BDzVCO73;}HWU*=6 z9~S8iF(@%x40GfAoh$0vTR&C$B5A^bQ;-0e((c@OjR8xMcU{ZJs1+81TPGgVQtP;aB`a7VXntFryb15$>#gS~*o zYzanVU&X6*SZhEu#iF_rlhRXf`W8Ni{HMA9^~R1)viCf5atJiIrPryAE zy%n?s+-C_gqIaxo^AAdhO_jvDmeY2$_<+yZli0koXk5gd)xdJOPXf)S@8zqKqUm|& z89KXn0aPZVf_tIo$+cI;t@Eli%j7N;<{NTmT9@eOO9SW(E*kOw{d50$Lrpg=xw$8L zV#4szUb(4@Jb0j5MaVali$HDNAOOGBsvpN!F57qhjqkB{zUxcu)z@D`m50@jQ3=Cp zpCu`j*(^pB1Om?Cu%$P5ayvvKJ*z)&`5nq4pNqaIyHJZQ$SF(k;Be!ti_(->QQ%q? zd;GJHaZV5%H)$qC0a*{s_%xNAMp@tX+=A9!V-upvY!PreFx1ajF@gsLL5pACCqMbg zmSBvKeV?;tuqnu-e@R^!hlGx;v5}h#>ndndtKL2T!t<^2a3n|K>*RE-HMsvWo^V|> zU5UwoK7#^GIlLhg(rn!Z;A!+efpGG*2bF&QJXrd~$3KCeS2@)si83Vws(PYN?o^v1 z)>@02tESq|7DK7o4`)^%pir1C>VHL!w(7O1pAn7>Ahk8rkASg(!ZhpL@6j~Whvn4- zZ$cmN@8Ibdiv#EtEDz>^gmP2ky2r%d<$Y9J4uDrBIM|at9YG~z(12Pe&~pY(?%$ji z4Qgb7PPil4pw3K)K8tu(w3!rm8A&}x1(#IZioIvu?gF-=_bUPrEjPHS7Y`CdyR+C94>X8Z59z0cJ4{IqQW{PxVY7iV^H zacHY(;3hAkI1=NSsu%$HJyyMUjOuuwf8^6o?bWq zlT$yW+#7p+7+k|yRev%`xOCc+8m&Pwrm1*xS!Al-WTwSB(VwzpeSU?Fbhwnn?@x|2i<~ z?=j6Q{CC%W=c2u4J9!VI|Jz5VwCB-2_tg6e8&>$J-L?<^oj+yi_AlAViF&_b`xvj4 z&bUbSz-%}CFB3lc0Qv43c1*q_MZB2htD^lS;+q-DovA+?#juI-H-3h5J=!wnqpH?1 zcAw7A3_yt$NsM(d4x|q@Snf6~V#2aimbIHgoll3709XLqs{V)ee3f74Ww0j+s+*yF zDqFlSv=h}cd7W4=?QiXA0OpK67InaEOHWc-s$+g%wNLq#LIiVU9l}^RJ^&^MSu)yj zxMV!#*xaalTs_al7Afn9$`+)Pok@DRW5I4}kBIq$Sz}84EBPmQvbtA>R zm>m8F)|qeOZ;vtb&**AU)uYHH}BDK%qNks(h6aRWL(^F%<8xYCue;j{5fC5ns_` zX4YFebsrD#No(%Lr`Uc&GQTn=FZ;mS9eC<4rF^-e*&q182kdj7eyk-(SFBnLwo5(u z<1@NYRYml+y=!B|hfT{>vcDFhAadFBNvRLmC+%quvna^PGsrPOD zZ{4~}1l7^Hx}Z-yS3+;2x*N1qq0!(TTZo(#>z|ZqXuO*A@Wb!0zxbE`YZ#H6w{Gw% zhM>pNXojMf1?>&N;F{cGbBX6S?e6{8>|g)(KWyLqz3;cn4_&v{Z@g)%JR)$+y|LCH znObEO8DvETtP)|YG|J%0X9jW$tx)?@eO%t;4hh+6>N`{to1z52cQ#>fxlSHD7tsNT zqAr6IpZ?-g=soi47q`=_y+FHI`*W&&4v`+3EzZoAfUW;r4#hZ}vMVP^h{HjJ2C##g z_tm0XW2p!5d^Sm(Z`^~FuXrzq_UtpyYsOZQ-QaU9(fHnXoZd5)ZhNt> zO6vFHRVF6IWp52)KgT+&iY6r`ccxD~{u$e>j}%k~#d^nQ=oeAK4k`gwpvIVSkePWP z4dNcKpe-Ul zWz~N%Q*l=L8YE&v_)va6`Uxt(7l|a#bk_Ql;vVR1nOCYZoAn?C`*@$yVv9|!3}RvX z{T2(sIoOGuRJmit#Z^2RL>DDLQOVcsfF?OAUWmZ2FnCIX{0jSf7iCecg9p&=zbfaR zt%n2K-hbBaJomra`tZ=s8kn-nr|nnITCC`EXfC)%WFzRe)hzEeXkbtd;1k}93PlwWKLH>Ma+GgglCEBAI0~I!)1AG)sm_nKbbSsa6wrvmX z93X4Y=J2egDq9NBgYeR~Y(-)OFhDjx$)~3Xos3jRi=C}~G`VUb1|@6fw2b>wt9;*j z=6|z0pZ^!OIe7@GvctrF<2mmMASli4zM^z=f!BmRJXp|&0ZJ7Z zi(300fW1FyAI(ySf12F}Et>>X89m2+S@ghh6XQuiL02+7NK83nU z3O7d(GihTmD_x#%0n!Y*QmDK5=St3;n{vs#7?AhoK%Euf5cp(CejWqSm6R3WaBw1t39r@(@xhhfC3?FVD2XiOm2=MEs?*r?JnBl#Wb%Kb1sz(9$G}-gdye67C2)+nn}1q@}#)_B7@%5y%fB{ zt49-W0fhr~jYLJIH*UPqsy^?s@A=z*$3FN2ErI;ZXRy~?CCwEFMXgb(59jye4+8>v~_Pf z^?N!n_C0u@Em08Tlyi%!Wgzevl6a>%z!M9^I;rv+b7hiF4||+fvQ-xdhA1#VJLG4m zNYTv|A76guWxMhE4ZHU6^@bF);km|s@8(g482u7-GLZm)-l}<4S?8xXG#qoT##8Jg zypPkw23845L)Q;Z4(t=3c+Aevc6M~QR)D6UUFm|Qpj0H%%k-?>sdu_*yN;vvReSoW zXYKawTedpLc5&~NmbTLY$9|-U)Du1Ippy;Sx3P7Sj+THIiEfZ88x@RO9tw1JFZs|I06>j}YnNmPJ+XG>I)C-3J`C>P6@&1e%xgUr zjDSj*L|cO_uaX|CJ*lH~x+CmPF*`Bz5ho@;47qVJwg5$0K7~E3P}}n4pjR-rGUIC{ z9|V5*=gdeSmXA*J@}8!9?v$F`gAFEFxB0sk)pg_Fjcf_bHfwgusZ|Gu$zJ>Qe_`)> z*B`Rs(pR@voI)H2e!V49#X*=d_D}BPJ#xVesvM^=61fg^sfm3ibvnDDA13yepy#nA zOf$i&ozuY3-?hdb$(rU`QwUCFef|pZ2*-ZjIr|44$KU8vu>Z7ecfIlRP3ZF#%7r_mbgzGm=Rv z56=w*%32@KOTEu`XHg4}LJH!eLUEK?$%St}Pwi*#pR>{{a|sC{ZQ&e!bUv2AqA!V+ zDi`nYBr;DGeht)av0zG%yNZHq_SEA(;~C}X*Edw74x8J#e(9z?_Wu9S%3HtCDo9sp z=aHN(6%Hg~=@9SS;Gt>@HM-r6*)I6x>w)ehaXX1D8 z+_b?2#^`Wc7X*VEoqBgwf#P{%1&ZT?s&=c|Wzx=~I%K++@VC{Xf4@F(#{`S_RPy3h zVN?9Gc1uhc0%fABr_NR@0Cz$C)RLCH&!_@AmbpoZiK61_k-S7U)pu1U3us_3kxAAA zbRczsR;Rk>FpQ2S)d#azl>=i|O{b(FZuXly)tzq?kRp1qUe3pYtmzD*WClmE)w5%e z&sh^|qRlu=kySGhO17T_T7O_%8$XmX{G#FUgSWQGg%dGP{mOi^l0wBEo4B^w7I6q} zhL~&*8cH}8Nol4WNx`fvUkE>tOtYXJrk?roS-^lMRWPCorj(bA8}-T9UcXfumV=n+ zXoELiBkPPG|{8rEo>q@(OqKOk8v@_4f`5EkE4$ zV>vHUr&S3IB}gx9z1i5SuQasv)*ZX{w##;UN?MWw2MoNasO8&ufFWJODR;-4qH-MO zLWzVbuxM}}s@-T+pG#LZ_80%sU$D>r`WNgYzw$AA@^g>dtFOLd+ugYmidoeGvrAVu z_UNPUvETJOe~*3LH++*F9G^5WZnjrnyA4B_Q#k%ir)N_1N@mfy0V+~F>cjvRnhvT| z2Q~A7pfAUPE?A%3&}i_c_o}Tqsy)3AjJuIJV=)db9JI&vOyrE#Ey%rn@2)-j?DO`> zqi=`22nQ|Z*zS6*kX~Ou6OtW)JCcsAMN&ZeFCk^tV9uE^ssE=4+4ajkYUuED&pc!E z_O6Y`Z?~z0HQOq9k-aui{W{<@6P497hNONzu-kXuKvnA9U;ZTxah><}`~jR>DoZsS zpqB<@^Q&|l^naMQk^?y5?_oD1_|4c;b30#;T)%EV@#8;gyOvxZB(tvCW&+XT?9`wm zn(W$z_2i)k6Lhk@TTZA+{Eji4lh}yS(W?PDaQWp702$f)?B!J*d`VI5=l#a#MRg?& zMZSXjtg2E%sxy5XB}2lH4t?!lmj>&AUVusu4o3`%6ah5kqpDV+N2NVm+WFKURgL{! zZLeS*Ko7-$RD@xl41g5@f|cMS`uLOlA$<2r{$g1C8J_hLE9`|1?DcbnsxtHhE%qcu zdd}Dz=Y3D^w~pF3Z$4wEpZI6?=(m1{z2e{jR7Pi9jMK2jfsOu<_*S6ikB<`)F@D#A z>W3AptS&*l4765PMWjHB-_5R)0yg@yhcYX{nu0WC(3%wOlv(jhW}*vVC!^YpxlJwc z%DZ;fI(T9PNGfT5Gek{Fw7ayQ4UjuWi-IU@3URrJN@@ahVULFqkZXPgki}|k4db)d zANvVAd-khq4)kb~=5!=H9ClJ(3u| zQu}Ge?|IMOjQg7*wtyiIbG0mh1&OckM}O9+3{m|Lz_MnYRSn&RaFRzeUbTZD!6>_< z>ulGtxoq~%w!5?DU#sY-(wlOv)IvOx!cht2hh(H z8^9;KJ($X&aggd64itjb`H;x$K$$;^2>5TUdh!E);4J-nWW;9*R^4i!GSh^k_UgSqHoYLs%jB2gx9)Hi-Gc{C@f$~k3kmT!(d52}oKleWt$W5LdVuz*Jo zUgQ?@S-f$S$TIt8q9PU2n!SG^f(mTxjhuE_f(@4)b(C%3=B+}hkUlxWh74u0PMN73 zoQlmqo|9LJ!Kuo&6N3cI`M}(lI}EmGN!(`jJVhXeY66Di4w#GL`}rry2rp!1`!kJv9~XDAO=XWqX|2^IDyk4j(CtTljuGVWyo3D z5)i@=`CKC-YMh1O`u^LD58Ltafql<+{Wbf{r$5#bjce_ZU4RNuA-pgc2beJ+_s>R9 zJ3ov=SP<-b!|y#jzk+#0ZH;qVlWAq7vXK)ok6KsQ#aymmw zUFabqiBV@*;wfDzvONQPhmkTw5gDMiMg0d!XqQDWtx7~uB_am@!dPd?;rqZ#mtwu! z*82-@9(^7J`i1Bm1_k=0^o2z0C?o7uv{}yQ8XWE*dzUq! za$H|)RiDY8edZ}tm$n$DyWtSWm_ej|JLwit>Rd^tS4P>R!9k~K^_JDs+xG0!uiAUR z@@w(=#clEEYc7;B+n%FQFor+!_} zGpfUqv-R0HDJ1)X=K0xy3n5kyY?qp)XM5FHn&o+DboopnZ4Isz`~p%xO~C zCp+VK2}-xy?89$ehW$**Zp^Kjm01?XmJ<@@`v*~LR%2P&kAYX!u0SkT(UOmcRZBNl}IkfjJ@QJsnfUc?jTd z;(9^uesr4Z8KuR&ZwX=ynN9m{Y$v8BQ;Xxne-l6sL0i*FlbzWSCG9b zjX=MFSl%P#6(vuKybsoUk_J~pb;*kXq7lAtk;D}Cn5ME5Y$4FatA<4O5C7gYC&tuy!NH;3Mhza0~`}nptEiQ5sH#A#0O$7K3 zS~zrlc-=nsgMZxen;&Z6;AJ~&duKKAdMLXsDzy4UOFt(vp8yD#N?-2jsg&(z)_wo|8eORa~ z%hq;qYf)T9?KH6p%K3~Gi-`6eR)W@yvC?wS0M{y&6-yZ`1guhDBh4d?e4~qG$quH$ zLf9*72r$8&iO*NQAy^muGg}N(&QSqVl`hAu2}~vzVnxHv%$=%nD+~0^lw_c?O?W^~ z=m3V7f$*9a6PrT4H^HS2DgvD>r#9Eb8=_;6pA{hv(Tr9*f&la$oK(u>hS)-do<3i@ zOnF|xz(phRgIsD;04t}Qm3gyUcdw5moWVrrnH5Z!4wo8siH>k)h6gZ3!yK!QcT{^K zgYNw7=zMnLQrAm@CB&uAE|AKRC!Tm_iIcz)>Zu}u5_(ZXywGzRXCFj*zXyWW`^2hs zIt^5E_<1NpN>K;OTX9{T>T=HCFZ_O=65SC9qT>8~-uKd&w^vryRzwq}sY}=s6a?~A zF@oA5f{8O2Hd;hFZ3ao_)|FjS-P@b$5lBH}XsO}q(5_s)Y9Dz22kbMS`h;D+cD)(9 z;K3Rac^>$Q#sl|!tl)ZU`@KThgY+6D=p6%IC_~j=HR1w@_8HYiJZ>r?QdNiYtw@?3 zS$C?3&&?rWTFCR#1Lf*q{^yrJ{NaXtZP7Cj19>@Uao9sgiaoI5qv}@1KKu_Ajs9#B zW=s@`wG{2|`}gkH8#i9Ew{G3QzP|dtf5nv_V)vP9*a+Nn#aBjr_exqYf?oK5aSs{d?p4JU`k_SwguuzUB;>~MXRXBA0W zwoWV4`L^DKE!tLyWXK5u05bIs5u&g#sw{L7!E^N7X-K!*dOr8`vvzcH1WF8&FsS@h z?L(q*11L25teO;1s!F-InN~&J*suQTFA+`k`~ma0cFKzqfeoy605s7PIr0373esn- zaph>j!r3Q1pO_WY-t%a4WUsyQs=fI9a}D@j%O<35`w+Xq3DPbv0vrdV?P6w&fR;>} zrP4xM?6Imv8m*9YmMPp3<&;c&0#T1Gt7on}XNUUC6@8siiH-C9P6=qo-6GzikKuXd zeoKS)Dh8e(FgOxTE<`o_M$y>rJ`;4V4Yy5IUg1#I|z>9Z;qn+a25|d&qNHz;U z66f$7u>~lx(W@%<2**OumZQSr!CniRPY&+d^S}Ciw!8HytA`s<-g2cxIG7Qf{+2S<#nr)$?Z)^Wluy#^eq&q z8oJ6e21gfGzjNRW_#XEP#H<8jLU;g`h$>r?mpCD@Y5-3MK#65R#sG$AJZ>-9#sl6> zws#!gv&Vn(ueNJ>xyApf+cknpvrgz1wwp0r1^b3WmWAq@D&2LKe78pZhVmZvkyt+3 zdkCAbhN<@|yVsZnc=JA34D$XR*X(91#7==e<*>0{Ghaw6ZUC1DBsByjG2;oZXEK>( z$JOh^}hjLFQ6dwxI_?U!qpUQIQ zNKh#*LttpJ*%T(@-e7fpwN!_VZ4(T@d3yL4iaBI~Tc+W*JhM8_QEKK3Y!PcRofY;n zhA0t}mgtuk6HCcV{SE$>Z^^UU#TSh1mnHd{m)FY1C)rW{Aq$FgI91q5b?Wk=-h7o8+P#p7r;yR*tN+s|rR6Q{{N^wJ>HIF96*qGKG3=;z9=E{lV zEElas(tj^taXG|vMM_@buu?8b76)^%uGWP6qjWgc`qUKO651-{#8T2T3ULZed=AQ3 zCGweP4nU)$-pR;LGBhJN$CO&k+F|5##yq8k;ulirLSdtUuZ(^3hWZn)pM3Zt^%GJN ztvfLwUp~w?^FUi6&5j5{kr~iyvsWq(?XU&AfA{-7XdnCNheWa4S=1G{2vmk)(zLRW zw#}&2oT*gJ>-OX-0f8|hY0>bEH)H@#2c+g)C2_HF?4XSvL~PXv_1FylXm^lciP=Mr<~J)=Uw`}F!&0GRfNo_A>An++HaZzz;(!h zu#kuuvz!Ly_2<(C0Rv69u9|J-_bTlN>zwHnQrV>NxMMEp32QaBlk4`QKk~zN@6O#; zF=?N3-#?2gl}OMrymwfFGR>u_`P`QA1Ei=%F9(CYgo;-0RgeHloZJ+{0eeEPB-xgL z0rRMY@_X>QUT3@U`pfqE%WvBCulY@OUhfc`0M~ck+iUyO-fCUt%-1RlSjb6HgBoaM zV{%kNuoXEk>EP(V9{bc|P}4d(c*u6%GiUb&WU(Kzbc%x1B-J;8n7m}!R0Un_<~HjC zyYbqKcJKZ@6u(?S40EIENHs9@zdH)$_$mOaTiI=Qrm-F~n~FzcBxx$~`bnR`PCEb+s0 z_)S)NvaXSpFxNJ&qLlgfhQzA3f7CGWBx1m3DSCeFVTOG8yfaoKwiYUOJ+2VQLw}yk zGzW&sA%iUfdKC%RdbnpT&Wma7mz`$&w zmeb?^l6%z&)#+&>ZPF{S^Q2gX0ykhzIS^MwMYJVhg$mt70C$(~APIKykg>&oS5DS; zIXz{+_V@q2Ry};ojt-CPY=*X912Hu_4b^1DlAZ6GtSd{$?)BqPLRB-ELCH+jYlKW# z^EKnk-eREdrz~5c^-EdRnfk253m~nQ`g_IIL_F;Fi_+ZId%Iz8(gKX|jcNaL?A=0e4Kx4D#FVN1wgFJo z(${>yhu`{MEUdJ}`vW*jGIGX>3C}Y#x2zJ@EO|;M;hK+B88oqxZIYP4$gJK*3xtN( zA;eq>&O)cyB3Mk44qVhMk^=P*E0}axOdQ^-zYKJ0g~PUrEeI8pxCzE*!h8buCqxA& zIFT&fslBX*bC2w_hg3#1bwj5Y2zEFpJ>V*p9n$M~54?6&4@?P!(NU6aqNua#=R$v@ z|H%RgLZC|I1;{o~JqbqOy-KgdvG>E6G{I+#lohT*RjZI|i>$x$dl3_h%feGOATv`Pl8_Hz=nl^HXsX7ZvXZyX{X0pcJCXi3g5fA~Y~ zzLcKUvHmNEYwii_vu0+To!f7<=3U6Te??q-FtRF`jXbQJwPF zYOf_p412KbJvG;^KVm=ob3fB63ooK-_WTQ9w6rE@ktM4iZh}E9?~(Lsr+K zXO5`4i!#7wVTGqX)TnevY%*o6T9OI|`lRa7;EG58lBzq;Jo}8T@-cqaM+vCMsP6~` z^jr_xiBQ`KRmom$F{0a56^;m~d>vi-+rf#)9{V(sM+OO5)a8r5XJap_)fo;yKo$Zb z!`^1}IgX=UoZYj}Klyn(K00BL*sHr$mr&z&mcS#9vZJtex5D?ImB)7fr;x*Jz zJ3k>HnLr_eT{X^hnQJ5+q#!f7s2p9O*&H&>+EY6PfTQkX3tR1y$GxK0-HGlo)mUaT z2?>xrU`Bu{_Km18IfRe294P|N-2D{A5hi1TYzjn*MOBJ^XWX;JI|M_lgcVzqOyfBi z2SXNq4sF)bd24%TVlUQXH5`4*A#h|0#Ip4<8Is*6{Z!AxtAw47T9Le64Ci)useS*| ze`&9N=)bWm$!F3X*v2X8&sw&$#k%ByvavAdVi@Iw<0>y1w#a5UQ2*Zw{ zqDqEH1|?_$AUMoay_{uTs;+^>3zrYyi840p|Jpkw!`^bCq#18pJC7qruZe|CQT0*w z0b&tIV%$y~wD+R`#&M(dO=CA&cz5c}Cw&TmB%2};F#wmSxInRJatYCrM$G+6> z_}^01>w zh6CSj*V}rH_;-;)9>4F2npbvMEn*yj*<+sgyM*{$@Vqfo%PENyuY-k=3306_=Ts_8 zRQZf5Pf?`-p=Om@+5igb1gd1K{Wg&D;q<(H>L2~-mP>!!)+d8qcpHjiVa~`YWDS_s z5PPyegYZ29B~9>L;{L>$=vfH&HGMLFpZ&E-@1fWykxm&Pa)8Y=4~%V>m{oh<{Zf`% zXZXXUXJ$RL({;rKi8E5>UBIV|EEmW@26ZSD?RYRbha=a$G8GaE z@>We;LR0V#rv`*qS-Q%FoP$E73?)n)v^CKXT=2X+Y-M~faFj#6%=3=yO%Fp{RB^4M?+Z7zmh@qr$O_Oaish zt15Ik1=UW0cva;i*03%KNBRxwIaIsTut1j`AE<FVMvpaAf=9mL5=RI;TTOkseXWO5Hg0gZVO$i$}D`<-iS>iwy zRc4sbg6f%7_3%9g)i}+K(kzb*6j(B$i506ViQXD}UVAD2c-7_dm6jm=@CWSIKKiqE z?b_QE=v7;&NO^JGey|bb?8xQE8R5O#-g6wsP{Cp1*ehv9C+mS#pHC4~mrw<&q%JU@ zQP7ka$Xk9em`3l12Rlxm8F}8^P+Yon#s1YV{H(ooHAS#rAC?YC~*KmW16 z->&;gtCDQ(+2@|IlgnPAIK#T*6lDgK(XW`Lw%F%Lg^wpHK-(dCe4qD}_fYPA+3zCC ziY=}{YoyY?hEgMN#*kN5ddJnyKJm$qz`f*ESt>Z;5NxSt1a%lmvx(BEDo;2?&X{Ax zGe>2lM1n|pd|$&SpZK^P9vlPFBsEJE*BrZNE!{CnaZokB3KVyK&={R*icFGlPi5 z=>3u0>}WU9qrv_eN;gvmn83|0!gK30(nQxouTl;*wg56T55tey7=gWf%FN`1{Q;t$ zc@N3{ydudA`+w&W&C3b&R@j8BbD8+8P$?3n40NJQ^`!-v)A@(J+QF{ouy+CYiNyf= zl7b6f_Y%Z{>tAU1ps)p%F0Y>OS>$|(>UZzA9Zpd>qZ?PEgtOy*K|_r**#TJZM4O)F zPf{PXp^B#hqF`-8Sh0liAIQAO3C&2Cb%;bqaYAiY@tqNFj`F3HC%PlP;?*O3L6Cp>nYUny z%<~Qj>x5)S=n8uwrXpz@;-YdkW^;faBbuLtt^WxfSj?M>{h%cMPJ%}P){hVL@eCxpMIv^)a5he z4-|VuZ=)%BW~E6nl(7O9b1qS7mEzz6DAxWt9OuH=HT*n9u9ie4q{w4tXlL}LNbtnM z!uNQ+iv~c|wWxxmxC_Hy6YVx{lj^`jR&{z#6lEdWz3k&2TmQyHiPyqH&jP#zBP+9U z{(?>l$qR!~xH=rf#i54Nr-PQt9cGf8Vgq@9k;~X3fG-LtjRp^jDw$G#=p#Y@(jhlc zGj`bcMgtBuDp32ioYbg8F0=);?Nb?ZzbQ7^v#HprIzrVmWx8{6PPPYL=W<$G#nDxp zMhjh||6pf*PK_re(EzTA;}Df7l%!o$bg4$Fjv^cj2hA7Cv z=E;H2Q#~y~%dw6iNo+v~bx*t$sImtq5~`rT&Xja^%1@z#1dXG;$)nfbZ6AF9-?Q_3 zH|=132^aa&OV8U>?^`~kUEz61770Ix4Ns(wV!c)tm9Pl>qleM&aTvJPHP%$gbm@rF z@+Z~^hPeYjRL?9i1Q?2l)&l*P+Mk#0U?b&1n`Ep55sL<0W8mQSaNt^S(4FMq@lqLO zl|`uf#|pUzxraxW?8cj~*mis0C>!i{>HvF`ikcpf2_?*vJpfuICVNS$RUrY3YE$vq zODlWsh1cxPt#jLqCv5E9ci=#rtJYqXz#d>%p5cMAyPz0>m@xJ~kr40>oi?~`)xu}& zrS@mN-q2|#t&v3)LwzcuofZs{We+ICC<65m!rzf!Gda~+Kuc7IlmsZrW5tkgj!(N! zlA~q?=0fX8>KuFE+#Vic57fHp)|mnMv?NOCZ8#7}GQnPOKAIFlyYNEz(~RG(>5h`K z04f4V31BQQb}8``;)Kmnz2TrsZ=TP7)|#ziKja9z*}^&6oAC}r8G`Z}eL&pTl3P#e zUrOv>O%U?fS`wHS3*!MnKw||KVjQpvABN7>Zx^!NIIv?4lktKwv`iA+BW{f{MZAHT;V17n1BdRwewpCrVyh^aSA< z(+0Sz-|Vde^8%`L8sSWKNkPvU*AQ#qcF70AI!&)~mRrm*%>Fw?vlnAvb){-A$7i_c z1!IsRT3+s6(B&`vPOE^MwAESjH9fYIgA;q(>KXgYKm9Xpd;N+X94GYg zA)ab`))n<857^U@r9D8DphbGXH#0tyKZ;6js+aU?jtOgvQ@X+0N85)?5P86u(7sx&GI?u`Gwp(3mB;`2_J#W3nZ|e6@uH> zsF$+OAmH<1wMYVNbM#uJUj4+icWyt6BVboWFJ-7N@3FD?&-}oek%6_uO3UkHVWDGXLF_R2mJHfQ@mq&ztf1(U9*zL0y)L}l9Jk*m29 zJwZaCfxfKa5SIWi(8;K#vA?L6xDTh3?DSbxv_vK>)oRbq`7I%`HJav>0C}PSCmKgG zjGm0Fl2{~43IrEPc{LY`>d4?WSqLw%L7Krit1fg@2>5*chmd-XU{Z*r3vqaG-)%%v zLP3fS_EY=+qk{vxe0XB-|Nal!M?d^wyL$a$HlC+w;--TSS_6Z8PMi1l_X*x?E|wyY z2c1ahG$7WWA9|1mRm(UK(Pd^aKMVUflE(Nm;k5+q6W`MVP?JjP(!gyt3H8orbS4lr zaFwm2C4t^kgJbzQTQu@Rb*xA<17|zR+i?z@3x2?}*4DsOhW1skZtF*O!Iz|Qc!szsl z*%*#PuoAeT=bHABMDeioI`19WwtG8j$?4rUUbCCG?zAJg;eE4nzdJwnP^>MIRod9C z=(H;)5E4V^0u;U%JSj{@y2~WhvG&PNKKVrZ-f2tFq8dM<(v>18sN937ya8xhb;rdj zbtETC4=smz7ugvB4{)e6k?j!MfrRuxzL>+1bA26DkJAW%txj1qzZg`f_v zYP3bnC-?o9G{L^B77CDI%t7Dc0vTQvNn=RjXS^miAL}3>t1ax;^oouP_xKxJx;opl zzxG${=3_r>S5MqFo=_ap{VVM7(oe#fL?eQ6kIAQ?8&!!L&5>XWC`}~U7WME|4Kqa* zVOB41t0Zs$x~RDxFuMH$HEbf|OZJgOfXsFoMDaVZwMWENxr#x8N(-4B395q!N^VT? zN%Ozs1bZ;FHS%iMyWexoZvXnv+T%a@@7vMg-R3He{RWL9BRjVw)}?{tTv(DV&>1%c z+DUUSYwjL9l12a^dR>kEt~LTxlnRl1ue|ttBr4@*s??Scgfjje`8BJy0L5W~-52d3 zKIB!2BKr*=GtHpWk+!LG?|#*$y{b`F9~de80PEleimJmQ96~_VKbO0bV0Kq)R{y2P zK7P8Uq^f8+FscGy09+X#TG?@W$v*v${)6T+f7w>YD(|5WfLEC=+6PWMw%XM4?U;Laxtl!r*8s#u=%)k)P~I@&n2 zZmdBQ2@Za*UP)vC*DktF5^d5^L~X>SmlCg0 z?Tbi2WWAIvDki;GBN8%WQ02~sjpA#`pc(=_hKzy6o^tIYX~JT!xegxCMD$_e8+&DL zAfkA<*|a|^`@jc3V88aOzid~oT^C9?DQ;nK1;GUwR2q>B{e6Tp_kbrsQBC&}h>k@Q zvrsR;_hDAmbf%#xqa?P4xR{2aq9Vt2u-NAcG&nbgNM98wfXWmqqAqoRV$tl5)y_^Q zylj8}2R~?cZ{D;kCzs?5bnt7DVKPvROoMG}S0kK=sO6pP!>F?p39xZ5f_k-+N)a0{ z!DY@w?0O_fo5kln6S?%W~4V)`yoSXYALaN=QXNzzzYyUnW(2-FlkZh^9{mIU5{ z;^#kO&)=xwz4R)s8n&`8e&NaX{yx4yRSE$Y6iAtn+%i2`18FuT*s!N1f?onF5E@Ce zB~xZ1FrX4P*!|ODPdxrbIu6J`oue}DubD+%%5q#$F@dv-v!?f>?N=h;bQ1KGjjcj; z(?0g`U$c`-m*HmUPXl3>V-1=P5-2K&(vBPw`44)B6g_#qEBjqM_H`T3UbksU*=Iie zL|eC&P}-m;vvS016iuzNUoQG*$Z`-Go(QP0YRDiXs7Xl`d_EInZ;8>jz>ZW^MbK@( zQ=d_gqgS8@B`L1qeg>D@Zj~jkM99vVMWshh8riz!(|w&##fsG}&3Ba+QA;G_VSncJH{0-ZE{DS0%hx!3_hh1a;mlQB-_9#2zCV5JK?6nH9&BBVr`^lOU%Ec9_q^xO zUjCIIwI_e_-)$h^xecq!@)?x@E1sp85EdwTP(ID9llO|5;teLrqk`2!7hvo=@_XYc z8(1t48m8%dIm$niT;>)#lFuYx3w*(oon2uMk-&z6q>@!_i!H9=M4l2WO8_}`xCSKo z2tAy^Ly!{1Auu;4RhbifQ^Ipq9E10w&G)PHkDSA1dZIK(FL|q0RlkRo=zB9($^lpJ zK|8s8Vpn&cx6l6ff855qAF<1;OD0_nff^L6Kx{FWo*)8T2zv;n&!oLSGA4+MQ2X96 zj2*y-aw>ijL3{-Iq{J;fHjCe_JpmIts54$vjk3LTASx`f?^JjrT@RpD?`NFNy3aIK z{}f$7ZInVwxGkr;*+%DHF{bP#TRlduP>OhQ1pS|Cg-HO{#@Mn_ZJ`cYzYktInOmeI z2H;z@o{FubpU>p~G^=wNd>fR$MR+aL_4?Yh?~R>8hd5aoUR}yjsx4?i*vyW(4zTv8 zMn_RqzD-nYys{X4KRVz8vWZD$si~A?#!Js`H8x_2O=fXf}TNE|qtFe>IqwDEOWh4YECSe*Lh^4Yn zpBk+5#0PC~@Y#=n0Gp;BBhk_CoH6@ZEi5mwx8uZtq8gRW* z89S1II3TftMWF}1andzt7q|mDv+1G3&Ph6f>48zdN;9^RWMBe;{K z->XYgyLed9r4QPE~aOvwZb3T?q!LD#mLBf5oN3MT` zeg1P_v>$l?2W)e^#=82Ha^E{+OKi{X-LPkU?$cL&8)!nb8zn^daIPTxj5R8IXG(^x zMlv!YFmb8(%a<%n%>E6wPE6sbLR5PofqQiL5s({V|QJ{_4`_Rmu`rK#R ze_gPKmCo8_)epN9;aQlKoUkGn!*Yoeu!?Sb;u#oZiGYc=w9Gf`xo1CT>&-C->h?;M zz#;Bn>k&qc;7DhvrhbMj0@#5SIw*d%`+4EHFW?$dK2i1E@cgPpCE&EZ)_Xt>xz0sH zazi;SRVC4KTv?73N7DnttsNddWG}t=ioO2Y?e;t`DPW=9z?ErV_a3G=(fA($2~joI zeMB{oW*`6@vICNs1f1a#ypa(&+10cML`#OX98`lJ?NyZ50H$B zH0gF*Rft4ij$N8U97mjc(R1LWXCk{$MDtlks>J%e<>=q4LTd-nK<8vZr-FYHV`6MU z1~p{3o-osuzyT5i_A zzE2r#p4EkIG#bIS#PzDAwNjmrw0jQV+@U8hdlhWGv1{$+PyWh(ZC`TnqCN7B|C!w$ zuQd?no~;~FpW1Z{BLa38I#{*jcq~j(p@!!m#gMeV1MaP$(Ow74q{7+NwAh;%RIU_M zIrvQ9a|~<&i3>F#Q&`yO|6Jol#bh|`hq_!W{ zUQL-{b2x)C`VCo;a_V8OxmQ+kUTfui9XwkfVG+APKHMm69rMb#o?@L$(JyIeKcGD! zSPcqQP+zsTNU`MJXO3AqR>OkDh})+fQGZRM5+|<6)%X%CAM+ldwDaVzuwT9m_dwAs z!;zg_y<}ImpSMr`$e(J*@8foScz}eKqEE+)qfP-L!0ra6ED4M(szHEu328;H9A{jvXF;>=1Isl7OWR{JKYV+R76cr830WdShz7u1VjMcH*zYv>H zC#_lm=(CW1VQ$ribY@&P8D+J{#JX;#DC`{fGcJt^fIDcmwM@ry(VhZ^a_a& zaUF<257-cUVg^=w2D>i}$c&BDmPIyvqt_)OQeile#*pm31U;2m_t@Mx8Z2k)230O%yad7OD* z@xCeMgsAUHy&()#NP7s?sAW^telQ|AiUftFVe!|^kAv7utiTv$S(C0cXh#)8`pOc{%V;owGbSuXbT-!r0+X@FDQa*@2J)bzOIE{3 z@yt10;mVb(_UtoXw7>pW-)HCd@7c9$m+^T;{eDcNwNJHXotqw<=^~&5{bve*TGO3^g(Bw?L%3md+Qn%qqJwYTy|Box!SjD(s`#_u9*}MR%Nv}&^RpRt73a+TKlE0b-qXe z3u$2fO!B#2Nl!`Zw}KpOjxh?g?AeGUo1=Y$YYzdV@HL#1^ zYA*O=XvO>V2QW>yt-c;#5UH;|nEvU(lt;hb4T}u$eth9#+*H~|NZ4T zJSa+1moy2_%%X=pFA-Uf*8+U5O!N@9=8oR?_vt`RsJ!l7HyLIE!<2|{jEnq*v6>i3 z%96GiuS5PF@qu4`iGoFd@TDu_v3zJuuB!fPvP-e#DRm#YugKf&5&wppLV}dD$_yq2 zHjiUN(o^NCC__a<7_UMZrm0~|(%UKR_b$u|w#<6tzNxB`%|aE+6sU)UIO!r1YOsC2 zW;i^PBgxCZ%O2;xD4DROtk#i?5NQzd6@5f3h3EdDB7mww?qXh3pvpw%c1vC?nqS8TA)p}}VoJ?u@CHT5Kjj>K5O(wU;EnAzmqp39~s z%m}bMC9GISQq2|+1z-nlfk~mudhj1glMIA%OY$zZ_wDJYo^J{H6(sC6iGmsdilqnk zX;QO$!5Su2nBsbp^$F@>Ux!Ugz&7^DkAKv5=XY!kx%Z-g)XZ$|_J^k;o~f$mmC~*; zd|NkTF}Ttst3R~l_wKD%?3piq-Zlq^M3SratRwh=y1~wik~Hz0qT-7=D+~354zdc| zVU@(kPMlucw3lA~BHk;fg+{l3ZL|~13FrZIJSPjY#m^6pd(l8nzHkv|h zqvyVXM7MgIaJ}S%e!M@ps zPu5`Gih!W6OEUetTAw+C&*$^b0c0o&3KTbELNM0~XLbnqmDEsDJc)zgJ#t4~`dLe+ zQQ}Swn|7?w83Vf_N)-XRDw{aLCiLW>XTkyttNN&t*}h7a)i7dwo?(}%PDNio43xYM zpKbLH`u46KpV)l!r|j{6_NQ(8_>bF_O+)iHo93!B))qr{8!)+ZdK_#wD-WQw0iBSy zi+)Yt1DUzH*w`+G=_X-uiA)Ohe_gD1MIcQt~TG6KQ2*-2K=}r;L1*oE*SH`M5j(c{J57j#L zJ@Glg57uGt+*m(jv>7~uCZLRVTCtAh4#35JSR}Pe{~jvJISj-;SfmS6d=s-qvs8YQ z;)Df^5B7!emb_p;wl;fE z7Cd~7vpW<3lJ{A;;F+|Ls&b?Sl?H)R0fm4@(IrJWza{Gf=e{6e&_lL+R3^J9c5s1; zk)Cj9Q9VJkWb~J~0#_ie{h+6%2PR}o6C*|@1A9a3`v2CRK|;6z@vr~S(!*oXAeSNl z_jlPUaH66g2M>~aIwP6fOMn7>+nZM1LHoX$P8D#i^t<#AG$31Bo>?Fdp^V1|UVFk- z%!C%#*to+4o_OMM`{v*IyX@xq{T2vi1T7tL zc01ekhu_YG)`d6R^`>OC8*5vP<8ZcDRbyZd`%sgp3aKOdVN9R=>9lLwmU^yRk=z>PEg74$u!szwfj= zQay7Kc;x+|iGcz9M%FbJzK1{a(~H~ona4kBt3yvF?idGp4>4aCcazwe6*hd%J-` zE?M9qX7w5Sp|Vlz141e#4iPJH=%G}=wd|>k`B6!7$)wjTfwtQ~pOIFB$`#bd5<}%R zZX;|WlH5ZjhsBm^F8h^i@99?gQvwI-Ps2Ecs({UX&Lt|y*_j<4AKTIP6?^GJf62zj zf6CtVE&sV)z4EmU?SIHlr(10szGY5{g4j=H6*0nXhy`J>SEyb@kEj0!RiU|(>Q)*5 z@KzS@*V_jqxKl)9n}wiL)*cIHA>>_!Y$a5e$gA;Q6esmL$*ykO-fCsBM;>m!@#e3! z1n}?Kz32Y9T{&#ErZp2j`ke%O0ZMBmeJ0=SNmyYeHpM2XI!{snWmRHfJ|rR^yxiEhZML&2GZCLT$1F4&Oi*BLK(V!|^t{--!T^#0p#h+eHV(K{xcV;WH8#Ek%8a74%I*BEy)B)&fb9vDE|Do*785LGwy> z<>73X?|jTY`D1^=#`26E9z4W43tCD1sLFTZ?D`%Kk)~qNzm28O@x29%)hWX|km5M) zB@9JXKqc`dhEVg&^GqfBDbdI*syCvHCjmv)TV0r})hx8Tg*ga{#72 z{x*wVog88f+I0Y~Qp}=D7*h}l3M1y7{NTF#|EO58*K`5qtNdUjfuOwlx(usuWk%4X z_Lw>Rhx_3gthgk`j;j9j#j-CC=0yE#p%L?IWW23Dn-n)Bd2jHnSK@J7H>wb4@SkBa zEgRI6g+h#ih*Wwo67wNq{)-9aqtP>L?lK9r1~M(~X_v9iayGGOrtgWn3h%w;?00xPMf zYSNav3KndIO-&U$RW4E_hRcEKiajY=pkOt{!{(Yt2{A?Ri~#zA$%UwJG=#C?b9dqi z60P2ddB)%N2FX12gFt5$7p1^NMhAP{QGTZ>WCjQX8!}KNuAP#ks%By}*>NBt2Z$nw z!Fw)fN$_~HOONjd*f1D~I9dRH*wFoRd;k0Ymc8)I7wpQ_D`@_&b#Z!Zs^s-Xj6llS zf8A8>N%1O7i*1$*RIYxmxjr zE2#wYtmLq=iIlS9ld2GA49@f!crOPa8Y0$ye0X#nl*6C+@gK1#KJ%FU(f`LExA%PI zyY2Msj-7933u$pGUHOV0p$9B!Kcb2ZwWw)t57zF8qpybNkjQI>BfMjq)m6K6^}4V5e=V$h=cYcMf#>)s8l2h)o8pSP)C!>f|PuYO#eEg!s0zC&b z`~Vl!U+DCk&HB)u{Ph>@^zMZD3k)7Eg)N_a27 z{Gw=y=QtaK56dk}pHG6&j*)Vq>PxIWdrsIV6VD7n1$ETA>})sPv)eacX_Z75LfL`> zh35DOAZpkmDS}#52ZO$Awg}%;(mYdApq!N$>`B^2!Wca=4s2B^oK`lVdrwZS%WNmu zYU(I0 z`+pOYX;He-Hw&Q~?kA5bNksAZL5T~LooGkhc6b#dw}h}vq~oQ`*-1e6{Tf0dIH`(h z`gyXRfTbF?(3IpPC2Cc+kDy&pCP@e9bHHA7>ZGf;?e*^ZAA&9vgULbR&Xn86yN_q+ zU#>MoPK3OBGrrq8e^$V~PFhvBg<*Gp$)5RNzF?Q%`Frfqum5-K$|GNIr}HDt<_RQJ zGMq%&hss*}@8~nGs-ZFz)zAVpx)C8ff;?h&1`CT9t2dEyCQfvQGJ#AX7@*v~yqJYWSg?hAWku%tPS^f#(Z#_veZ9<`^OR4tS} zN~&@hV=4|RFQ`N%4U1letv8FlsjdAMy}izWm>g8Y z`CcQ9;l~M7|S;Mq>p1^5yae>H)1g>Bg^vo@Qn=`)J*(*?f8Ze_t>Oh#SLnRw` z7G6!r2y#^|GX^awVoMw>HsP{Dz_|ucSF<%xp%^SnB#6|pcz=_#Aegp-lrl1E&HGqN z;ai|t6%G4xN*A&nl6GJ~yW;q-+)BDHt1=Dk+npu&owFmXZ1shVU#5BjcbM+n%++68xI^x=x2bFhuz49Zw7ak$ z_`nBSg7ku2zH;4sfE=6t&T)UWoG8S1Dee3G-h5!3gB57sC_}s9QE+)$NV~Q*o(_?O z=XwYG(WwyTq6n*VhEba9;r#Z|k*UmnJ%6n$>&%H1)?T5+2deK3&T_@3Rv_Ijd~l1> zqKN|#BS`5zTUAL>7Nr7PKtd3xDqPrj(9p1>x7kxqeb&DJZ#`?j=UcwTe$Vgy7Q6nA zci8>5wO#FM+Nwh2D6hwoEB5cWK^^=)Lb(mpD$X3?c3&y5qk$jB$;O6qo*aCYowwxV zpa1xe+0XsVPuVn0cJ1MZFGrkZEY_Oh4Z7U7$!NHNe@ZvAob1(k^d-PrJw0n1N*>K^u z;t~`0d<&HWSGS`SY6F6j&)YgO_AZR1JY~)$8*>6R(Rae!P}@fyUfIw7%+K0%anFXs z>#$+gIp4Ga=)Xw|J&*unR6X|8#-xBr+qqE%#pQiB=!sb$tn7pLzroqv^C!JkzOuLKkb50n91Yii)3s9rp1A-Vw0^dX< z()=qRt@9P`gW+836jiq>L{q&%jyS`XjYhRiC0e3ZlYKFnMIb6=G0Ng5&g}su=aiN5 zLUmS~*(-%W!oj$ts$Dv0?|gaDXC{ddvWGkYGoJ$pL+jldTTgi9Kw4_@eFC zO{*QX_Z;-prkTTnY1?Lu6R6{T^xOF}a3C!LN>F8O1C+f^6Vz!CVB{6n+LJwh-&wSr zK!>4tIdD9PKYNbaa2t4^ehv@b&m$)dC*#vy(_w zM1N#f0@(tn^`)(CF5a>`Fa4O^df}(+@|XS*d*mzrsGYp$ciQ>k%68ji_o0ltwN*K@ zmG`K$d!2Be+`gX}1=+TkHOORnW9%E2np*bP9T;czO?=)EPzam6#r`V*l@Ay|)~M65 zDn&IfD!e+Cc70Us(ou`6Uj2l<`O*K`UU}kwYVZ4+og7_h+vpPfnO{>H2~MR@-PJ%| zfVf42;gS5BQ5?av533UPK^Q_s!j7mck*(opZ2%ZN1AWae}rVfTo}#+K|1+Y(3+6>%9G!U`XmN^W&mSjRa)5XCXL zZV7G7l6tOrVF=_9Ur|*jKqEj|?cN6nFHqsp`zuY=mrGZU?D*{S_Sir9f47_an5~XZ zyh)3E7yxk<@d_0;d42TH3q=n1X)&196lV^yF{+UIo^o1W;l4Ybt`p)eFzKuL`)% zJ?V)aSv*?{s%MM|Fo5W_Ctg&D#JY`aJs_h=RisKV0QWg_Pbwmn1=hO1xlW zl3G!cm|tSwaCr5G&$%p#QBd|etIA`aJZKD3rO;!~p46K_nnB{?MuycXZ$ZPe-UmYC zmHNYXM3!>S85@d{rlv)Y?3&02k*1m1VND8xnFt|x6g`VUjpP!Mw8bD` zo{T7qUnhN_4p>jv!l`i)S=LlznNdx}(YoB5E2GLZTZx_&Wu5U}IT6VSnw)>sjO1pP zGu$aq)Oui-W~)+9!a%)Lt#%3@s|QRPhQ05_;U7Cfg)*x+>m8X(wR6OiD0dvNsIqGn ziNa|I2smU|&4b%V>?^e8v*P1i^*3(3WIykao2)MYW9+b>u= zS6|I&g!IqyAC10ma;soq;IN!hUZ^HRR#Rcy=Ri@^)XCngYG3y5>vniJf^rDJ$}hdp z$kTA`df2AZo&C(u{IB+@Pkqe3;TwOO{qAr6efA|^^5rc7 zuBdLDpK<^%RVNRyh7$%;9_UOBI-4t$&B?ZJ=W`tF^6?2!%^PpLZol*kzhb}e3qNBw z-+IN4FCE#@@exENdJjS(6@m1{RX0*FkL@Nmn~mLm>t%cX`6ulU{=q+Ek3aD#^edsV z=2O&dD`S@sl$9zFz$vWT>ZB0=GraBhZr$(TNI zALyQ=0+U50E$T}mS{uI2^mkPz_vH0EZPCA=0u?A@{Ax(!jFPkh)z=pE<`l?o z1&ti)ok&Ke9zZSCm!Lw^UlA7~z?4Kq53D3A-s7;cFM0dh?cQzDHmN4(y%qj$_u*5i zwl`sqlU;Bmafu80M>go=yf;HXP1&wqx@6PY39H$jAc(yQ;4v5twJKKF8M8U|=5d#X zJ>7D#i~Kc$<~7$yu|by^9vG|xEzb*zPLP#?NmQ95U`AS2+s9rlYnOg14of(;Sy@*Bop zQ~&-7@yxj$w>|25N9PVgJBaP<0|#6is5VUn=g5T;5DWNqLc2zlEU%cG4~=zuxRF0* z6?j+W#}lcKOcq;(#`n^!7$SzMYCaqH%9_DEs%2C`vl`m42|Y}vu^Z_B0wq2}#c;?y z)ZzB4WD;$B$S^*Oz{J?r?cmt4_NVN#|M*Yadi(L_-;dfFi1kuWjI(zl0hul6Zk*ef zxQ7vIsz|^zeghqUkF>=fwx`H1oN{`*oUU^fN_brI^)H z&n{w!E%V44se}cUF~#3epvaVvkKXf4CRVKFKHV3Cl=rGkOO@RC`FVX^*DSc#i(K(G~3PzM6d%$D{VS+OxQX=%LK3mWjKyqHR>CHLeF zJYvufVr3=-i%F_nKyQb6K}($J3i^o9EBxBI9@=_&z{av-Rq*Z#D``(*ZEy-qVe@Do zREzZ*lql^PCv6^7dHmjHs;#BoY;8i$M%*haLv+Nw?+HM*P}|*`M#{q= z1Ei_e<(#Nq%%SpU;uE?(VskDyp7DSn6Cdp|>Oe&{LRSm;ubi0e?|;^Ltn3ryb^1mg zhJ$VpJb7KU;O@)6;yo=W|7m;ni(kM{RnqZH_dao;B6_XXLh!hsYSG-IfjuL9wt=!8 zs6@>oJ*RX>G(w~AeIobI?%7v;<=5Cd-}zoUySM>i1SVuFAvUC9OobIluq1+7IGP$A zLp_Tq5xKzCj!#BNm*2egRs(WHiF8!Ok=4SgN)lMXGn7@iif5D`IQ-eqb2DaV=l5Hs z=hTjmueIdvYwf+i`Ah9ElHWS3fRqpAKk0WmFGOBq+|c$ELuy* zFYH}k_GR|<-|*Y)-o10I33|)gJ)!!HEc31$i)>9H4ayzjs#S~}nezR4@9s@|=8I3- z?VC5+GrLSRDv8a6v1N1exv@INiUHqy$36ph$^-WSpDEAfJPmeq^&xwAyVfY#XQ0%j zS4u*R2KVb#qgL(mb%`$kypCA8u*OUUD$bMH*=w)9U>Bzi?Oty{*P>sE%JdQ(@vM+8 zLbPv3`%?G7kj|6$9es~Vp_NIX4XwUKb~KKkC_7lL~P>l-CBqH|SMY*zP_SRIOPmsN?IY*FqC3ao}o7qKBysMUqC zS?14RPiI^DjV7Za;L-9sif*VXy0U1v=G-|ZyHK=i72Fc`!7GVgwJD^YVAh~-=qd%j zxIeGfYfhXA4W8zm9UL9lH~o%pZdLUWwr!fX_^($f)9M!06}?AnJdoX=jB^i1_U5!b zzFKXT{W_k(MqN3+47>58|HF?o8^OLR3}emH0?>Jq?*7wz65+RkQDXhMf>9Ec+r55A zj#HSlXSr@1*j5f)&waw~zxK(NC%o8_+{um)j}YYV zG^b{T*+A_)-{0qAfjhNqd_=i-E*TV|!ujQbb8B^gj^3LR`k-$M-Ihz5TcT z|82hd+w5XIN5wL`v3Fa&t)O(Gw&XoU4*t#~D<4J>VCD0jDtn6SL{QLw2jEa8C3^6L zqfq_TYEScx15FP|nU->ygC0XZkR6-h``Ifua;{LNN}*{w7ASX8(nI`*!LE~h!i?Nz zT)E9SZ@FK4zxCy|_Rfac+4V=(_W57>Z_RG}Y^&_GBr$u{e`pm)zm5&>5gD3hfr-9I zo4D%x9ZzGBRJT{tEY?~;t$Ouq4T@>_@#w?W0CnVEWl0JUf8VDql6?3wk{~LH6YUTZ zB360WixX5ovOkvZjSu{M=`)%ME=j4GJ1lyNBi0Q|9OpIYd#Y%ueFxX(eXYjNbDvJ3 zCna}ADsIdz!e{AyLP$au-l_M3mMqR*k>sa<_M5bPFLSX)ocZe1TTayc1T3sSgpn*J3HIi>HP~j zA*UW>CY%1-PJ$vr?FWL()ywJYCZ2{CdDq}~@!4E49 zs`W}@l+yF0;3w&Nw2v^b){XFmQ7y6}`CP4%-D%0q_MB&ESy=8dAb<9j^-8Raa2H`o zLd)8JSM4mhqTaZw=p9R)f}x(A%-)HPEEPSwB2}Gs;og8+HM@#Nn+dL~2A;Pwa&~cM ztV(TVE6kRvuWXc`2?X*tdEQI|MUBZk992t3$?v|vzC1Yab4V1vj})j?iSUvjanCY% z|4=nUehhfo*lWrDl$(t|16Q^1oBl zw%cF|+^_<4VU)SfcKPHo(yLj#_>}MPo+a);Kx|-wf#9^_9C8}`0fURx9bSISH=83M zlpur7F=-`*)olzXHL(m<#-0n>PXbF37?2vy1oKFsPxKLL$hn{0`LgwXg7_W3UeMW2 zDD4e9GAoD@g-BF#R&m_M`d&Ez4Vaax+LK>XaEmWC8|d0ZU)MlXfIpSPOUG9A@Uwh& z>J+g<+Lpk`5ZIk*&jsyL{Q~ikDP|;b&ywD%e%#`7%*M7K4`e5efl!W~o7tk0Q--^I zL%07^1YDu}PvN z6f(MJr0!Jov-yx|Qea(1T&)9MQQ7&LoY{QdK&P`;K&3VWj}1sz9op)kUHdrO+P7D^ zfbhwzY9<;J@ElJ-$z*>c*9HA%64}vWuq_~33F@Y=WfjdBQqcfrIHM@&tI-FD3UB+_ z>BYlVc8S3A92J5Ci_tJ(SD?>m2LJ+gp)iQ10UVf^3_I5&$6uq;puBuwm)~Re}S=cuD&ygKUw&%L6!buA^K1yrJp+JALn3CC`O=PyiZa> z6)JpD99gsxjN^Fn67M}ATw=lC%Cy&+31v%?9Na=x@HR}DRsNJcc8)-+B~DEED;FN3jwWAqDT~{C`+&8nBvVxHQ(kQ zkTU_|L534iLoiioWFU;(%e~Qx+@zVM-KstX6!?ezM3$Q(2Zhmyg2z0kBIgoSKt@=F zQ?WJt(r4M2IJa04prLzGyCzzOuPGAX9q$3b{syS3JCU5{B}o;+OIga@A^~63SO+T* zjh!KUpo8OUqDof3$5a$tn^B0PlDcFI6*LW7B@J=NW72!9Z53KWh`^DqtVGcpgDVhH z|BO=_d+)PI94eeOY|uZjwEbNYhisy6qpU3W;avzMDY^4xw1_qqRFbk<4t>oQg8)M^ zx5V>9)nqhgRB=&!p*R(G*z0=4{ne%t6j!wEM8(!bCX$o6sHO zVCR|7LxDzdH849R%5H0-tf0FNxX&`X9lWW^^04el*`XQ9ugS@UJt9Z|dS(f#7oA_& zVfam7d3V0x)nDx0L+xiJ_B|^2iPQsB+Z_wf8w+MY7FdF32_;jPRDO%qd`Hkz&_Hyy z)6g9hu0+a@>=WBzh6$yp=`&zKyay(L4ln`+Insn+kid;WX4id)SAvTJR{Dy;+J4?k z53KEhFUr*iMY_r%auya%>A4b4`iiO^+9c3|y%$WTJ;(-l<-LvJ22GU^Px8Im;DD8e zu;MA!X-QH9E=A%6Aq*tFN4BUI@|@=on=$qRaQOCw_lD9Ud4{$$Qq$HrQX6&yq0FRS z45}0`s5Q}QjRT}>ntO7|1x*&StC*O{y3DmxgmI?gRMenCrydAJ-$;_k1nA8ef_uIM z%XLu2j6q#A%@@_poAJD6S&OWB=Iz^q)X#^z!)goX|V%&w|Nt?N!zto`5C6xl+LO(E%&On_JF% z@xa&vZSOm6&wUm2V|*UZ*v#ftX~Y$KplSrQufnQQQDP02MOkR$L9vSS5i=d}Ie9Pf z=Ancc4h%cSP|jtOW`g}l~=oD)?_rT3uVa>X$_eCWZ5a) ze&@dZ6~he@Uf2P|nzdgCojvu2Dwzv5%96A(o}y{wxnd$RTO?})Wmgt-T({rs!P!V9 zIVwpJ*b@LQ-4~dp{oo$oP$emntBBk7d_t(Pa!%EVJxQ8xBzJnx?ymyS=Dk@LGcyYS zh_g>uWWCh=M96HBMc<1{O`%Nhznc3R&Dg`cZjTU))TqEsigH<p8 zx1EeaJ5f+rk|VUM80p|i=h>ghu-P2Gj~j550T{IKI~ipzaguSQ-0p$(c?H^#U2zH0 zuB6BDg0*AnQhJNoK(YDje8@$@+eyvNjRMfGnMsII?0{7zf4?I>#9nGF%F-t#Q+3%e zR`w`wk$u+15Q`5F4!5HV zH|o5ojAqVxKH|Q}6i{Hb&=A~ELX{}2o1BD1L(jID^%7|u8lWSm+Pc!QH;IxaA;H?v zRmyHjC1JCuCPed|$wB6R0Fs^sZWVMyB`T^I267e^s^!|EKkL*wl3pp@+?8SQUTWC2 zLB@$e5KHPpk!`<3tbjP=n9VxXvLD=TcwwEj21x->sNyL3PqS7_&ohN8<%$j;342u4 zxTb?qt{X5I)#qpP>)S z8}cRP&OlGJu*wu;;7Cb5QyM%MoN=R@6}VyjViptxX?U)a5<4DTR=bzI%X0_-asNjZDfV3Ko2a-j zxMlvIUl63#|QBVdmpR@um6Bx zR9Zl}u#-&U325|y!fkBcSxmq0=U+buoR~ChxDI-bs_?@%%8qnfRgF~6tn1%cRCW>Y z3}kL_{#EJzt@a(WGRii`-++yx)!@=LQVWbpQJ--A+!xR7`_KKc)B?F-fMegV>_5}NJ zlSFQkss^wp#^gNMB|X{9_w=;bpT-$dvJN?B8 zeCY(X-(w{$$)1BQjPFIIB;pA5Eq1$@MO9_6oQ)Fdxq&VUYw;B@sP{$>Ngc?A*DL7J zSV?5RAN>VEQ9lzHePY_%UWH0bn5jscY>D|~i$aM{@ogVeuQQv(oLRmiVF){}_(jQ1 z%qd+cWVYBy!~_GYW$JY#txPI{R`)(f)ua^k)TR2e-%68oMzFr}gH^V^^h#aYv#YZO zW!^f2E77L*-p!^b&N5+a&(rXr^K#P!tp4Om&n50~buCerM zOcsuF?7=K55{U^L6nIPxxgF)mL{&>THm*m`RN|;Q=+Owqgn>=mq+o?)_mbeSS0>A` znbu^~#+CE%-*;3D>hAGE09HpNC{NlV&rB=gV`+fCA4<@3+uq1r*qz=fdZi6-Y!v1_aB5QuXxl zLP*j9pRo)dCY;YozCz;HL@f}lh!l)H!`B^i7622~Cf*H&Nh^aIsChBzazoq%ohf|Y0&pfwkr(+C6>gV4aV_%qC%udf`=YJU?qdLVX7GB zpjhy|Fkh+$h{XgXDke|@)cfHJW{j#_*e{q7$6?q#At(zVm-a)bnslzJSy06Btfdx; zOBhtyXW$ms6#k~)lPyUED=qq%x=_k3gpgo6me1_A#72ESpL^Ki-d~bT_niTP1W78u ztc7Bd<=|->;7eeXg0{LhCL&Q%8A_@}Kw*l&#IR2SObW_-upt;H1mi+>Ps5bWBFNzW zuK~~rAy)R^_Z^>m1X_wGf(C1m>>2lS)_G3hHB>s39enH6}-!yjuh{2TrEtchz)AA z3Y5BM+v4XsPqHVBQ?gt~(thFj!yVPs6ND-WZGz=w+Qe+BF4&O6@5J|HzXjUpVaUGd zxWbn6n(-Tz`?Ie`8hb*|=?N16uBb9bZb7Nfdl9a;G7;9C!_lY z)0PhRegjx#VB3DGTjLD}tb?pb^PJkdEDc!2qKi_rt+!IFl5Au8!Sc8ABOu+hu?p3jZa z?P>3jt$Gs2fJ#BD#eN$}W$6iW6>7=81}4d2ct)dSu=YIUliO#aau@W{3p3F~VRRA$ zZzc?Mh8S#_m}Hn6ciQjyb2@^G6VekTBp0B|W}vhebOVr$ zUK=YElW}fEktIy}3|5L#(6nbE+DguO0;Ix6bybn;Qoi)^o|HoWl&dLKG?K3 zO+6*xz{?&aIe0aL(*evnGgK0T-$f(B>neOX&W}PbQQpG_13FuV+Jf~q|aQ0di2nRb(X*ZoNl&dO*>^Td% z<&re*MDJiY%z$a)p2?Camvdt!Pqao0g-#E^{C(YyZ*n=X_1YkjCRgeR(kBnm!lCe5FDTs~$ za>6|W<%TU@QA|Qrc&dSMz8LAxqs5#j09jI*tKMUqIZ^@7M&Osp9ukGsAEAV`fWXO4>Wds{tA9Wgoz5L z3T|;99O@bU88!MDg24di!d}MgJzE|IxDCn_e8M%P*bf`1tFh;gfuz$O{q-*4U4!PI zSTPn67%>g$pXxQU$(BB-1({~h&$uE0(m~Y@i+dd?M;^b+b2dwGr^=p@O%OpclD{fI zBr~Rf^gXVha`*%XSF$y=KO-U0g&=a zvY$u4hPDS;mB_M#rfLzXZ3MfDdLRw445)Njen6rfsmD+Z$JyVvWdfQ4=u;3}IX5av zDUg7v$)>6LZUGiq_nR#82N+*eX)^TH4?*H699K)*r7Cr=u(4``$qi@^5u2kX#gxHN zBCRq<93WLUg5->EqvvXWP+0T!u@8HBj%f#WSiF;5u#N z3OPvX43?$Rj$M(NUgJz#(zE1$hxKOjK4xE94>;464&qi@v}WmQ61SRm$0>UUi8|L=1w2GpWlx;PC0ln64XhC@ko2 zawj$Sf7ejU33PmjEcaX+O~Gy+g|e9~^fuApfItlj#Ix2atFdiw)0;BZNRANTO)6FL zx)&62e^V=iu2D%Fm2lFxFbl5AyMj_7-gqQqpyWid%6}7K7%dv=BV#XR`OGNwQ@cM< z%n?d>9Gt4WTU3T*JBubf3)Dx?6rYzTIf>GZ8=tjQ&H|B8qaY~)Lf$MX7$FtU_K<=U zif*CAS6K}t%Dns@DRWx|)v?aDRCr9zrm|v%qCS#+p=x_g;_>;*-mO4Em^4=eGJ*53 z*|hFeNg|O6?}K1vFaRR#jLQ8-J7U@|+@L9D zr`5P-1wR%&dJIBSPk4d?O#8&@i2j|KRGOYY*CL4qx5q;0>lskJg3yk}nz14!q%ko; zdGKro)rIzimC3cL>pMN_wAd@`b5V(t2CZuE(lodTLHlAgoIMiJn+N6Cy=Q7244Gv=c+Etb`P^!!xbwWTT0yX)2hL)t zEWLG;=w!TJ2FI%<#-QsFhA-b`OgMUVsV?U!sfQ`m{-i9W=yTx=LVgw5f_^$Is#7!_ z`rx`>sf&s~!L6b9r6!^Aql$lfNnkOHs=xIfu)(^Yk7Op)(Rwl)*F`XaHna-(;ohoR z&)WSYZBqw$``Ke4pMn|GnIyT#adMhCsE`>Ik0V z>@CfFeQ!r)Ae0VyK6&Po7%xkuGm`7Qv)cDF*)(~t+7QWfus68((qdl%INV<&-D~u) z(!Uh#j9_Xkudlr~m^KlLvc`mgfd3$Xb>9vKlY%^hUVRpLgZs%5Tf}~deX4z;_K$^9 zOXd>eRj7XFJW)bx(c%_akKpM|&@m^E>Qc)R}1(HK!f}w`2nGNd{ zU`TL|WpB7s=WoYmN~YOGd$Qo78!>PUr^WZ;154eg5cTm4{=hn=BrY$iPSGH0sh9Lg zg}Ja$4~vRSZyL2_^U_mjv-aMh$^=R4!(ri~##vBRc=c2u*)4~*Q*P=58;>)O*!#tU zan_A7jYcGwlQy3=No))yf<1s!5WwVTZM|$8h+b^YG>JM;bp36eXH_yxWq;!#+2>LR z50HjyAfn;FB@{D~iWG@l3@fv}1VPE06*YVARcOL_^afyK>AiMZ!K#18@(dFWBWQIg z^?U9WH_a!oy0^D`z%zlO)@3Stq8$5B4ogOe_ojZ36n>Zc8^iwgq=@XX_b-O_})CU8XWje#o7@l09{4Y zov_}~H==#JP^-8vYCPA}cRit%J}YJ4iN?Q&y=TUK2xPm64%t5&~0vL0S3 zweQQ6BB-(M=(BHmgp-)>U`oXf!O*Gm@0>ZN=6}T+$0!VKRJwMfJv);GJ zCfkEfu?IAM5RWZvT(`5yI=w0ULk#rh-WHl|G{!i4@{OiBeBIWX=y8!`S_H>lW!wTEwhW_yA2-d;gvfrkzZkf0`-=xp$rs?e731;etBBy_}>C-+31 z^in-DoiChp&2d3MU*asPO5#3_e8IhY(wWzw*xV^Xkre#KIK?cgl|6au@3VK_gF?u6 zm#r~XGzn59i+!j24zY%dN`IF;yVf1Q#FLUD5!6AR!NnB zB<^Y5aV`k-Oj0!C%CNxGB|Sua7;J*37k7uAx*uC>B@b}tF z@M1&teba;0YD*Ko`0d@vWg5>&(Bc}fxq~hj9Pg~aB&#Z@Yp;9)9kEUk>I7;VZ_CX( zsHcn7nw3RwgN2h9M>}J#mFPL57_e|4Do~{g$^L!jpbd0rRk?pi=v;bbEH+rxU4%0da-WoJsj?^Q*&PB~ zU1LA)txq7e7DlokV}7Kl0wsEai~+&&KCw?~PvBT-UBHCp87bjZ|5P|$R^NtxKl}`X zs#AY`iXI)FX$FCDxOA>74Jc<%gxXN7W$wwY#q+YD&yYq@MLV@Fb?W~RvaG?)G%LNv z#vZ1QiY)=k5?IXoOxc8*tvC1Tzwy7kR|Y7-Tek>~qf!-TO8c1mbYS3G>w`x;E&XBP zXX3sBW$Qt+05S#}PR9v^-1>7NFjo5+>^97nW^$90j$|&yVCR1S)s`e7?j?Yc)B}@6 z1uZJc0q6y)sq<4A9PlzX763%}nA97k6-em0)##s0)81aESq+uT2=SxJf*ELWu5h`f zKhp&an{^M%Sv3XgJ!pv_+ZOf3#rK4!+OQYI)c>8Wx8aiPNRy8F$}nRE8< z>L>5abW5ttxXz|yX5gWjdQUA?e%$cuj)MUP*y~lwcIef(20DQ=y+p6KaTIEHjtw2C zz88lah3-`LF%4Z!j<;m?X6+sr6KW7KpqCjN?l%HlbS5eD5EZdGj1;!p;w8Yv*Cth4 z8FrYG?Dwl#bYW=iPbdbG8kQE82lN*l!E#i)B{I3)YgS>b@jRi&V*~+Z=n1?^53ME^%xnF+vdU>Ac4=mOZ-qS$@uR zN^4Br^govaZpR0~j)x0#`<#9K{o~M0VhKTC)nnC==#aH5WY>>!mbQ)7?{fb8`uOqR zeusxf&gJ=S(&%)_bs$y$(9x55ux8@S;3<0FQkbT6ypNEzLE@pYWuhrM!eV79&fa7m z{^G^!Xh>xuFw;gIMPO%df^a|NSBSSQq@6Ne;;ghH9k!+!7{Hg&5$P@@1Yk4VHHdAN zv?$)EzUADv0q_-}(kuolH)jS6(K8nHveSozaoQ}>*tLL~4Q+#DI2%Xc-N=ATQc?DU}(Q< zwU9*w|0VUk4gp2l$e{$Wr<%p`fpLCD3<{%ptK-q86AgCb)o2vEUdWoOix zPMOw#A)BIH<>4 z`=W%3Mlua4?Js0C>PKVtSagModcsL>)f=L#@tpgPsSyVE_5@X;k`RP-q^Zvz08kVi z=Fd!#)?f_*WGn2I-Uk4H<)DURYS<0~RGlj6$SV53vjW%6a}j?U?^CTvcgya*Q;80C zpmPCCisHGSU8>S$s6GsI<tNAmD++XXZ!425SJ~$3C|O?X$F&?>;%xTr$bX zG`LWJgTIq4Ks*=Gm*nJ{sj&EB;dZj&Prp;}?y>grq{&Pql#)o=HqBMvl8F?$VaRX7 zp=AeC1>&mCC{LRLnT=TOOxD250PR8`YD^RLTs6aa=X%%Q-ii7$ob@cT-#9J~%x0EO zx;zE&677rU+<2$H*LgKPL|Z@i#^?r>)GN4Pj5G_q)f%5%3j>XDAggut`axNl@E$;j zx7@%%3g`*hEeb;R0?)Hshwhb=IYA8P-(4932D(~jFi12szU0G$??hV_`V0k9=_vS# z;7kX41S0x6;VjIK%+%?u^D~`49~a|w@6Zh~cC_2x8;aa!8i)I4GbRS>id^sAd(Crj#kxfNV=3+wPo=^s+bV@`#RT?$IFKIw;IN@pS9Ot;lRlj5osK9bp!(>Q)*LvVy%{4WrFSHj~qT2mo;bJay0bo zru{i>{LB58!V}d#drwW7x*?}lJ=aHf$jV47rqj_y^S?@DJ!Y_7@P6OSsB?p-O@ zSl)ygm#F(%1Zu$)*b_~jNY~Kt?MaL=n4{SO^A$4D_;GS9Up?mIkM~`wIf?IY|NVDy zg46%9;ZjE#iw55@55O?kd^JdXuWElQP_VbSF0&1tDo250k08Jp0<{{nD+*|eJWvT4 z1=B7~DK|PyeEx2?x@R>k4zZ=dg8;2I9_r~*!n9jZSAm$f;Tv%H3lE)~-1CAi7UWg8 zmAfN8YtLoq_USqVW!jW|TO%Z9FEt*g+g`?Gw>z#g*kEjDVD1Kf$-=gYoX|MltQD&L zW8tPQVMUmxm=i`p3W6C$c9PL-liG*LKDwfqk}>h8dOL+hB_Tu_q;!%o&pl_Y04B$q)5X0I1D2d z36)UNXady1FhkZK<46nS#5yQ8l=1X-Xy8;W$`Ao#8SyP!AE34F+Mw&mX4K;pbdW($ zL%kg`D~d8DfsO_W%W)coe}CUY6oX^PEo*=Z0sH{pI}iY-Xp1`RY`sk3ee z2G0)}rc_o#x@>>_(KVF?B6?rh(J9q*w~kCDeoD0*PFbJi?i~u zde(t#>J#-A?xgGn>JAa;61~Q;?=@nAHY_Kr?bQSTS?X;Q5#$+-tX97Ra`xweevGxk zM%7)c<3*;;*vP>Zq}iXji}m+2^9U;Fk|aQVbw|uI_yvaoJbpUX3KE))P8Wb%+P49c@v2Vd7kn*hww6tPnE zsxedq|0?IIhSxF^uTGH)nB@^wcisie^m-l*lT4ro7|GdnSJ|7+UOne?<$NhCq;9Zm zvM_g=y3Y;_xA5=vt@E?XFNn?T2#(bCPIkRycD-ytR)$@5m$90knMpgT7S4(Qx zV4VdrIt~n((2YerF*)(5M@<)#Mcd)TUyzZN2X-nMlw+V9tMz@NvBUATmSxw-g{b*+ z(F*EG*&aHqQ>U!N0BTU#)5cK%j!^>{I0MOh^?9skf=943veR68$rR%J~;{6d5lzfwQKpQ@-Kk1#}4KuAWqDe3pj4{8F?fH~_t+TyLfD)d^}Vo)1$; z4b3dc`!^`fU`MDf#$}hO8q{emSSL-aM1z!uz2TSh>st{Q!2gr-vz7C&bpX{Zu5_t9 zQci(4DN83U2uiO0`+8CkmZ5<8=0Wez7NBzM2RnVC^PAfoiPF2nAI9Z8B4H`IlvO7k zqXP-b%7-Zm>YOa@)sgI9aG-X((HpIYlSQQ)ICR?Im}bsA3>UH(t2)B`sEb$gUdo7} zi%;&N{`{vIJ9-s}?8^+Q(-PP+s@nZAtYNE;a`9wTm>0#4H2Z`bXdtXW&5n|+TNe{N z(;CRPRMfxs;=y5Tdrg1PAYgE0$sZ?#V`!y-1@>am*A!(eL{DK#90u;7a-9x~fKi4` z_QK&<@>N9b*?$Sr6qaEg7#x^4?9KJlx>&KIyI%xEXg6K6JxV#efA7bhd-HuxkN=HG zW3BEs4Gi^eg;}R!ei*Uc0jSn_DN2WV5hWLUeo9543I2?Fpt8=a_gbR3ZqW5)ktL0u zz`kkD73r7tUU$pJM5bcCPh+}=2;Ypd3B**Vq5{Ft7YK5&2(}a-0|J=?1nR!PfH;d> zG1!pf4wm-yW6C%@a3cEfhWlxgB0F%Bf0ed|c-Rx?fUfYF5kn`<~7Nw7! z$_PI34r@Tm9&A|+D~uq1JJ)hTsWaNEfiA@vma+r5-%i+)Qw7F^TKD5DgMpW4$=kZI zZq$_gEd7xeY(X%Cumea%P0X9%NkCTM4_TIsn;`J}J#Wr;YX>s=ysAT}-UAS{&US`o zqu~eq(HnZKnu(xOCqDnTZ@c|1Tf2D+hoWjYGr-Q41r>m_s>4K_tZP0jL}ht zY5xA)o1+ZESTl8Z@MYOF@v2PJ4chM3o6C_61O}tMTxc&ox^HN3pnxs-0!=YzMyY~% z(N1P{)Y}36(&cKXLVMEL1Ui?}wd>h>FxlV>nZGsXRgQ9)`6+{_8+A2(X+6)o(E8I% zL9I>gTI-47#HFE>)@9JxLc6zAcAF zV?DM#fA;YD3at7U9hn$By%=(+w(w@%;#_uR1@FiNNZ>QD(=PW-^wi6}@0)N@&{piP zUmrhy{k@~ac5nwxRHFGsz8xt$5U5U%bEWQpH zUmiun1q3BTZ+ssJ-6&Y^uj{bz4i_RMj67h_pFr3E%##9zEX7sIdEIKud7NvoR;Hp_ z+^e9H@n9fAH5>B$;gmF3UgGGlHeUF%`hrwn8)oF3`wS=8@RC(4MrsiST9I=p4e@w; ze;A=aq)ARFqlW=1351`{%mzw~;%g7H>qb_e-%zUNJza7~2MMo7`cs&VW+U+B<sLIg)3AX$GI!Aj%-;sFUjP+xy-5Xlm%1P?Hm#+DkP%t z5AMMfp4&-R$#uw(VKA!O-1~Iaj0A!HD%sG;0vDCnRpY2k*3(2+>!GzR<7ShYhIUBK z)Hx$-+G{X*0bXC|kR}-tJyL+r_zoX5a5y&=*B9uKL3Yq!lXU6*j77PN)+L5_WtLNW z*xXUZ6MhSk_ETeQ_2ClB>4H|0i8#5q?MsC6&SwoYAhZtRWsLi9qeH9=7mHN(Vz zXWiHYCNOj`{HV!uG7A{tMD5hb^8|s`tcyCa-X}?8r5@SA7}d~upOu=hC}XYc7$ccL z2GqkkVV|Scj4g`}NVSJ~+B0@K^h@VF*~NYsDLKirntHA?gDG_jVL+Bh1H?(Ei_aF4 zZVEC&XdR7BQjiERL{n31XvBUP^yA%;KRm@cI3gsQO*CVOCY7thQz&R1uu zfR*#TIEJEhWYU4A9QZ{uLT9XpGAm24_Z<6M?T$|>z7Z_NgP%)>+D7ITW;kG zd(<|-#vT~Y;w7L9gAV{*cgot)3C>3}8%!}X)RK3AbWf8GA+3_nA7|IhI)ijDSmJnJ z_qIxB*~hD%wmv6ssvYlBl2ziDHJ#3km;&wH6`Pp(X=|}7Rc0c#RUe}~A z(aQ84ZY(;QsWIM*?pfAU^>SBO1L<(eWv%!B+3qoiFqOOfROmgH4$s7^+zy=(be&m_P|p z#vgOorFD70fq6pBmzA=uKQhcxP!tlUvMj+@c812jyMlQC-#9gs+Dr*=3k5EgQvU7m z$jF$RY9^3wH0$=#X$L?TRfR1n`#>*t(s?3^r54>RDh~~4G;e89eaFmYGG4;%j9@=^ z6!hxG7R$_4G^?}1PNev+EGjphcu`Vr%z^lhXrp!NGBxTb$5z9;Qp%LT+4oF}C!%07 zvQCFbimrZ75x0R<>S#m_j(;k8stk@1tY4-mwW2hm1fL~8p8pu-==z=%^XVL)9QwZn z2vRbJrV6@Tcx5UsQYf#$&mtludYyhO+wsL5rD$USP@~x&Uxp#CG!jy-noMtR$1^3~ zU$Z9e^|arfI}$Pg#wG%c+KqCCaaBhu*>BwAH#(S_=|I51rY$vp!_B&-fBpBvke$-~ zz51rN1LBx1@tV4qGySTttU>bWuo%{yq`0bcS}SolmqGeari`=p-z`}}>!3IK_6<)FqPqdtvTrsib-&M#Q5 z4WNKihUjsMn#*-pHp;)ap&AX7#KJ%|moMTb!q4?U>*?V-4MOhjloiOl}+-9*}SEdI;%n zfady?g=~^v>}Dn#8szxz8G4kf)*X8f*WbiZ*{yu&`cStDa6T$3TeNWnMvSxmI1txb z56SUhuz(R>MLz+4c2E(uaeZN~n(&4HzJK8JLm*oE=5Ao;qN*A*h&~q(G)!30ktP0o z2M2iPdt<^h5E%gO*STXI3;+!ogVm2FI_(e&oC_w$5u`QREZJ7rFz+>wy@Y*#l4@&k zR#NoR_qO%HK!R)ymK!5Ob$;*IA9a$`0Us37Q#~OIC0UTZm}4@w%a=YG=Yzo$DjsGPb|8 z0(A>&l4i+9Ck-9tL}fJ_M*#X;0dfWP(vG^)#zk^suGi_yFn?q!w0u++iZ8FXuB z=%CUyzO-m6;(XQw9#8p(&U-`sr+rxuV0WBCNFVBRw1)buH{x#Xk(pYGPaUNKR!k^t zOtmIJGy#|$0JsWcT1+rZB_cTyJ=*+ez10*!?O*+SjVz6DkG?6VO2JC+{oVg@y?^}r zJ6dc?anz|JMf}prPeM!ZWxNp1=qKxkupxFBQf5mk)qgh?PYP~zWOH6RXcX-*#(1WT z3BB@?gNZscXSZ7$A_@uJeMEVkJ1b?q-{JnCQP8_C8idtRvoLi6gTvt(%I7(PyoL25 z9ip=U@ct|E5SrD5wYkeEWjR*ZZ$-ciLSz&g*D$S7lBv22S85qqI1RV!^&OmD?99y~ zW^Kte&u+(&bu=4*@1cHjFiIty)Qq_pIz8~e5iO}z@ICRnI&-d%O0Sfwt1ibG)o0U# z0A*{nqeSqT(TW|$&D&7a+SkA4f-<6jjEbB!MlX~#sr@58fl;D~UJv~QFPWyuj)^nR z3kmSD$iv0ww2xNr{xClsQYQth>YMf@|2Xcl04OLXEkn%4p;5*6Z!g^&v%XSAZ;*1} zSu60N$Q`dunRo)SHh9eLP0=QlXE~s4M7SpmvH+ZW|8BQ$J(Sx-3WIm4cVg~xWl@_= zPnm(Ej-Q=7jlB{Gf0QvTpI)^l3x*geeMPCjZ+gHe{4;$YX;Z zI#6oK4>)Qs*_%F8KlB+LiEjX|;$7%A@$^a8+*H#=(8Im+_%Lh5uM7wGM_tn#*#q5A zQBef$O8l8!@NPmgU;x>$uS3^~?qa+*N&F_ANj*sCu71|3!)Pc`pEgcSIfMr4MGarI z`J?Vr-40$eb^J9#Zq}xX+VOCvbl$ErSf=irD#k7_vDf{W1`E+mPH_HFV+b7jI&t4L zn&O=I2NmyhdQ_Vt=a#^?_Ci@4Gvj<9wB~;Hx*Ozn*6Cr{=jz<=2dQpf)|sIHL*Ed9 zm|17(T=hfW|9! zH3lnqAMje7m1C1>aXa=&4Tc%(DkdO6>W*>aE4@aq+i)zd+A0AM-{raQ#Ueb2u+!cl4!fJ2W)l#m|1Tvs0#bkW%$@ zJ~G}9*ZzCkWN-a73T*aYZ|=!^;k z)H-vbICKzR?ZSLh@2I&#-d$nO%$&bC;LN0Tb2Hf_W1Xq$Iv+OpTD0Dac6s&t?q?MJ zIMlsSKaYK@HN6DU?6^;36HC?{iCety1KBNRFR``<#9l#wq@`}0mAKQasRuof^0?(& z)NuyJ%#M2)hcjl@8MeNw2~4zTAFuZxzy1z~;-G;zUKs**PzZSN7K;L=^c@$Ha}Xyr z3xX~bM&T&FrVjS=P}pcut)h23q6*k>QF**CTVIZnBN$N#DVz!^KXqYgz*(CGj%te5 zBY>Dku^<(WhFo@=*d6tJkolam{#oy3qwok&%*c<%y5Uhv8LfGz9H*j`k*iRT?F}oU zwrh^quARmj#hP2G{p3C2)(9f?r)hjuw2R1F(T9LW3|;4v5ltWC6WR}@ zj1i=$eeWzy>O)M$kQtLbR9zB$L)39OXTX?#pZ5gLw~z6z$oP)G_v>GfX9BBxqsLFdAqu4iz!)IA5CpD@zk z(O^#WD!o_I;YOD!8F$JL|J_E+)k$o^j7I^&4vp`+7Bbz?n?u{Q$AD|Bmfv~ zTL28Mrc(--^!2n8T+3;MyN+&8%6?3iSlzuu|I!H*sLy3;t?aTZMqssMU|==qsCpB)@H zvqrS>XmGG-BSdvIzF$m+ia;WnO;kJS+WU487)avJ;EU0AD-;DbovY0|@!n)R|IwRR zx8c+YlpWoB*vYKDaAy9TG$);T9d1#_pG~cRQpE%-V4WWxqQErT}&F zIo!uE>v>2%c68Qr_1@z9Rt}Av0@+SAKsYmh8f@>>t0ztxSrc{@ZVAk`mAJz>_3X?L}(2NtKE_EA8v6l7rDSF=& zkO+Q0{*;r1=V6c+HSFsP3COr~$|qiG$x!0JLES-JL|rM5V=?ch7LrwLcg+h&Q90by z8D_Dz33QjY1`s`LsxR+4z>B`dD^mr)PrEKgwF+SW!JoUB5;p6|X5b<#G7|)t>OSHu zhSjhsq?(a^s$#Y{GfG+ClOLD6Hpq<*8?rbS;z&A;47>3Ztqkww1YoMA0+@f2(go$7 zl>tM>0udzMh4`Y0#=9yTwFRVS{Ep}_!*fk` z33WCyi^4OJ?EAO}TUNeI%{o`4PPdg~%BUMtsZTB4w`YmI(Au!_xI>tRX?Y1mSz6iLL;!w8rS|H{vkJ zlgfxkE1JeStP%u%uI_%(IGunMz`ueOzF2<%Ia4cg4dcX_3#ij*Bs%FR_y#$-2!`&_ z(Fs|BL&`lM00ebvN0eD`e^D=}i(9gQH`qO})ev=0Z~(F|I>+3ra?n;&#zga*;1B7+ zP6y@tT=)IN1a#4v4Eo`|dd*OGpirz(>vGURwF_pVjY1B(u91!)jQdx;UnnS1SAq=Zn4w0m^cZOzDIn%L`!o#= zoh%*BVgiP1jHDqlj744iJMK4t4ymIp6LjK&KO1&92m4Duc?T|Qs-Z~^--<;rG}}cm z!@3O0kzm&qkB-FGTsi-uoGhCR=YGGB&e~0u63-IIF6X4S>auR#-JoOd$DfqhlU8gM zXxrHZfI9_0;y7Ps-i_HF%8#+jm>+=^wLQo4A-|YMg2-*@E(KBabG3+5m*kvLecq87 zVs=M+fyOs?$wRnYQdI0{=9gUqm;iz}6Xs&)u7rLvc0+`Wh|ZVXr+4c*4>B^!mX;dh zFyr(QIU}vP@Q?ztPQ&Mr2ikIE>6{rQ%4O~Svt<-*@4vXqly?SX@6=#%+4yLk>>Pq? z#~jGMi_UiCa=LVNOn_PP%V3Rcov}gE8J*Yuvg<82l6LVT#otG(DENk~xZayoKZ4^5 zaI+g4Mvg1scQA1p=v#f=8pq1cIkN=Jnh;xby%}-e)Rs#m+4^6Bn3r|4`)j@*U!zX; zH!`xm`u;+qN#iq|y%T@Pxq*FsB5NX@p>YN-+oB-6?oOJpdC&N&uRSSS#(N~E<~C)b z_5xOptRe%BAon^0xjQJup|UAQ(&W%xWIBA-;Bs^NCLz3oy8q6e^UgyDKIudiFgFc} z#lNY$dB&lRbtd{G9ho!}Lq~1!0XwNXQg^{#WHjar++Xi_@C>JqV-NP6q>tZz2NySw zW94CL;f{hQ7agFea{xM?Ym65U$@x+$?m{Z;ozH%n=s1eD)chM~rbd^sdGb;|Ye2ES z=G>=4zy&f(aEcCKrgSaagixnyI}@a^t9u1ILk+WYT{=1VDtsjaN> z9g;=|pyE$67F|w+{XQ2a^Q$6pr5=*`$b-(*K!V2FdHJd) z#u?>2)?9DJOS)<{ilX-DY8N!_0@TWCR3M?)B5!7*)GUI(k_Se~>l28Q5pa?TTe0YL}$2*wWUJN$AUs>P;crIo>mp8Qio5I{ zpAP{1mzil#y`R~&K~243z@gs%VQ3=6<|WDJGHX||bj@(#ttX|E%x2bJ0Y%meqA>?? zOF1aIZ?qZ84mg`0)g5@6+9W6SOgXtGF+QJx=O7Sq1aU?EB~7!HbPBjr{+KxxW5n9_ z#R~7*w;)Mdj#>Zrp0)rGdnEoFxg+N0hdT?mz=mVo-I3WFARo~fv{ngAOKMR zzO#Q81EoRZL*{>Ud;2AsBjZ~?F9wrbK_%yZPh$%^89_#0!2737r8N6EtLLWAJLsS5 z$HzZ@hc`#S^lgxrKgP(0x@vrU2R(lKKI30)qQg5f#MuT3g@!i9n|Ox;y3 z3b0hVtY#9t*|hZ31zJ>IU%Wt6tSkg?T9)bj6eZF@yw^H*L3XL>Jv*sd%s!A^h$oNq zqZD)Gj*PL;E&bt@_vT-?hI)dA2j$5hqT+}?l$tj5Qtbgiu-JWwHR;PyScF9Id%hf?6NMh2bDUFr|oct`CEbPQCts7Bu4N%Ob7LCw=JyF&n% z!IXLub<5TjpaPt0a%oSZ^$-gs15oX_kHVupVXQA zH+~Y3Vo!I2iv50~Fd^H5#tXpTpU~;wcO>>bSr^(RGZR_k6?PEudtK{@o+fpHvEHv{ z9@RTIbru>K)cvj+RSv&Q&1o{5j$qiA3euFkeCxxtM{xW>FbS}iyb~&l$FrFmto!t{ z=Hk@P?i!y9br@(QB-=s|ZchRdfE2V{|CPbiy)S>*o>5in3DwvT$gj7y`<>~jmxnHZ zK1tB!kd9<<5_+H-FKk;|dI`0l+BN8AJZraf*Zqv^lX~4tru_a#>F^r3-GKs!eh%OT z&3#1hbpH;stHlg>tGhRKb_kdio{XC@L0}{_6`?(2pb>idPuLCzEh*xsO?@2ojJZvh z;Y5%Pkwu%XtHGc_*vvo_-T56hox{+bHXC|yKje$S4>-sI-=%wT5x>p)gZEn4>?d)U z0+Byy-mlihLEYvG)+cKB22a4DNfRiCJr3fny*`Yx5M$?o`?&3I$$=WC9Mtbb<`Rwo zbpC#SFann$%l?D99Jne2wcv2f58Q#}+0@CJiQ23zYpJxYPZ|HkoT+!{YG#}_POO?a zbr5yYuNMJ-7#g{No?oxA@E+G5puInT&-uIGkOBSPN58)4JSkX=y>O1YfWD=D4D2_8 z0nuk-ra7fa`3VD-CL6=l+(be6FH@Jj@*S8J2R@M#K8c9p9XakQr0Y-a`6_wB5h-i= z82L7oop@(tY3~>yS*AdK_PHb}saLXbixKbe&-MQHuiw#e!>tPg%kg8>rM*HHxEhD^ z1-&sEJ{YLmG|3)HmGnI-3FDz=DpH0oB@bSa3DuTlPfpegiN-<$*-E#ikU09blM}m4 z6UN_cYAf7c+G2Bd5Y}PVvlqH3j-EXW>k!F(pRXGaxeK4M+459D)zP8N+GOa}UtZZF zBe&IxGKjQ%U)}};G=B8_RpSB&P_4qfH)bo>rLYYnk^s~IlV(;>v!mAHWH%qmS$-n(d;oo6MGyQc_01kGrh@Cf&|h0n!M%2420xA_6R5X*n%dTb?UekinTL}MuymW< z1l=PDw8BLJeejuFd+R=A&Zo;E>j5iRaX~kTDomZy9Q>ve>R*0n|JAyuWPk;~8yszC zO?64u=ta6*zb{&tx_LQ|^VxR>!*AW^IjEdYZk^k^b+^-|X*oLqY9FpT?}+1b?B*TXK=&8QGr+7eiplw8-glhuTJJ|D zN2>PHd55fmMWr(LFw~`II2{^$v6*OO^3F`ILH{(>N0>+sk`D0ZyDO8&?-R_T3#o97 z^*h0~l5LZ?d!vVz&2U^r&!w&3*u@sXQ@pR}boYylz-V2iZ&XX@4(ffKXE5M(P#{Vc zH6KWsygKs%p$IzC&QbZI8=nGWvY}?8q2_Uyn{g!OkWCBr?&6!%ghG^gP(W3$#*VK5 zr6&9k9B{4S#9ixE|HFIfcGyPYp!?;{GQAQ=pjz;A?F90s;IS~0 zPX;JR?*{f^ePjj1edN)lZ_PA50`;^PuPqU6`Q|ftnTQwr>cAed548yPeqS$4DmS(9cVbUz0o59=+xt1viM8KHBE65(t`|Ass!XG7 zgsn%q_0Qs+(0#*asrI>?B%FDgfW3@&MJ##=h?=1r&yQ9XDq@3l?!Oa^@eskM#lh!! zUmdAFfPWY?yZ}AP8#M_bFP4I5QWzRcNibyuAS!6f#vDw|?#ogU5iNil*h=}Ug=p$! z_S)F)oQ(&%J>kC4H#}$QJ2+d9g-};VQnxjH6?xt=xT3xA#^c#<}L#wuocUC_6_--c6`2{4q->JXgmZ^ z=uGE#L{belA_S-v;nJk(94Su?QIq^&V`~nQw2%#uESXA1I}DjD!LcrARRog?{orarYu73JKKneX2L-NoC^fnpY|{3ih5sQD_#<>y>}{1V^m z0YDJ=Y^BJX8fT-B%PB4j-mlDhkQQT%+}HZQtZR(qcnQ4huU!PX%IGdA8~`;QQEi=? zXaL+ri2Ctl)b%nIwd;(q4o1@t&4${W{goeh_>zo0pc|OZ-!*t@vE1o>fAsV52TcQ_ zk)U(m6tNOD5%-wahW9m*wPmy%J0}CUnBiOpSjMw$XI8lf{ay(Gxuc^^)jDZ`sq7Z+ zA?O5)pUUPjCa3TsjcW}sa3Ah^$u!#+n`lCmCDOjqPvCBR_8ZSG`YfD#mb^Vp7b#~C z5q$xq>3GQB)!E4CYZj23sc}QqaxGFf>v!M#oSNoR@AySv#b|i%E1co%JvK(LWwY2+ z#>Ux1@B_AL^hfj?<7du)Uu?lkeaGh&{j|Wq7i|mgfSkea{k(;F`Mgw?v&Ino6TsO( zc`c{kB{$C(Agu!UOm%V7GwB>4=-D{13;3(p6YK8RV?eQXpTVS5*m{1*rZ5{pgX+q; zGbcAY`I($af?v(Y;v?p+Gi!uJH+4m8Qhgzglc2F|$PQ3`+SDA9%3g}=9d=Q(vr_K> z2XogP>-_Y&$krS01)dpn8mdEK(AmGBb2Zem9F(?Pa(kQtg&qjBpkvT zoQk3kH7nV030ckQ42osSE~;U{BGxe6=e^%WzdPienc}5+S`O!kJ8uHKr@mE2s&R%s zpK?-;($3t;E*Bkzix4{|0rjMyo|G}Z>E^zQv?yS9I1|4wf|gB^{bi9d)LBzb?lL9%tl|#A7;bkpmYNy{M_~STN1Q@~xeAc1M%7(ViKs;FTcXt^H$wGvd!xVRs59H305HqpK$U!qaN7)IoZqeI*@vHxLu^BPDxyk!XSt_qwo!nlCx^Ndgnc zk-0PNn`EtAQLL5t1jppG!(8jR8_A|I+DGnjGtNq`b8J(J{x|0*>4_Syesm|T_kkP& z3r`ow(=Jc&j9a&?vvk+{k6(V@zkE5VD>5{UL{8mAw6TKW#=}Ji>WjKaDDyL=rfBHh z0y>V8oEcpHGDfZRzAC*K%~>>)lC-`g=O45|p23JxT+|5Sr*@&Oz7GDq>Q^$4%t%LO z@7_TuXkJ>^2D>y1`SOlvQjVux>$rb#ANN|G5D13{o>e!cVrkBnsg&yvK7)PhTcK{l z@|P*|;5LFrQSJO)_wtCwH{FLd0RmI^&CvxdYh!%S$>%uImOmD^ z=XK~4Gf{v2aONE<2DB02B66(Dchy5H%RI11%HO11<$_p=>REa4Q#Qe zahwCbR$cMz$?j6#M+sWplP2e3-UCy!qmVi?fJGVT$ACmfEt}f^clKD0gA1G!d~;O; z`ujz2-CE~Y-W-{U*QZNHjb@qt-Z*YL=K=R`(-?(KbbjoIrTfrjm9-b z+8eqzdh4lrG6yO5`P$WhJJ(@b1Qrc8SMLls;x_aruG~=*h2|1Bbs^p#PTSYqD`h^D zK`+isOFFe>)2LGd9|vlhO9q7p+$NwfdKuXcJa!riiIUGV>rw*PN_CHQK6APOg36Q{ zvTZ^LH-bCN#t##QvTnMgXE4bIm+5Qz)3a$(Gx>JY=1SCAe|WUCesjK{mzRYl3r! ztdK8`ClQv;(`H(KkmPk}bMub%{d%nSlAo{t(BO969X(b$Byo>V?ChMqqyR}Z%7`%0 zfvfJ+2ZJ~laVA!f_2c+?*;jsD?ZQ(ZaZkPP zaGJ8f^QLD1cfVl<@zSovoX_>~LKY#a8gn=9G`n@1>8 z+;dF!pEnza&8)ka2~3(D7nYI5>dGerL&MaO9fvW?nFobv=06SezMtQJSL<*#VknBv z2O0qs*O*a>-Ee|VCYlC77}ln&?bh5?%>Vt)w<2G>TeWwHVx$C+KmraD3N%M8;{Q-I z8Fo%|_U|=;llp~!RC7{I2ENywo7VDi>;nw&ODjU;g{->t$BG4LD;KvGE*X!ymdd5IiPWnptb?tq$o1_5f{2D9sf)QH*dY9eAB8hje#@BO%% ze=P-t&$Js&C#>4@{xl3oH8{4{|1<$}fDhdP+>L3i9E@0dWj4E(&?NI{CQy__w~jE@ znv+pG)=k8Dr)l7Tv;BqYl10(ETS>~jLd_T(gLG}seZX!w7C~oPli|(oQT{xGGRXIX za)m53&ey1?K5Ytrjj~FoxAsa7jklanF{zvc8tnZG_d7E24!Vc>j&3O{@UY^fiwlCiaxjh%{Wmz58q$k1?spL$V3AK#N7KF2PC`o_Gx%i>(JQ*1MzvezHpmy;a!vJ}t_S@l0hra9l(P=4-xPrwG=<@-(=I|Pem3Jo*{*RO)RcnyBm^gw0jBe%^DY(f zWvVk7c8cEp;vO5BF+#`~zKs3mU9Q^nz&SNtgtn)$I%s_0nJ>0>?hKp_*hJ&+-F!6$ zg#Bv$2{y}WUE6?{K^z$`tps`i)W~3m*JxRBo0ikk_p}q$0EVMd9NFBSamQBLYNzk~ z+S-^og-x*xse*Ujdt+9Up#PFRlq8RH9vroT z@fWx|a2nLS0fCXN>aNiFes-cnb{xldF>rVFiS{6R;~DjgRAimHG1BS4QV#aIHQQ_` zx*&|E>N;zkVw||CMtp6Gq0R5~I!!hrTQ2phqRuzt;(PzDw~ya`H-V=512Biwq=sOA z8Kwr)DAv;q1z8Ptlr{N&nQdtEiyycZHh8Wcf=2L`N>QTy+!m3b&7f2uwF+etN2i_V)s79e$6fYVIH!2y>FJ)j;5fFBLDZ>##r}T|yB!ysRr{XkG zavVTzJ0wP=8mmHvH*0@=+hoaQWdLnpr2zr=Wze6j79)Ktp z>f$E2n-ht4b&uT6(Qo)vcDMn!vI;a*2dU~P1)7z)xWhOv%^-`CJpj_(VYAyIC%Wi3 zXYF9_k+tk0{r+y6b%InqX*ZQQ{iMt=8XSiMGl5eCSSql=XDsM8=N^TxG6e+W=kia-O8o?Pz@@_^k0R#*$WQ4C;{(}xYR9xOe=RoJyb*QO=b4l7^ z>b~9F$GwNl_8Dso9L@rR(7dznpyc!%Bh~Myv*{ak)t}bju;%K0QIanL+$V82Yzv44 zA8=qQ&Le#S0tuR1{iF3LG(_FWCK zANj;=L+m z$6UE`=#7x=OLP&dW&E*?33bBsRq|P+x);cNJ&EdteG+y&{t?mWOSf0<^WD^Iid;u9r2^5Gm*h$>5b(v&}9xl$}}fL7OTGlOQtHziwUezuTKHJss+>UpexHD$%$s0Zc1 zJO|4e1AUH$E=eHosb(|R=%~U33<`v@5BvRZ?zcmZn$pFrsiDMUJF}{FRkMs*lB=E_ zxTad!^+=y&ya|H?+1(jm0l-;wz&usor9u_WJ^=A>C>l;{Ma4QXgKj{#u z4&*W5OkTI4?q@mXIAkMV2>?Zz5kW*bcxhLn^{UdWqI;~}O8Se%^NiGWBpO}9S}9dM z$qy)n4Fn%wd}nXru1N2KA!ve4%2+|L)o?&r6wThzkU=OvMmEZrIU^vXtoRRJKon}K z&MgT>HWe^@F1D16iQg(vu5)!L1b{7G-V&GxGobeYDj0DzV>dZo)CAQb8R1Gg`bH&I zj{I&RTigDiV;78|O5u_UNL*6}alJ7L@>hXT=egB+sSPs0A=;AaZ10i767>fh1lN$y zZ;*OFnz~Z=-`-p43Rol9?R5{50|DXmIDzh?-x1Cp>t+I(h60z1FwaHvAuVCC{j`i3 z3wD?400K@WfJt;)ZwnGX$74&cho#?=^MxbhmT6qg#U^u7Ngzj^? zc2VaVY6= z`QM8M!sh!jgV|lL9tSvb{wyhz`5n1mYELdb4tZCN>3UL57c(5Bg_bOK&5!P0065F; z6yW-VQ!iVU1g8uRie{qdeZA*$c4(qbGd!niHICXKv!R8l2}gBbORNpRALpdukpe2X zix^$7_3TRN4I2Ae|69@Sl8zYXEGL3i+fJ?glXoWz z#6>k6F*xat4rHFtkfNW98l7|uor8_1{`HcXsI0~6#wkLu&(0?A_gziT!LzpxF5pJ` z-u@rVgvqv@aAuM;EIEG{06ymv3Rve7_4&+v$N>kC#=a%b7#Zaf&D)6|cxTL7zqg|v z3^Z4^!c7$MzMC90yi_3CL2cNqwWyfW8mB0Fg*%VCRR7ljtwkp=8_NmPBm=QD)Yjma zv!9ef0d{&+wgDYpF@mD8m~LaQI~$sySDZ7+cL2GO;wY6V~TlJZ@jvs&^^LFCQ|k+P39D@*(6eY8VQ>fOq28n9Zv(9AFk zjfiXRuF>Hkc)zZX)=&DL-Z7<1g~xf0<7a~LCny= zZAZ2rS#Z%zgXkeTy4pr_d5%#Oe3_xXe!UK{w&=4J{K}uN&=S#Vskyx z@xsBG4Lz4^1EplItuje9sLKRQlzL=@xXzeHLqI@--?;Gk6O|nTm~#RTx1NoZHj08m zgUrHDQ+lf$r$T$+NunRSo_8#s>3Z1W7zODBnj7258+L$!WOt3G2yl}S9XJIqsCpP7 zbP4XWGYCju{%J~qwoH-2p>*_)QsOglu;-;v*DbXgRYc6Ge9_&{YTc?QfkHJ?r>7d0 zxWqH%S!`wN$VfneJBM&`C;jm^5Kcw&QoOH7gW+<2X9K35M3DyqUMd1Pah>5}1i1yd zqQsn&bfx6A)(6LH17gg2LB=GHHNja}Qr0xC6?xsjYz-Y0ktIf`IrFQ|qN5+8Wa-in zgsH}$s1#G|XwD&adXGNvivWxCRMMwRKrlfwtoG{5tZ8Z$6h=fD@~b^vjY-B3<9(Ax z2N5tCd9xXEe33H5%z*9!=l1YL=WGpfmjnmA=r&w^rQqRQgoeFxNNlRTx)Y4i$HlCK zSvTHiA!_;^afd_5cdID)M;itG8UFH)XwmttN1i%Gv;aTWEHH{Q?RAtxx((p7oPVvW z>Rn9tO7u@Q7huG@qtXP%!QV~YivkM@*l@0p#fynSx1bFkf0!NjGD&~%HYNNHtMmH>Vb-4w-%K!>!4rX<#)=^T?f z+)g9uQ5AgIbC0^7lu_C0xVM8Szg70So)V98YD@Elx9xG4tTS}MtbFaWz=IS8HA&4U(7`{tFg_-Uh;=`_1CYy0a@ zZ2)Pu7b3{a=GA+7^mz_mQE-)du$(HqetrT1EgL0n=Sc6pI4 zLh5GSr$wDr|80;5L!*Vp{ap_5Xve^Pf_ObI($(F~s5(Y=XW%OB&LyWv1IPWvW{z!} zKX4kE36Rdv-U%yo)@(4OU=d=U2ZKlsC`&8k($K30c4z=kTX>OP)^uE6{f%puM$Wvh z+c;7Hb-P-1!)AUVc%=UNZhHlnn*ZQyk;rDFD{r=qZ~J0#?A?h^z>sjE@V4GT#>{Ew z_kSTnmBe@MSL zVQMr+pAj$+Fzb|^q|MOZ*?Tru=|x<9mo;+HBosO)04 zjW9ogU-})VAT@4SHgZpS@#=2(+wVx1opL6Jh{pZ^#&R%1g5o|A)B4VbKE_^(wQArN zDO^d)h+(MfbYQbmEHEljDd~zBEeQ~Q9}yy_K_B61Ax-B6TD?XH=Lar)ank(&qx+rS zdy}*cp_I3ekRmd5BdX2aJg;Y6%GytGaxs6$UiL(X^s?Xd?t@Cb)3oJfzs=s&FAJc^ z$uYC$5rZyJ^rW0f6uzf3d643zHH!);fzP8bP=fn|Mv>>!RLiNm$ecMvh^UAXqEdJpl=&bdf(3O-(CvFJB<8FVRVTy)Vr+|--_e+Y2g zOJe!JC#5mnqG2NOMdi1$iS-UJ3}+FUyfq)+rA8l-vN+Sc3!S{lVt~TL3UxPBsoR zw$x~0K$>;t!KsIJegN#CgQ{r>qeCY}hC0ZU@pQ>+w(KO8r*+Y{nP_Y;O$`)P+n=N& zPGx)+omn#mMPig}y|chEWUFY(F?CQIP$}!=7wax_WP9c~mC|0SvNVitq zy$t84_VzOrk^AFv2gFz}JJg=y`)RA%n_>gPN6SB(H_ zgu~*``_x<6{ja%0MgSF0M0UGA1?w#xTf(IQmB}@jNf!*rz`4}@PRadESvmuHcI>@$ zDIJUw3wBk@Q@-8M$txQ-Uewm{F&*UZX77GG9V8 zTg5$5&~O+GioRkC=zzt@jJj*qBU26@_s|BEw(N1Rwm>@8#>`p9>`9oZ{sDE8ykFGA zHS}5mh}8W9eGBwbWC&CD%S0u8mVOwSWOj+QAGjAe=V@x$os@a8VmRNAO>$aK69hSf ziXCWKbb{HPtLlL5a0-IKG1<4%OR?y8wZ<1ZykOQ!M~Z-`x&&AABb{-M!&+=l0cC#H z1bRQ`yiJ)Y++LWlobelu@f_+fX>z*Sz794~U_uHa2_U3H=Z446C^W(r;lnH$8G5GDE#W@|1!4t3n zWjEt_*s!$Iah46z9@=5|@FQ;1pd(xUT5fP))&cQDtO^g*{n|hKsD@_tV$VncZ^h^> z%f;m2eovr#y{vn!$>6~bC7hzR$K3TCT+j`#4jerJF`KN9-*R*2Sxpk6K9;~WV7G88?Eoo?=ykH^Ss{P|Mh!N;2K`hNKe|SSHewH zB(2X0i^N{=BD+oGN+4X(R#2xfz$}Xj)qp<;Cd#O3uEwjEF6U4bF}0-5j>Ni+@pL*K z)`lfJaITh!lSL3fg<*YK4@aXA7%4lIie2x0VEa$>@X(v@=OYv?5Eu7%%^@bf7UD9E z_d#K$wxT7B`IboQdRSY`7N zg?KXo%NSVpBCoh9RE zYx1}8!q7i`N(ifS?aSW z!;}RSnhQu?O{eMkjmG6Kb>v~qo%6HnXMP&Cb-zUq}q1JG8xMASJfWfLB9&pe@qlg=M`LeWYiD2 zQB;!prX6#h!Z;D+&{Onak0k%x)19?!`3Pos%`~G3dq!KaywAY|%#98N7bcv7&UKfG zx(OdDOc}nVOVbO%neTgEZOchfYJj}XdpkQjART*ZYA|Hcc+ZZJ8P3b(ab{~smui|3 z?V#t-o~0gBbqEM51?fA5m5TC9`%K*>dTW!|e6>^40a#M6^-jo`VQpA79mWM)w-^{w zS5oOnZRJp(_#R7CX3;s-$V7X^V^DGx?F!cVV|4X%;vV8^)f>|R`+1v)pNt%4lGso_kPVjJA>(@&LZtih|#aefA zU-h1?Yp7>l0;5I6#n&d2Vr^p=nK#`$$)GFM{6l(8_z=wqq!ffvrF+fJ&W>8MoRNOH zGr&}G{M8txXD?N^IO)kp|K21eB>5v-V&+)r+-UDj*dzLQ!e7svC$D3JEm~hSGV_+}82^$$kl0H$Yl4I-3HflC#I zZT{=k!jRoS0+*?s&-Qi&R$?wo4`Ylm@U>@8Q~O5H!yxwcCIP{c+RW6Eu$a zHbYxx_lz4lP#%*7>r9r3Cbl}d28Wi-7i3VWY?A}tx){C{BMLmBzc~)DUW)V0 zh#mn9e*baES`@vZwtoe|kryCr4*T^VD5CwIHw{MZ7m8h-6iMrIml0DWOMwmo_npB| z9p3S}nr4oGsULEO;0C~t46wuj-2ioOg1^`8gB^-jP76Lx22{pSS%)nOzw+n4NY_zB zo*4l}wA3UZc`qatd}cRQkQ2n34y`kbIwIb`S=TtpIQh`5y!V6m#ij{}Y6vE>&+nNX z04pGGEWDS&NSBc@Q_w__zg)-$LVl64gwv~L8)zl~ox?jFUwy}`xke7C&ZBt=_KC(f zJ`ed-w31E)I~}3^?>_E6&rLEd2iy+*AT+`oTlOj8;2>Zt-4@kV67C2yCjumWPuMZb z6&T1q2iZd7`@liJOpXNnrn|d20wgG-CC3dBSnN0qvT~ z-~dRX=@}CFPLOjnRH<{`=kv)u9N-6MTaAxc;I63nRyE)2zMM3%rAYs#_Wva9mxcVI z{OuvoNDc@)e139?y zdZtW|Xx`a(NcA)V&Qe;Xqv|7+&57P`yzEUXk%GxM4+Kl$Y#8xQOKUmpZ?dYbGax=U z?^NK9@x+Xs)6AszPD{n+0&0?>+Y`bbx-$pmRJtPUZ;l%5-gK(d_px`j#^%hL%`m*1 zI+U^l>-iY_fBaFvN=dx=@pJL)&!2l^lwB-Ej#%4rI^4^72h5qPiN+sEArXdj z(@exOm}NF&cZhS_lN?8A5$Etm9Oq~q1n#WZI3`SAo92p)!8`1_WoI`SC6uYA5k_0= zFH=#n7TSaC3_w7gd8(FVp<~iSv-jt!gAH36Zew~;@feEbla7oDh_w>AD{|a?Ve-LU zob5A1P|pFcUhA%i3n_or&!xV)Q7DU+r9UcqU+);CELLW00AzLtGzqN?nsqk~>tj~| zG+RazpjT(Ci&PalUMK)J?!S~7oJbVF(@+UO_Y~!z@ER|Wy0ECAj-28BGnZ0s0w`aG z0hD>{tJye6SX&jpEdgw!3}`U$mtklwizz!YjiUI)vr>}-)Hj`xE$n4I_l5yWa`I&; zra+K`J599=X(ynRF*VJ*YQ=mTqC#uHrXpskh%6Pq+LWfUl{g1Pimx^j-u!THfD=V8 zL>6o%jjW5(W&|BP};O%VgwO%4RM7FbhxrdtM(gRV@Dfzvm`4yI3qDMXX zoF~@^TVtQ=`sL%*2OOlGFFPU;OqaH(oXLrswk&i#Fv0ty4xF*j=8waX7I zQI0Ms#MW)vlV^Du29dwdy8YE|V_%q=F5S)9oM?56P|<8zwyZ3 zS(dbuc0T9=S)zgk>HW~5Bxe6^16S1n`QRpCrJLYfYhpu^yc>Ksi=y|^42%}eT3lvL zuk+We?l|d2(>sno)+|sxztewOkKd+F!k7W1p#I2NWe-II4?c?^JR?;;2>Gm!e7>x~ z8StF*(T=FzPis||OgI~Hq<CjHL_=915IW z3ZHOIGY?3@WmG44_sVu9Fm8AHGh@c)Jo9 zSFkZl-BmC^P?I?4j^D9%+7N^c?m4ks2ZZMLy8ME&cD~EYzqptF>p%ZT?num|C@=c~ zKfd4PU-d$E{cm`aq{nSudio#VGWA<=k1K*$Dc{W@{sTtL|M`8Vo~G8lKnihbFI%$I}Xf41{)Fu_HF6&9|$!KR6vVQN~{mVCA{Vyo>z29^?dPc|h zGp}Ihra-5^2o{CXS(^9IoT+E6qa)fa)QVU`;kY7`OLZnm1O7(g-vIR|oq%6^k8xgz z_F~BFulS4DgZU1-0K=gH|)N_Ie1Q4rSde7LiPKikm#O<)WiY5pXTxsV0Te|-P* zX90)3zN>~e{!;g7zyI3vhEiZxj>nUG90l}hF9Q2k`*;68yrckyXwLCf`<>-j!FYwe z(*fCaFn@gm&h0q-Qbrd|QT_mc*j>v)ksY({BzB$hKEV>JpvI4Sc9ITS&fk{zjfZOQ zzIZPfxn7(-WRzi2ia-t8sd}$SQBw+dCoDgCFPQ0&ax$!Qsf%Vs=;_=tcw#w66{*~F zR4M#5C{~MfcG`HFR`%x6( zoqdLb0>{VM$O8cVr+HgXI^A^-e(|M&MhGU&9|9~&@nKE{GkTnzL?1+c!K^ZaiBq4x*Q%ONL-TK<56twh73 zPJh_ipzDg*B4zk8q`46$yASLMn`z-vhC#l zn_%w2B+&yyKnnn<|Vo?46~CruIzCcUbQO@ z)PS`83f|?ihZprahds+_v82tL012Ljb*-mBm(g*5GSmCe2H9Cu9Es>E^bvwf)sp&t zR3nsPYY@01`1fSilkb((;bpgfAXCB!cm-5;7s@Sfd+)X`sSND?_SSL#pU+0F|CYbeL2tdEyL%^UR6k)W{Chp$cNscd zfz79dirte=-uGwTfhJC|Tb!?p=J1mMif5Y$GO7X6{`>VHmCk3@&y0fL-)mp~GR)|s zZQWD8d}Kd!#;!~kHqpD^J7^+%xxTCeED9JbWS>TFM%hZtAVh5+GF!60iMyVtIj#Dhs`#TT&_&hYJFP?jW}wPiB)_e8`Od8z|@;=_wldaORPKkAYLeeeD|fNpzq1p zHMi$kh89KoW}-9f{j2tgwZSkDC_1~??$_GMNX`JL^jw-LtrrZepq(W7knW~pU=;8I zaL*rnzVn$z2LeU)a=u1@NN;7Ng7*o# z>F7`N9ge1OxpiSYYXZ8Ki4J+Nmgc~F`0N6kiXq*{=XinbOx<1Xdn)TNl4ECzotY?| zKmMP9za>idrY{!PvwF=qTVz>bj?$FDf^yYZ0J%fiXR7;Mt4`I`?5BL#&=+j& zx~Y*;g$z_8^VdE*GHBHYWCN=lnuh2J2*JVOn(t93izaqtm`po)1db+3OSu;BpAmHH zjNhjzLpRI@1}oYiQ==&QM_m*ahr6V^Nr!>@74qYzdIxWNLtyEY8-6XNckAgtOqsi? zfmAn0HjwDqemX}#XjFZM!^s~V9f$nlJTTt}j%*z7^h%4C?np$8`5gcvW*D1(ZO1c4 zz7Y(Q?VO(tIdy5YnX;GBS!dj3+Q_n_nr&jHn$@wfKTWg~oSAHc=ERJgcax^B34xxu z*kq!cJ~*GVcZlYw+LxQR&Q0lIt%-Y7^_1(H&vk&K(Q}$hbJ#E612BWNILxB9^Ff)< z<1G2UwV&~BpuoOE&+=X-F$*N(>fdWtOOF0hKmiWKbn%nUXj*>bF5|mNFz)_&lp!W- z9=OFW5FyU}|;)&okkPwy6BRf~~9NppK6F^ja^2 z=Sj|o&ScD9o25(EDF;cpvZVbcrBxqPf1r!Q^U&d=>(oZP>c%eKBe6aztEanlHuf34 zEm^_;y^UD8wO;CTchtvYE+^_)R@EnhF_Lmfw&Sd7lveOzm=5=1ZJ?& zrcR8RL+_0sBfymjVvTjq{&aS+eol!6U3B70j{ksOypCra7_t7Uvy@Gs{b@PBT230i zHHBFW8sj?TK$(R-`Yvj}5KlkWEqEg>T>;gHsk8NDr^Gm$Y?~csKl99fOTH;#kGKE& z-K~8p{t&p!#=)WCqRhM_s`nl7tbuntB>kWHMIxN>ataWk(^4dv^qFQ2eD>x1(}wHV zNWhdT6^zDkNDUeNV$%SdBDq^YMAV?GL1Cxl%({5JC~L;4*yOa2QAYPKP~Q*@D=LB` zBLL^-8UYb)YY+Hb9A3#wq3Ad?$Vab31_Kd9Cv`8H5fs;>)(8bKokNh-y8*mc*zic% z;Gv@Iqg=6<0DO?XKdmo*E5`l%aEx7a%Q7DCR1QxQzdKY9qC)(pIZ|jF^jckQ_b1)l0!El3GyD`QZ4l@ZkHS}2E2Z=-!@BtZ(=)IQircZPxOf_Trr zeZKSE5HLV1bp4F#BEITeOD=<1p)yj4NYxZ~I%Web!a#W;wTOmtN06$e`E}@gn{|Uy zx9pW0%m^a0x%is&6sbe;G&`I@MaNMK!F$vZKv8(mSte)@1m4Sut1}F1n&S%U0ywQn zuz=4;J63gZ>SL8%Rl|Z-h@#eH>71!M0Z4KMN%A-;W|8WQf(4sMH<(ps`qNMkDUfwI zb^JLQ9{hdgq=iq`)96s*gU6_r-Eh^zER(|laLIErbnBZ4nlbZ%N2f9|TtX;&e}3K4 zUYr>j=H62Wg)`WJb6@um0D5PZ@qa?csE}OmOvz}SVWdfRAm;v#s$Ojv6$Fdxr~SPn z6YdCp7twk%IYvp_fMK^fLF%t|fa%Q1*qf*thoy2*tZKP;fD*F^9$4p8Lw)U_|J3_^ z=a`u-fUR`XOrKsi^?`J_WNG;{Qh*519@s(U6oBuuKmXt$BNi#4ufVBmV?;^m54t)4 z7@>N;;IH}Yc^=;*ZOy2cI>5%vV`ZTW@P9P|D2iPSr4#;iSCbKO~RTA!!VDQ}*O& z^&jWi-c3#RK2A3<2S&b|k{HNjSrHIEO?UOICrJ(z4eG6G`Xfvd_WDQb&T&fTU3ose z?wmEoS%2!iecc?&&YF9HZv}9FVtsVpEA&!X)Hj=^9fL!$ezrZ&me|%Ouwm4dU1OfJ zem)JVO$`osQxyCoW|-0eW2V(-Z$d$e$)ezA$s*%^3^i>WtNOIieuJu4!Mk?C4?Acl z6%=w(HG8#;=vi7NVl*9ldIyz-7We5@uc~ zQz7x!ck23SpsitJki9_%5j_u=gQC>@L~Vw5MC0$5MiD8j4Z@-*huW>;!1xY{u3RWQ zmSFReF+ybYq{oY=h3)1QTL?K|Hq7j}plgA%zauOwN3k1?wv^ob$>V}Bv!kLpWpO%- zr&0XKAXv3QslMa=L}#*{FZ{q>*^5fA6j{DAHwwHgQ?tcw;Z;{}4UE z*THke(w%exUQkXLul0p$-RLZq?1^SzeSzATnA*Bulm|K)B~T|{cJ?(DdFrk|d~ddU zKY6wos46b~zDJ)_3R863a!`9i9)GAn6z`{DtEY03LeLPmJZKRWkrhQFMDJLww7__n z`={rbvJkEG!_-nNU4Quqg!3Do7v6Lr%pBS8HDtGKUH^5c35(}$jWGaR6)XYmLX;F4Yt`1=cW;)I{jB-mkxw=o#rSdD zg8`P4kp-8Y8M+WB|00+oHP={xZ=z=C(y(TsnO*UR5qmh<6Yf4QnjF@+RZE{I?Xmb{A$inb!1<-du;ixnmv3Df0oht zWK9o(Df{~mYwD7N;*56Q59>@+MabVliK+9v2T1W{iY8ubkR2yDE4tzS3DLIskhDTELfkR&B6BdIW?x#{ds1Q zJ&L+pOQjvnJOZP5s>x;=!7D(i(XO&~<`O+f+c*($$y>`zI{}l0#Qqv(B8ysCwRNPt zX9s+6Mlk(&#&qX3j_{DIII?ktexqp2i=X9mFq$Gw9ey^==ylabsQiGE%RR6o`?f>} zHR$r7ZpS=NH?@8)t6vxmH0akg@Lsqa{IH{(ul5g3OmIf1GnehiL!PXGJ^rR_@4TCs zB-Wp+XUGmr{dJcZP&TT|UhM;)@dIrc<)}y+3yDfi~A#b|tT<$JCxkHRKUsv3?GI{`@`@9t>U>Wv1?6 zTIBEaufnlD+0K*!8_+BY>g3ncMNX zvp!v7OyAZ!Ddh)%)4DC8AOU`saa6UPnIp7yd}|Peh$of$0od?vdjT3IS;viZ>&oM6 zcPsdb9N=f`vunE?;L~NGb(y2zS56(yvc75Jq9V;K2UJlN4&O5Zs2wfaqOe={CN3uZ zN}O#*e;pq#J}iVDwMe8l#e=pFO4rrZ$&@h=fJjqBPtm^Mx}gNVa7mMN1A*bA1B)?2 zo?XDnRK36MC2E4`C}PvheF_zgp!O^xMS9$*P_XOWVbp3Kv*73f zNJyR(HBKAxp#e-%SNz!&2&03MbO_W4A@%tU5ENy^cad>sCi%e1^;sQoibIDI5Ib7- z7U*2kRjl4o^AE1O_14BM+~4C=zU7Eip~5|E55COo(054So$`Zvj+K&U8tFRCC$218 z_eyLV47eR<(|>J4D8SYCoK&H9oE<=Ny6W+FXhVYzW47}|he}jmWu9VW9RECzyEK8Y zmFR(Lv>OOexphlz%0HfQ)`Z{#WV4&%+qAXpcWhN6`!3yefG?~`fZa?Hdgu-_WmLWY z*ZF^!y-;fFcj&y7!}m(H9Pr3`7TRhPU}Wv%E5%4zcO)K4=iVRcVRdo4{OoO{_ ze9`TSc6l?i!A!8d(&kW;sjQvxxomKt0Bb;$zdEzBebJZ!;O`z>%5{rYr=|*}qdVx! zY&KiP_tk8f$(|X5zcb_Itc}jWDA`?bp$F0i=;0j0rkRWOXaFPj()xR-gL1R3tvuGX zDC=?pCEtC0v$H83Jx>NE9cO?{{@-y$>XMR~LdPiX`ML|kNzUL5dfOn?K_&LjZuL0G0kCTe28jmQrAO|aX z#_wk8(v}ERSKS&jKgM}U>gwv@ee$yh{Fr{XSuY&%#Q?=!GZ-zi1EAQZ#gc@Z!O_#0 zK<{|f06FeR;rEAWG|t?kkrAxpJ`}V;AJ7I5T~$Yo{VQB73LD?~>RF|$&$Vm|_bhsR zj+U*!yO=6G$dY%;iQm1n4p_Qq_i1)uh6;D*X>(@ZvG)sp%inhG{F&FEA4k0#>wN$H zdjI9?cSIbnzU0uG+sJRK%TEf^r&-4qf0%W#)K^76YSASuyT}v8tDQBfJ#(Axa)_GH z+*lPer`ybMfpABHMzyMWz<%Z@H%M;?fD{d0jGv*XFAh$TA*Uhf3DUiBJYYuCRCufU zk>Yq>JbXHE;I#i~m}vYkbmt=wfG1!bAv>HHzy59QIQ2AWQqMTqdlcu@2Db(?ny7x@ z`@%tb{jXS&w%W!=!hq-;bZSPiT}Is4#ee^uRClDbvKX7Qb!od+EhwKNn@ zRz!L`WS1sjXYUmp?gtGavp!|GzmNgE#+jJC+FxVwHB-&2ipxm_S#K0&DJ5nqENuz~ z0gPdM^0fMHL^YJP zDlo#}g(6ZrdR}4?hB_iS1wrE=`co|!&oH$TU(AX;sazpDMWY}f5^uf@pn1#X3`M={ z+Q!P&`dQNPp!0kq!r#$vzGM6w(fDerq0WuCmk=>g1*9YP`X04!6|Ui3FSuL9^`F?6 z#9nGo!!Qgp7ExGa76i?pgGW~%M}3A8B$*Y2yu@R zE%N2$pIK0+{sDDN`f3007uIWV3gdY8Zj6GLzgT3A=YWd(MsUnv#UkZ$7uK^$4t|5+ zx_~mzs0}UT9xc*8j}BfsuP8l+FQX`UsbMmEu+jjT9-rTuLiwU`(Wox!Y3rZ{DY6yuegJ> zeUN@x8FzmEVN>0s^yjG7g2S2k@2qj0Z9q2F~5xR(<|!CqRvIy^?b2^y^0 zryFhHx6X>64A2bN1N-8peMit3J}lqKqxH9_?M+*%hqE5KGfZaIG*Gjl0Af(_v}txz z7gadB586)#bL#pz_5Do<5#3P}cb_=n)TfkHQ!Ix&H-TC+)ZSl_%s%XoLK#8Xo}DGN z$?$^abxkI+|G?4KP~WkcwBe3sUg49;fIdezRE?;p-3iz|$i$ml?v))@p0aDNitPX;c4W50Os^qE|SkDQ=Z%y>7Q zWh1~JNxD4B73e6jYaTFwYLOnr6tTnUhu*xc9doxy-YB4?1!=F{+eVEO&okOP{PywV z_iDh9B*YY0M9a>)B&h}ksD&tHne1xUMW9BYPI?Rhh*E1#Zv4z2B5&T!I%DFDmK`a| ziTZl~J?-F)mqLZ|EH%Io13q*0W}(@QBK&lal#aKdqrtdgCJCanf8jIf8+GwDsVf%x zOaXJR%*zs$jqR0PMSIG8_>Zbvsv){{PtcVO-DA>J)Lp?4QkCHCKg$4=fUXCD&a)!P z1s3ZGZz$|2%hyu31hoELsjb5$$74e`z&vN zqB0jV_XD=DcOTaEUzHlBa@tD%+W~R)=HE09r_)y5mcC4NJ)l;q2-P~0x!1m0{+yRS z8UR5tKj>gtDGVn~BwFEH|2$d~H++IZtVq)}PLBc9L4@B6sG!|+)czD$;JPEOzgHL}Q8oAI$r_J6?j<7ngS#`Tn`&QjM<6U^K_ewe2Mb*JQ zP?St`7*Ht)uoA`j6=h=<6pH(;!BcfktLLhgh=B}KFoS7$qa&R&m!+n?Cj$a9avNkA zJ6UZRsai=YM?)tcWOwYi+p8m`RZ~%2dd#{dt3y7fjWZ&R+iPZTOjSb!CVX6iKl`oHRO|#|>bz zzgFN^^VB|h4;}>oRPc*VV4wBuRc8k}E5JUxsO`PHlpVHOV^Mt_^V3ixNt;tazq|AR zT4ul51dZ6ePQe|Q3^U5P)UukDholrjpWIcm1U(&exL`NK$41~%f8hOMaecHc`%KyK zN&&QK?gJ@+T+=x;b*%b4?4;v9*ME}%kps{Kma}8r0Kmd5sFk228w6oXV2(Ai%G|Ss zKhT3R7{)zCTlMO$xgC#0*E(Zu$-d`aa|oU7z~74D05B#8U6Fn|MwX`8a^0}T#t{3 z_ef@GxsKgv1I`Aq1%Eb4$7{NLgLFA}jL>H^*mXKg-sK9ED}L6LUN9@iPH<%xDBs& zG+Z~6^I@I!d27c>cB^Q%z9>V)tPWaT4{Hv$DFtw{O%U92j*c)5m=`Xktk8dgigW20 z>K!A_t=937pX4Arcx{LY&vhx}S8Vxuj z>eV*eE^B{=2UiBxl!o2UeS@MVm_e3`MdvmSVW>DiNk#kqjO)RT?Fs5>&cZi0Mc=;w z!tQqyh%AK@SjTP)SyzbEr>(q-IZwc0jLzYQC}^UMwG&5x5z2f$7*&7cUhTSrPeU>N zhpD?$Wr1kKQ6TwXn{8w+;D4g<9MMMthad%xX=-bbe$i+pqt8ag@dHM18^`rVrTnOf zHd;ytoPoV}>%mKiXmGCI_{I(+FZbp@6Xy4ODWr{W-4vDa26MKrtpY7r4$vF z4R4XD{WS3W!@ApA5OnOwNj2;E<@@N~VK6#kbECzsTPp^vE%-BvdfWtd%#X!$F0!Hi z$z!MiFz{xot*M48&VkLvkN?p{>~=VSwD1hRTm@2~2!G-4p`~!OaV7=L^DuU)XfNh- zRMBZ=+7!Gn1Eqrnl!A5HBrU0xV-`%1Y}|A4#!M{t2v8k4a;W!8FWH*$=jKu?>iE7uIn!I zo;MmcI*qjtUzCfBdQZ>Wy7!&In5%SD>ByqL{mBf-FD4!|3TK0kt(j<1rT|2UzJx|H zxezqb-bqJTk8Rld_En#g>&G|`o(ydKMcVZ>vQyyhqGNR9uI51{cFcSWI+n=Vp_xEb z8-E5Q%E6INlb&U;us~H3+}-UUEDo-&v&#nq4MzL=3GiR64LYjZv0JQ7Q)ZY$oZI2? zAcakI#G89VN1$X?V0vwT3Q!C1B!~5uzM&(1F%x;*Rb>I8C#WR4;Sn>!`&k00hM%>ry<=H` zI@9_A>;#ZIh?0$?>U;HVM8-Np#;Ct+6?9mzR_-zcd6kiee(Bm5XG?K9eS(7eotYt) zriL^1Yz|z_riYTxQtS~!7L>sZWuCeVall?UJLp!xC!dE+RaEG9KeQyv4aLxRcjQ&jn8o~w!@-~j8DedNvW1I+0LgkIKD?D ztfQt-w%v`kM)GDYL#AXzmou1Y89{O0Pfr zXE0n=7j!@8PxB*dHjOqEg;jAIz~fdj@#3XZj`Js!)1F0SDmL}MDH^7!Q%0H*;@z3Y z-PDrZ8VCR^PE>@w>gzHxdgQC0SF5G5mN$-frV#T&F4aiYmVMexZ_hs4ipJEteA={u zo@aLPof{36f@5oBu-*xd-o@|X39H{w4xto)AJG#JIsDVP5xavk1SRd~fJ|mtH%P}k zl204oD(2Z#;4gzbw_|)Wde(OjgB{C3@i#kLk~X!&n2Js_MMu?O0W>8=T{+`I89dXh z1}Ii2@O_8=vYuyVidqG`)!|oH(}P6SN$W^DkO!7iK;@HwnbbY*mD2&i+8%VeCF9J# z^gm_?%0_~mjwSZ{2js{;5#iF$o0PHf^F^~`L8>uhM?K`tao)cw8l0RRLvW#wR|mX`S6`89-mf^b;#fC8 zgjbM5UxyyI25iP5v(nz(jH&*iolT}2)5qsb(&cZ=e6mG z`5Fb)p4|Oe)^a6K=_czSz*GN9vIj)pk_=vRALgtGj!jGue75Rv)BZHf&E{omKispnD+&3?x> zU>7Z(<{GAU5wMO8*Yov9RJ0(&#!ZeUGu99Y7ebULj#vXpzYX-)~8hEf2fD96f zY2EHJ!*q(MPNs2zPd3ZxKnE~*$v-KXkbKIjtFCGFZD?Bf%i8o=8d^)6A$7tP;_N5u zpD_*|x&~i%>SB|#MVmA7NS!8`^a&a(%Ufp=(sb;w%sS|NDQFw{6E0{rk$ZPeyxxEO z_#FlH0`9Ce2s$KnfB2H+O}`f(xi&PdIp$+n0Ys3|x#;=5n_4SQ^8j#Sp=ZNhim7Uk z7?J6sU^^l_d@UK5zC=$b-S23A)fMETLku8;cLH@xBr0uA+TFlUEvGSLP~67hA?vcr zIheI4Xazbz9!MLDz0cRrR?^N)fH<*G#MTOHM>J8-_c$&XFJ=kc{?T7d{*j8Lt({kX zqielZUupsG?kc*yeMZW>=RWCB_wW8R<4hby#+|K+<-8b`i64TF$H?&R=ferYFgG=A z2xN_RTiFZ44^7m`2KWSeH25jO?*;`hUc3suSJ-1%6R;$8@!{|jrjyP>9&92aG@Y8P z?}F$LqWD$BvLgKdX2djYtT1Fr(QFx{a^4czyvn#R61S;vXi)IPJ!9qsLWvB|bXiKi zH@Y{WI2i*=6}9Pq)J@8>-zh{_&=65&-|FYp2Kd>)NltBq95p&yIj>qLR8G>EO9^v0 zTVGQLICTcj_p5^%=pw|(V0S4~9h>gu9z*aS%Wm><0Ec!G$+>Qa?#qS>W5*h4NWPsU zmmuwLv+;vK1>{ZgfO^e{V_?MlkeFx$2d@^$)YNQvWX%Wns=?`ZoaQoTNP2WCZMU*%+Ajg4lSijQ^UGXhzo^ZxsxlSws)KDx%< za(~9DF|!T?MeoDZJl)Vg`q7X+;r?pBS}!1D>?!A+4Y5vKQM6WJlQWyb0qXrZ`e#w^ z9A}%%^wfVdtkd3sN&@hX3Mk?}M(buX1*Lg@$R=7`ZAd;T}Or2ln>BK%OsDiVWO?zzigD=(=-}J`_MYW_E6=Yrn+o7^uV8@ zn_J74xzw^8be#?KA8h7PZyci8sSc8XTiOGayG*7uZT@(le|IW0zN43u^zl0s$>EVP zohSZkvVhFGUg>Kte{Yfw`#PSHHf=MZ2;+!+?q8{bI5k$VXhVVv1Etl&5vlA3ESwRC zs7n;$o0=kMeryBY3*7m>UIZ3S5PToN=e-qpUsy(;1ZIS{v=7N>5V8hg!zcCQy(n~P z6aWsv>&Uj0gd(pOJz^;-cfS4Em*!s>BX4pxQ_7ffW-3(X+4AltBeLF|#sV_$+quK~rse*FvhnQVZ<>9H z=ZkDpv`h^HRt{wlS4sMihLMrC0&}&7Ps5F)K2a-uWq!-~^#-OT!-))AG$oY#e$KZs z$XXm3yK$1VIQ(qJJX^ZSW60BLFo54d8|<#9s#i&y=(g?&04sFfxlh*T=c>UdeS{jh zju!Lxyz51wEAUQ1<4sVag3o%EMo`>+7qajCUOR`@`U$hI-jV@ZhP~L?(#Oq@!NKF~ z;jE(}$LJ2|b=AF^4W%dhT>3DMvqJVAYZ+sF+D8V1=%^(Dg}05F_U%S$AZ)IlfpaNo z=74m(i?Y7DKi;~uA#!I+CUPCTXb9?D*7haIvPzZPwl0^f(N(8_{%DUqQ@6_9#bo*t4!7X*=N7RK4Ek(;2eC z0J7`-nbd>F9nhYi4IrusPR{A$t|N;QJ-3I?nw3*`PDZDsa~*5)6CWTDCP1paOGlO5 z#carYLbgLD8SY^F@!ozm{BQwY(v#T)2D*~l4Gvd76Wb89M;GO5z38>hve7LJ;Q_Z< zADxrv_m2L3nAlNNpfIX75PQ395hp+Rj3evT8A0PShkc{~0RC6(8I)?I>}S(ioqYsw z=hFPZv$#|EUFd?vEELT(89c|n&`!cWGn3SNhjl{@=x|O9t#dW&dM2Brap|Pqx8t+4 zZ?w-Y`^;0Fv-|NyfXeLn8Tmr`oi4@PVZy6Pe+p*9G znh^vd;?-JQ#$A^cxpnKlz9s@vgA5ubgIVeFt%W_W+b4?{HI%i0O31-(~swh?S7B0^P6U@odg*c7DlY#m>p%lXx^ zX$=yfO3LYU0*{6LPJ)H0S>m+`QC7mbRb^xw4Yc`II(+rzL%UGpvmT8nKnc1#3T-MZ zHyjeEF3g;h_FSR73-W6WkPW-&Bu58P*oz4m3+iPv7&2gS7`-v}i)Rb~pHMTL1xJ1^ucUpSc z_U8Xf4i7+10BG*2%U?W~Ls)=n&RT2vRU5=273k%CGwy93xQAau+DEvD!N$Vm@gk%3 zG-YM|ypP0#S>5d(zt;l~#|3<9bpSy-(P&D@8pB5gry*{jBe1_bTN=-YEgCOeR;S^V zK%xch`vHi}8ax>%Qkudnj8A`*~eN4U9IX0_|A$z5r~F&>N;AM>tvX zI`LqpMVE%E;v!0^PeG{G@%^2e08iz1D7Y@-6yT=8-V0s!C-?asd!Ib~y4auKUnZO- zJPVE$UYbKe7lG1#k6m=@Qm}VN=~KnN%&Y|?Fj&bCzJE5&p#hg@87AdNgH`nad#z~Y z&RdGii~R$8UF}Hq`&&SMh2r$DBdW}c;czH|#gE1#jI#m2LJb`pphQ=^ZtNj20i(C7 z$ULc#0dAb_Ex8&qJ0c~fz=2xqu9g#Y{bHxUxcS?PV&Gh=fKldu*G)Yz@O8@`Xg1MC zt_DF?(Iukj0)C(@e)XEvhyVtfhRPHHr2IM0>ret+A7yCDqFOrD6k4~+jhZ%JQAGNr z7)BS=;{eE=(OUoDLRD92RBmu|M12`Wz5n^J;T8*w5#W}t(Fg)L7|T!??xs#-ko9%k zPw%>}P}DIo6mdYaPZV!AAE;;C!%MH{ycs&={4_M7P`1rXlkH)1y`z3zhZEfTROHT! zPmbqa1Y^<6xD1nsdG2(_fd1EtO25(ZvezqNdL*mw*c1%7niMXQCPg? z@pI(J`Kkp#eFUZjkBJ@Yb}G`4Rpb*OOSUE5rEUJzTZt#`f+t zpTvJ@2ON6b_`nUuezu-acR=W;UraPJir_G#WUVs4*MDkV=*ov6S+;zGWf6fj)SfU3?Xp!(6GNTv)-}#^&STU@0pGeW z*+3v;5tOJY#=G@ET>)+zHpdvv9R&D=Stn}Dh(jNXibYvAW^~pM0#VX~x$gZA_ht{& z;j_D&X?R3uIRmLJxsD0kGA2Q(y~wb=;$_ z(NOU6$@?T3r)({DQ?QQgppFV&KHH(1UliWux{+Hs9Fr_Ht@7pd8t;^Zw#7Wjo*L~zHGGvK44aJZ(Q>P>sl%(_Uw0= zdJxJ-!gf!$GqZNSQ%*&oex<$zyrV<#1CK7y)RoBuR9 z$|p@7@)G6Hb`~ThXT+pjw_RE%9qc}~IX`v!JRMTA1Dnx-b{i_TI`X}o0Z%;-%H{-; z_P?KpoameoXvf|?j_>Ob#fWf{D%RA!RhQ*W)qTv{Fw3Q2j}fc4{Uf#46Si{p9GHFf z#e1JsS8hvd8#G@G9j#d%hxab*y3Q1ikR2nYuyNAzC<`bt=I5&m@seZu+rR$DxBi$p z9#G1N^6&Wt&K7;>81oKL<^L{YzY?HIi!3kky7)qFs^3A2WOm%C`i=d)-5KfMwg*hc z`j?^0%@>sQHUjHc8qd$V>|43q^$z<&zM&p2z|DmL{aJ=Gs|((5oP2%J2>!%+cb6t3 zuh5Ecbax};#+)Ib_%q=Y*N14h;DgP$E#%4>8)yroQ^{( z>QwviY!HR@a^2Npng)J%zbc?2S_K>(bpk37RC2d#IR32jur15M#t!DZ2mgTF)EpP> z|D#$ASH_6-MNRuK$xzZTv8&TAkY21ss;@5t6%%dZquRBzMX(}%rMGZj>b>@zULS~> zZl3n{y#!DFUnaV3WoKPL2=BN%(_mf%_sB4-W_N7V-ob%I!-m}vD%(kU^5?$a{~Lhg ze14V!TQ$4-2l&-Bb3xQybVT!VX#O$`gmfB=i^h7t-cOTsB}+}es^HJ3b?bYRqry7II-rA%pl58I!l>ywhHZl~=nX&$ zysCbn-th+){=^=!U9yqhi#tZjTcTUzGCt~hmL7pK@`n5T_(}HB7ti?7`VzjW8s9+Y zZ2h}ulZmDefFfP$N<6l6CB{et*Xopdm)^RRrQtnSm$A|%)fII&D!FY2Q&NAk<7ssP zTQPh5ZI7!X-2Pqvw1$-nHWsy+IXXhJZOHO@QxFX{r_P$43pIzYf=y(;1cH1;X^4Hn(SgTm;$Klq201Pu!w3b5o8!p?4A8dVh4a! zWQz9eoUF_*en)yRX%nNH*6h72b3`VTlP(G2Q)WS<8KQL-veEAxtpeIK?lnH&%dY(d zPEjCHzpnu9)@Ae};m0wlka|~ifG)e%fpy5dhge0pmlKTRAbL3rR><9$`lw`;G9saE^KD=&7RZ;!VT(D+L@I z2M}>_vk?8MR?lUi5uLxnZ0Lbl3)1kH5{o9DclEk20pskS((9tOP@#KRb7~22hVT5O zk+f0l<;*D}jc;fWTmkKpLuV#tQp)8pn&^z$tT1JwG@D3vMT6RgOZy#1p!e+TvZL-& zrl?S414iTTh);`WGCM|5m2-^A&$z58pw9*uaFTIZQ_h#73f#XmrOn0Bm(galKVza} zOoc)|lEED+$ehA+ph*>7z8xOF^K-qG@W>xNy}8{M+-d+&L?hYSoCfN#i@T@$iimQzcfJU8JMzSz zKMSV&-;AohP?PivxC5pvTnI$yUNVE#@(P)Svc;a@KdwWG>&v78#}vP-iAQJcOkhri zC#M))w2B?=tKbbA>(JOs2D+7UN93*FUGJaA564gtm%<1bkbX2YHyNxlk$6PjjyOJs~pDRNU;l zui6)lpI}hQrp^Sx5Xo)=c#Fc+!>AcZ@N2&2*>-34XQ=fvKQ0jkX2(RBRox-69i$i7 zikL?ZIp@=Zfg8II3)&~=hk|=vn$f==eY!*c^$GqyXeFyNh~HO)Yu$K zjXsV{C}fed+a&kGVzr)6`}-f<%V^93mE|w%ZwAY8h8--G4kkvK*OSf50|#Rd#(~oB zZ71pDpTBD}OOQhfEtoaY0~WJNy9?Aigh_kH4aMg@8S$dxP?r_)hI!E;WET~|4{Iku zsZ}bC;7o^AAb^n@0}zMIPx`ayXd7GB8g;l5@IV%e={7{JobMnn(`dN&mq`V4L_(5Z zAJC9yYCg~hl;+*xgDLh_y12#L`|ToKIY;@%NRQVg!2YoX`fin*zx2iQg_I(Kijy_K z<>Y>t+vyBd^eJ!abm)<06iutrrq$;A>rj~d`pww}c{mzD1kRE#HkM;pO`(QeR<4#?`UE?JJsG1g^HFv zOrQZ+pZ`&{K#Z!M#&oNSot}@hvmHF-6H(c@M@->z77C`;8-f6NO^UZ>jz|IEpX<6P z_eU2bJJ0#i21B%iWpYBlNV(*nx)yj|GNXpmTNa|)9?y>Ewm;e^R#&}?27?h3)w_jV zq*A0Qn<8ho>!G;ED}T`Ol&pw0!`Tx0KkAptF1NE~sGaNjmBpxJwytp2_!#fPDBeT9 z{BTBE?_H$FaiVw|J~lXE6w_RQUv)$P4+2?I@+Xz}a&KVcasd2lgSlGnk^LJ(FmxOo z|HGQvY05J2xf&wM7llDv%!)cKEDg5akDv>x5t)3icHJM=7H8LmY(3>_4x@;pSqD{$ z;xmqt-aS-L*)8s+qvasseW#5s4eY*O-?CMWKnO0TqnPo1uEQDAJ$ZG26cz5EoGTNS z*0YINzXAX4;<|%+SsCsFK&9#spS?EYUB{kqB*g`=ZoDC|F`|(2{`EUc7M+fbYF4p# z!KMfbv|!xA!)8mpZ6LB^AEu6T$bivm`J0{DOa%Bi!oq$v*h|V>)6kr{Fz5^cECIVS z_~W7iV_(pM-TP;IpA;-y0K{uaG(olL19qoF6<`SLY_WZs8V~?WE@F<)0)|272*XO1 z6@a|E_H;W`{?+%lzS;=sre0xCp`Ic$Fse=>tVlx6f-9qqk-R23BVcTJ9VHL91FZ`cMhxfQ^zyt zm}rl5|9P|X9xME*dl-Dl(c#1c1lb5SsbiVW#}8X}83qLF4)fnBTVmFw5P?DA#_p}v zMKZqxd8})XY~IM=yfqrdSDZVKAadpe09}|bP{ulf3IMFfv2N?j+7UYw?_YOmirFpadvNG*xvTa4{@T)4 z*cw>PQp5pIP%0aYt4kscbU83<9SVfbf5}gFFuYyvI_vk2GEO#x=S9QU4vI3>396q- z?fVHZf?2l*?Cyv%kTnByD8MeRPaN{*8Bh z3a({)hPJ8CPs)IHvdofZXH=Hpnv@rib=X_>A_JwyzxR;99so z6{*9{U-p_EaC>PQK)WLcE693TIho^g4d?<$#?2wi;}GhTqMIG4rhDmLF9tK)p|wMf z31l-&&48i<3jp$M!%?qbeKYV-H8Ki7ffXgh07342KDoU+K?0Sj(K_M(XQ4|WrEbgonD&UO1tN5PhM`6&Gxs(vO*zM`Rb3vyE zhFTU)IUWQ_Wyx6<*q?PMNhw5#N&lKDa*GMWy03j1zk$_a#zpkB>8$g&NWUwUNXJDV zl2p6S*&GH%Ri1peCFc(w#%eloEW6hiqkH;1aAK8_^9F{C0)EsrsEucmtGTIoC0xvG z?E|joyiqrkM=3+W+lRt*@BK*{k*T?n@GyrEpY2+7=5X~C^HcAJe`2w4VVzp_1>e`ObJf+3c z+pU$T3}4Z*+z9%q9VDkAnH#EzvMSNt#LS#Pz~YE(cj55E#NQUc^S-yMpNT!C&T|2{ z0iV-$S$cuym-LO6-I({+b5jv`(-25A1b*I2zAJlJJ8R5(TRBiQRbIzU=hoW!#DgNh zugA3%Q0IH{m$wl+hZ4q8G!YTcmpX>RoK8LU$!zCj@s|yVp0@1HU{;+v?ZMNUV(}s` zjHWxOW(21bY_Wshc-TAh4yrYEZLH4mbCNG+!1h{}P4fbEGUc6#&Q6OC%ug%(8aRXN zINz7gn67vA=5z!wtQdMOb|VDF5E1ucE#aYyt!gv8sK9X)+)tAc0WD=G%|!R^K;G7L z8k9;$0cto~e&!tra{ZJof*psPD?kehJ%v`fPc|U|a6#+g-%Yo5;{`P9Xqr^YA%o3^ zTLAlff{r@+g_U+j-Kj>R!pYXge;QLfiM+~h!{5k5%>;gV)V zaAC-_-KM(89@^UPbI_2rSc}71F&mm+Qa{p~%SkKI6ebaMPaUpys?a;4rX~>&Q?5+yl$Q+SEq>~$ zqzwg~yV$sXPlcs4?C*c^qj#hSY3%e95G?|qq)~`!kN|0UqJW&M!|%P3j^+IsH`l5I z>PuZf_6yOZGCt@a*R37d^$0X0wmjr>{qb)A$W*5j^5m=d@d=8c0Hgpr>#vMXC<;5j zzj5v9-Cy5N*c84ag2${-PkP>hc~COk;jm6IVI6CoA3pcdLeO1^Qdur2svaO*^on;F zl1*8lQ;a+I?9W$yPtuT=Y(f6e!jPEO(qsC!O1JxiC&46VzR(v6mS)vBQ6g>U3E zL`4~U=fj`Y15x)r$A1tpU*g~@BFOAn-qvv>t__*BJU$pRKs#Bf(oXS=H zA>X0a*AAG?b9WPj>J$Zl?A?0Ux!!xb{i84q0A&n|0Il=c&x*b;fxgsBT{zdwkw?}b zbwevUUrC@-ZO-jauH(bhfd>&=bxqhn!aor*t&O@tq;;Uvj!F8JWqOkxD;J?v-zPz?-74a{a1fPU+P z1({8FLp1;U+%GqRr!_i>^|`7&E13w^Aaq@(FJ`msa0ayBx1F=8 z`W#a9U)7HdnBLC|1`rfzlv9HC?o&%72h;1m8nOq>fNmQM#>YDy!yD24PP>4Ne&jA0C3cqpLMM5Uv)i|0$?$6 zrUpQ+dT?MLG}8j6P3v39K-eLN#3Idr=!4GDkj_jJ_?829x*vJSAgxXT8ohiO0rOF4 z-Vq!)HUjQg1Sn;8Wh(|Jm$e*)qAc)p#UI>{yVG7~H5gmA?u%44B|outa&0xh3@vB{ z2;G`j+I(a`WG|V9`zUaOE&XDRjy9Q~;PAGgbO9RbfCEl~4jw$$>oBHnU5KfOb{%SP zk5^xaX+6$tOzn%m0Nm7Bl@oGVx1p?c^Rsv%CSrp3MVBLXeyeXh+TogRP~=^+*&i8Qcq4Rh2PKr`&&~o8&A;>Box7oCjbW_6*XQl|*R$Xvr3xUE2R`!3hj;?-> zop(IB_YVR)JIOgK7d*O_&uXtJR9Gi&3Txtse(&vN#3KY-o1)eE~I{KWMCIupmWucjgeyBsc+_>j^_EX*r1bWTKTQHBRuTiuD0YfIB`!}H)hFi6YYAsMyf_m0g%V>z6y#_cJ^1RTh+5cKe~9a=9GZ5=}kP7 z!9TL4luHFYv?r!HE6nZ(WMt8U@(#+d;m9Fxh=4q+t};~M-%k1B(dlgU-p}59%wEyP zasc*j>>w&w-zCUp)#aJMDewF`fR>4kvFOk;E2HdxK%TK>@&EJnFWQYIIkF%MxRa71 zv%0$HKK?hp_}+Dh)~G5n6cV}V54>RjcqcTl5~sdOSCnq0Gm$!0 z9U++sscfmSe#YAwgd{>RP4&4jV0zg~&gbZyIyfTB zM)F&HDISoVx%%3r&*_{f=mFK#85Zd;GwA>XPjGUqPw{@eR9P9^&b4qo`(sxk17skd zL8~ZxU>qGHjr?1D;L6_NXULRxV0Dmw&?QfHh2%}JFAnIWv!$cX5zw&96r}6At*4`Y zQP!OSYnLRaZKMO>+2Tz6kf)FnLK4+5a@hcSUhwP=Xsv3yjP|)7I=ceC-ZbYXIdKFn zlyPy`fpR=D*qdj0!QLT{>JER;T8e@|BjiDIt4_^(PEfLzZkd9zBM6vC|n9(c`sd;71SdFb1-&kk4v5v8YLGN}A~KBIIQu~3`pR@h)J z6zd_v9B7r8LX$+UrU3M&*M^{kj2n5&!V&VYEm~VHx2XonBSliv(}Z0a8>d725WC_k5ylptS-j#>&rp08>D$zeB3hVLbU-R(RF@ zzUz%OCuiCl(V{(EbuA3b1=$RCgn6Fz{O^peq3G}9MLDI|CE>dahZ@ES!8@|q0}KWb zJU&}lxy7hV&az5|+GnRW)!#6_GIIY$C2%o<{Cs`3Hvi^&KS20HZLATs;3_l9(h<~U ziladIzQOoR;~tT%k?;nF1+|`=je78`mRI;FBfe3F#-*^!#3+FcgMGBIV2GPy8~Y6YHZ*@>ZR3;g7Ng=|%u#m)d2=s; zg^>iz`Wo95uXnEb`B^Eawz2$9{^dx4jQV{bBA#?`C!}*9x9;?A)hUXy29W4TzE-1| zC>=T|k9NnQFBp+yX`;EW)A z8^$2qvTiAxp(Gvbv;4t872vodTb2t609sLJyVApZ&!PA3J%5pwr3m5F>~4d3?tFc= z2q#1tGV$9qs}EW3dwxC|0R;;6v$%h9=GTqRU)LEy7ZGy473i)@;qYCo1vMtlj&&Vq z1m5A2QDUUO)LEZaj$3BxICE{^VLCm6Ww|Lxg}Fzl9ZVg%5eExM0kwqBc|rEkd@wHR z=v(sG)>EU91;>>;9oUTG!idLO=s2ZJx{`iy7n?qw^z)Q+b7y#&RV=K=F_$N^U9N)v zPn_irLOLSkm^qYD#mpMQ!2PzW0}3_ek->7SD6j%OcF?fXSw@ZECjlfIsqkhsqc3Zc zHjnSU{Pq0xr&T6i&UDi04z@nmd;4XZf<{RXx1{M?MOL+oPf-ZB`uGB#8 z5oJhXLpu|~S$WiDVKVF#JfqAuI%nAhO+lN*K#Ar3ASutfi?HXquB2WZFKK1;Txq;x+sLsT{ zOzr$tvzGOgJZogMZg!E^ob}=D9O}H~2)6^2`$*ZfGrMn1_b+w{pR7wvgA>4>xLlYwWAoH5D7S#QVQK`+W`sUCLgmb5l~50icS&z~t* z{lrHajTCj|8r5;B=eFpf6k?1Z<(5;yaV6m-unPsuc^K&Kbhg9P;`SfFzcCmVj+-&l zb3{_IBOaNphzggJnY}V7_W;Sa@<;oHr+4hgNW}paNCWWA&XjnOuez8& z>I@k8Fl9vA0cMtjS**C;Oex9g;zb6~nFgbar2vay&-XB5uoYQg|A=bC!6`vmsagp^ zv+lU2ESC26Rfd$ha;0Eo)MZXa!u{-qawnsc=>%^)BTVMju!2Fs@qH-A;9Y%~x@kG@ zcQLXu=N5wRTx+xtP5h8~&JSimV610A**iMt6%jQn*iyk4kE~waDKdzNh%cV| zmT4?X9vB*pZeq;BI`Q6=_i)0P4Y0qFRT=8?HV~al1N7sdA@Pl+Y$_O-cb43EXDthl ztc08#GgC(-IIa7&4BFVNj#(y19gUl6ha1Rd0XoYz+rq8q+RdW0LeN2!92iBPrkOSD zY-zePX*d;?Yo9b4hG;cO_YKOtpfgr~NAzGw1oMRA=pozfnDO;_-Uv(#=`m(aoKe*d zG;VtTs?U4D&Sa(}c`EE=Ox57o(YO*X)u&W>KZ0P`}Ug{mNIlr=sXxDnL2UMYyyurqS5 z#w2Lg(b)(Szn4q>G}cU0=14P8dmz*Ik`y2BH$rL4Tu zMnuc`y%+@4H(hNQW!E#yU~c`BHo#z~#{~qy?h1>5q?;Ei39?aZ8bs}Az;ij3CiI1D z7uuUH{j{=tplmDCex$Q8U|#Ysd^LT@o;&KA(24OzJ!CKThjZN)$IxX1tP!JeC@1kG z1oD)9J2I;XEH8WQvTPO513#fY7B--EW~MR%$$BLP8V)CWrS-gXMp)I=@@zbsj?k=w zGX1DOF2q&oRyyf^^0e$+I{u|=bRR}Lmb%qt*GOLL9C=nD9>X4MPuSo*jQl;i z8D&J445%Wg#t6m>b5tGAZ$h9u6-g-#niEhe!9i_`mV{tjx!GTI0%q;G3a%K5@52=F z(kO8em{%0i3(ty6#4y@B1%?KFdNEOchCRyQQrlHT0YJFjy{?5PqJp1dK}6}CA}+f@ z^(Eqd*tT*znIlSQRK$!I{qmK<4$fUAAQ%bA%z?F&CP&OU>D;dWu!h+wg0k9+ufvWy z!(CHWan5`elmKiU)J1qXWK5N+b#m4ANJu&G!0ZH==ElxeiA=Kb}t0Y;R6|2DZDS0@J^9Ge>?&5H}Mi^1hAV_0x4`2*%RFnQpRD1R`9uH!W$P% zKn7_#RYxrVqk18j!I3$Mdf%NH;YaONf(F3}D5IABfMpxAk0gF>LdYqVyjV}L^@DdxTzyfDz5EBI-R=An3xrA zS+y1mFrXoMNT&NnNr<1j5wUnhi)9}OS$ww7fnOUe9)Glgbx_9 zJk8u^C@YV@gJ*|dU&vgs&PHcluw3t~sf0%vM$Rmq%g7Y3!?37n3i)bu<%}}eUO`8_ zTJ2NH{LK_~eC6>;9=ubw^j%;;CiPMt9-V1phG`F?&iY3x|9sKpa{vRw{-rODI=@n~ z9ORp?zu_rqaLFKGhD-B7lD>3KTTTN?oBNl6GdQQEpt+z|HTf9h%et0QWK6jl>~2@e zOcC$FfP(Iv&Z8r%grU*~lbP1VE z((-VVltWf4uPL-f-R`>T3Omzj3 zNLNnXp71EWUb>I(ZKd>vnF4aJbw|dt4O0OBr72M9zwIQw|HscH8<$`O z78!=h8)mcMar`i*@g0{fL!%i+s&AP*GevGw`6aEWzzr$c%rx0m4pkAgpeIQL%QQ;~ zi`TOcaWhn8szOUy2lD=ep|?5&NLRwt90H?SjwXR0MW)`yq?#7s9F`~f)NtFm#`2sb4Ab`MnE1r z9NG{xtc<~Klz<3o==25&SpzQyW{EhM)dMr3azyL1$^sc72sC{YvKoY>I4^6| z9pnxN&FqX?Kkw)Eh5I=)jT8*){7K`3kuWuP!7s;Yq&S7?pdxbvf0(m)Jd=hwvSWBnJ6C$H$&fbCzGs)uc-c@r@06i(wq(3i^N_=W zaOoFgLT}dkdqVs^A7&qzIoLEm=HDibBxgM3!(ttfOa6JSq2W4al_jcrOf+XfQcCZk zej7OR9QcTXGSo@pjH``wlHjAEwv33+<7pwM&)ZNcIx%LA_;Un|IRusvLe;@`%_N;^ zWv*F>jROBJe6B+#O}L&>G9EG?vsy0G1bgtqBz;5AUMWv*=unu4LtUy`1tWxsK^fF_ zjA}Z8;`FyecGJK*?VbF3LdzK3-! zD^V04Z4~A;ubO*j?&X}~48%T8Xst8LV9k3W`@xG2`i|_l-*MOxaqulas~iN$bdI1H zx9Zs0a#8K2j}M7a`z%@GIN1z&7cVSAR&}OUybuhydhI~6uY7BexzkuY35 z`9ql>Ha$V8zjghXEt}Sn<;@?-k>=f#=1Jv8_f9;wbcnrND!xT2`(w-TNk#|i=#y~>!; z0xlkc3jWy*Bn{PtA@uHy5Ok*JG;Fi&>=-W_2DVlyTc+$~fI0e^<2y#EutP2PkO-MZZ=yT5J-1#}c&5sgl{7jp~MoSRD350^WXnaxWZNvHOlkXC3`8#==W@$wot+%p(mw zDJgVL5=}DIOM}B*Ln#rp2pU$vFguN^2L+!K)@OZ|CEg9fZP)vSFuro`5BNfqd&Ip< zSx8w6KIk-xAXHYg0Ec4xtfRMj9kX2-S?Ad?(&}vA2|kb^qc5fJnN@N+vlMi?(3&|E zgc9VBUo(>VGdAW>rq_;$U%{UO&hB7TPfbT)(4amR0KM~RjbxyX z%r)MhD|t7ys|REl{JQyKl)>!u7o3Oy$pj)X#G{DBPTu>|CMOo73Wf1a`pGR~@EfQ

s%)OU{@iKD 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

K8u&a2fJMG@2z3QQA{cewYD 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

l7q{j$y-A z^4#w(egttby6BEC=1|9c3sT{!L}(=;%?lXNTJwIH2r)(e3?5{^c~y=s(8u zc>Yrc?~?wNQT~D)c?XW1jpB8y#tmVa!TT2h>!jM57ObFW#+l z8hmVCPRh%Xr~danO_GDSyJpQ@>%S`?Sp1_5epQbE-B_rN_|!8LoRQ8!HV?{%iZ-Cl z7vA&a89$LB(bXT4E0wH;XRo_1mje#K6{O0-69tC!Y{$=Bf?8NvyvveoVyZHm;>|AI zr@qh`TJuIDRAVRgXM{2Fd}j6fsjbWxuuT)_GtXm8gzW=o^C=&F^mKsAC=vAuz0hV*&u>Lnjx^Sk6MQ>++42*zr8@Ifd-NWBTO*z03LN8E=e>u~D~wTbF!oG; zkMZ;CuYdjf@6$tk7>0VYjU+~0L4&nZ;jqzrduX+hn>CB%QL!j8!r;2OaUyUlZ$Njr zDC1xTJ$h@k;4wld0iOr%W_wM9h*7@>1@b&0UT7F=TEq_p8Sr3h^IX!h;-obIm-^&j zWD06p$QV&ffoMnJ`jDLVwJO+k(JL@nFQLQDH9q=aK0mwq>S3rSy_K>4PD>%CacZ`b zp~NmgV*b$c12R&IJ}Lo7e10h-CeToX)Z+lAqtD8E^YMJY9q>2tLIfYsBu0K~}z< zDkLzX#(HmMq{4r;Lrt2w2HM$4;EMcsL*BrL(mZWlpSoY(t|GS1VZC=S}jD3Z2NXffIgiS-~M`2z5P~@8Xg3C<<&S*(7Uwi9Gz^`Ap z9Tfqt3rRV52%8kym+T7nfdQ^I21{+c{N5yueLvBq$9cec!x8y5z7=5VN{6Sttg=Dv z4)S9gpJAO*wemCqsc)QhQ3;!x%ZP3)dlEkgQ)HMcsGx)ID-;l` zY)eOe6+IS@C-*p;=4YHb2je?%LeACVKGKk=C!idD+&nS1E`Vk^L2!0}3PX2-xC>?T zv+u^!-u2Hz|EUCh6FXwcXz9?d)+nRKW#!ShbpjMeR^HBz*96;P7SDE>yUN9RCLxJM zS;#Q$m^Rkh7LYOCdiD8y1^U7=DHMT!4p(E46_zqE6Boj3oS7rxU2l%$oKCJB#hmgz zjb^rk&tR!5ZLYVTW2+v<=v}4ZG3h<3KWdB|bP~UW*UBB`c+5fz-$|$H&<4PAJMam0 z&aqq5OHC9X&jt*pUA~A>gQn4#5PIh1O@o7sWxW@OQL5YW1?bMN#*HRl&xhUJyl)d9 z*TA-bZVD|&k#x+)lDV(TK-sZW$F1)ZT6HU++@~YK`Ayv+`M9)(a)i3Y;vs!4WW=Sn+TF zea=Vpncci!zyA97-?Ka-#6BnL{$``0FwoS;vX##;{$(I4#TX`v4!nhJOfjB?OA&GK zdGvtYRDeKL(V>S?e?g@*K$rixl{HK1)_^UqQPC>YGs|fWG7`JRC}o~HV=)DS8x`Nc zP)z$o?t{u=MuIk#CH*b(Mn&(mcWb1U%b8<3cc#sc@V$Jv z_y~E{T%H5&)rFCc?JOx`wo(9?q5DUMvs_*50E49E0bJ)VsKmfe3ucq0NLd?P0G#kej@%>IU?l}yVzaz^^=#7n zlvR?pqZH1UAO{WKrPb>Ixys4DCL?YV}tOy^Qqr60$>Vg#L%wF*MSUez23TQSJ zai?L+dmb7-O1@NDQ1U=HU1j`6EOjXBMO#)r>|Nw0@2*1>X35@nfAGQy?aWg3apCv^Fzn z;UJbuy+EE*yOR=Kb~rjhlFTw`KDyAFIG8XEz)n;H^$QP{+W9LAPE0>#9>3|(@)@YJ z3TMubDV{VykHK8B@kEVv>0@VZh;z9HZ74Hm(QFFxI2+rHT)dTR!ZL${AT6J2ifAKd z(cyY9W(FDCKzPHK$|HJgfEGON%rPfg;vT6^k{iELWVR#uak1Jj8b-I;J4;th$xJh5fGT4|*$@t*WKUfc>nKfNstVX@Dm!@5 zZdJpo-k-KJig#O&>a{g1ry?*P^e2<_-+xz%3dG_bFEOe2Pg?o;k~AY;JkZK$n$}0=A21&HEH`9HCpQ)AIrg zF;>lF4F(fKHrqmpkuaYU|vfb8!rbYs$`}keDz3#ot|NMvV-4H@ zzyQIs(Myh8baYL(-sf8_JMoiOK*TIGGTF*Xk<}v6LG#Cximdm1D^SA;s zMT^vDxoL9X+8zt@WS>`(oN^9ly8O(Ln}y})G-GSh!pX+q? z42L9*h}rd_E=7`SU(Z*`Z=%i>hSyTE)}@N#k?@|8Uxb%0DPHLZVtX!Qqr1&fU+P@1 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 + + + + + + + + + + + + + + + $ + diff --git a/web/src/App.tsx b/web/src/App.tsx index fb7fa602..240295a8 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -6,7 +6,8 @@ import { TraderDashboardPage } from './pages/TraderDashboardPage' import { AITradersPage } from './components/AITradersPage' import { LoginPage } from './components/LoginPage' -import { RegisterPage } from './components/RegisterPage' +import { SetupPage } from './components/SetupPage' +import { SettingsPage } from './pages/SettingsPage' import { ResetPasswordPage } from './components/ResetPasswordPage' import { CompetitionPage } from './components/CompetitionPage' import { LandingPage } from './pages/LandingPage' @@ -53,7 +54,7 @@ type Page = function App() { const { language, setLanguage } = useLanguage() const { user, token, logout, isLoading } = useAuth() - const { loading: configLoading } = useSystemConfig() + const { config: systemConfig, loading: configLoading } = useSystemConfig() const [route, setRoute] = useState(window.location.pathname) // Debug log @@ -341,12 +342,22 @@ function App() { ) } + // First-time setup: redirect to /setup if system not initialized + if (systemConfig && !systemConfig.initialized && !user) { + return + } + // Handle specific routes regardless of authentication if (route === '/login') { return } - if (route === '/register') { - return + if (route === '/setup') { + // If already initialized, redirect to login + if (systemConfig?.initialized) { + window.location.href = '/login' + return null + } + return } if (route === '/faq') { return ( @@ -376,6 +387,26 @@ function App() { if (route === '/reset-password') { return } + if (route === '/settings') { + if (!user || !token) { + window.location.href = '/login' + return null + } + return ( +

+ ) + } // Data page - publicly accessible with embedded dashboard if (route === '/data') { const dataPageNavigate = (page: Page) => { diff --git a/web/src/components/AITradersPage.tsx b/web/src/components/AITradersPage.tsx index 72dfaf78..422f88d1 100644 --- a/web/src/components/AITradersPage.tsx +++ b/web/src/components/AITradersPage.tsx @@ -16,6 +16,7 @@ import { getModelIcon } from './ModelIcons' import { TraderConfigModal } from './TraderConfigModal' import { DeepVoidBackground } from './DeepVoidBackground' import { ExchangeConfigModal } from './traders/ExchangeConfigModal' +import { TelegramConfigModal } from './traders/TelegramConfigModal' import { PunkAvatar, getTraderAvatar } from './PunkAvatar' import { Bot, @@ -31,6 +32,7 @@ import { ExternalLink, Copy, Check, + MessageCircle, } from 'lucide-react' import { confirmToast } from '../lib/notify' import { toast } from 'sonner' @@ -65,6 +67,22 @@ const BLOCKRUN_MODELS = [ { id: 'minimax-m2.5', name: 'MiniMax M2.5', desc: 'MiniMax · Flagship' }, ] +// Models available through Claw402 (x402 USDC payment protocol) +const CLAW402_MODELS = [ + { id: 'gpt-5.4', name: 'GPT-5.4', provider: 'OpenAI', desc: 'Flagship · Fast', icon: '⚡' }, + { id: 'gpt-5.4-pro', name: 'GPT-5.4 Pro', provider: 'OpenAI', desc: 'Reasoning · Pro', icon: '🧠' }, + { id: 'gpt-5.3', name: 'GPT-5.3', provider: 'OpenAI', desc: 'Balanced', icon: '💡' }, + { id: 'gpt-5-mini', name: 'GPT-5 Mini', provider: 'OpenAI', desc: 'Fast · Cheap', icon: '🚀' }, + { id: 'claude-opus', name: 'Claude Opus', provider: 'Anthropic', desc: 'Flagship · Deep', icon: '🎯' }, + { id: 'deepseek', name: 'DeepSeek V3', provider: 'DeepSeek', desc: 'Best Value', icon: '🔥' }, + { id: 'deepseek-reasoner', name: 'DeepSeek R1', provider: 'DeepSeek', desc: 'Reasoning', icon: '🤔' }, + { id: 'qwen-max', name: 'Qwen Max', provider: 'Alibaba', desc: 'Flagship', icon: '🌟' }, + { id: 'qwen-plus', name: 'Qwen Plus', provider: 'Alibaba', desc: 'Balanced', icon: '✨' }, + { id: 'grok-4.1', name: 'Grok 4.1', provider: 'xAI', desc: 'Flagship', icon: '⚡' }, + { id: 'gemini-3.1-pro', name: 'Gemini 3.1 Pro', provider: 'Google', desc: 'Flagship', icon: '💎' }, + { id: 'kimi-k2.5', name: 'Kimi K2.5', provider: 'Moonshot', desc: 'Balanced', icon: '🌙' }, +] + // AI Provider configuration - default models and API links const AI_PROVIDER_CONFIG: Record(null) const [editingExchange, setEditingExchange] = useState(null) const [editingTrader, setEditingTrader] = useState(null) @@ -874,6 +898,16 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { + + + )} +
- {availableModels.filter(m => !m.provider?.startsWith('blockrun')).map((model) => ( + {availableModels.filter(m => !m.provider?.startsWith('blockrun') && m.provider !== 'claw402').map((model) => ( )} - {/* Step 1: Configure */} - {(currentStep === 1 || editingModelId) && selectedModel && ( + {/* Step 1: Configure — Claw402 Dedicated UI */} + {(currentStep === 1 || editingModelId) && selectedModel && (selectedModel.provider === 'claw402' || selectedModel.id === 'claw402') && ( +
+ {/* Claw402 Hero Header */} +
+
+ Claw402 +
+
+ Claw402 +
+
+ {language === 'zh' + ? '用 USDC 按次付费,支持所有主流 AI 模型' + : 'Pay-per-call with USDC — supports all major AI models'} +
+
+ {['GPT', 'Claude', 'DeepSeek', 'Gemini', 'Grok', 'Qwen', 'Kimi'].map(name => ( + + {name} + + ))} +
+
+ + {/* Step 1: Select AI Model */} +
+ +
+ {language === 'zh' + ? '所有模型通过 Claw402 统一调用,创建后可随时切换' + : 'All models unified via Claw402. Switch anytime after setup.'} +
+
+ {CLAW402_MODELS.map((m) => { + const isSelected = (modelName || 'deepseek') === m.id + return ( + + ) + })} +
+
+ + {/* Step 2: Wallet Setup */} +
+ + +
+
+ {language === 'zh' + ? '💡 Claw402 使用 Base 链上的 USDC 付费,你需要一个 EVM 钱包' + : '💡 Claw402 uses USDC on Base chain. You need an EVM wallet.'} +
+
+
+ + {language === 'zh' + ? '可以用 MetaMask、Rabby 等钱包导出私钥' + : 'Export private key from MetaMask, Rabby, etc.'} +
+
+ + {language === 'zh' + ? '建议新建一个专用钱包,充入少量 USDC 即可' + : 'Recommended: create a dedicated wallet with a small USDC balance'} +
+
+
+ +
+
+ {language === 'zh' ? '钱包私钥(Base 链 EVM)' : 'Wallet Private Key (Base Chain EVM)'} +
+ setApiKey(e.target.value)} + placeholder="0x..." + className="w-full px-4 py-3 rounded-xl font-mono text-sm" + style={{ background: '#0B0E11', border: '1px solid #2B3139', color: '#EAECEF' }} + required + /> +
+ 🔒 + + {language === 'zh' + ? '私钥仅在本地签名使用,不会上传或发送交易。无需 ETH,无 Gas 费用。' + : 'Private key is only used locally for signing. Never uploaded. No ETH or gas needed.'} + +
+
+
+ + {/* USDC Recharge Guide */} +
+
+ 💰 {language === 'zh' ? '如何充值 USDC' : 'How to Fund USDC'} +
+
+
+ 1. + {language === 'zh' ? '从交易所(Binance / OKX / Coinbase)提 USDC 到你的钱包地址' : 'Withdraw USDC from exchange (Binance/OKX/Coinbase) to your wallet'} +
+
+ 2. + {language === 'zh' ? '选择 Base 网络(手续费极低)' : 'Select Base network (very low fees)'} +
+
+ 3. + {language === 'zh' ? '充入 $5-10 USDC 即可使用很长时间(约 $0.003/次调用)' : '$5-10 USDC lasts a long time (~$0.003/call)'} +
+
+
+ + {/* Buttons */} +
+ + +
+
+ )} + + {/* Step 1: Configure — Standard Providers (non-claw402) */} + {(currentStep === 1 || editingModelId) && selectedModel && selectedModel.provider !== 'claw402' && selectedModel.id !== 'claw402' && (
{/* Selected Model Header */}
diff --git a/web/src/components/HeaderBar.tsx b/web/src/components/HeaderBar.tsx index bc7ebdd6..b5ef43f7 100644 --- a/web/src/components/HeaderBar.tsx +++ b/web/src/components/HeaderBar.tsx @@ -1,9 +1,8 @@ import { useState, useEffect, useRef } from 'react' import { useNavigate } from 'react-router-dom' import { motion, AnimatePresence } from 'framer-motion' -import { Menu, X, ChevronDown } from 'lucide-react' +import { Menu, X, ChevronDown, Settings } from 'lucide-react' import { t, type Language } from '../i18n/translations' -import { useSystemConfig } from '../hooks/useSystemConfig' import { OFFICIAL_LINKS } from '../constants/branding' type Page = @@ -49,9 +48,6 @@ export default function HeaderBar({ const [userDropdownOpen, setUserDropdownOpen] = useState(false) const dropdownRef = useRef(null) const userDropdownRef = useRef(null) - const { config: systemConfig } = useSystemConfig() - const registrationEnabled = systemConfig?.registration_enabled !== false - // Close dropdown when clicking outside useEffect(() => { function handleClickOutside(event: MouseEvent) { @@ -214,6 +210,16 @@ export default function HeaderBar({ {user.email}
+ {onLogout && (
- - - {/* Terminal Header */} -
-
-
-
- NoFx Logo -
-
-

- SYSTEM ACCESS -

-

- Authentication Protocol v3.0 -

-
- - {/* Terminal Output / Form Container */} -
-
- - {/* Window Bar */} -
-
-
window.location.href = '/'} - title="Close / Return Home" - >
-
-
-
-
- login.exe + {/* Logo + Title */} +
+
+
+
+ NOFX +
+

Welcome back

+

Sign in to your account

-
- {/* Status Output */} -
-
- - Initiating handshake... -
-
- - Target: NOFX CORE HUB -
-
- - Status: AWAITING CREDENTIALS -
-
+ {/* Card */} +
+ - {adminMode ? ( - -
- + {/* Email */} +
+ + setEmail(e.target.value)} + className="w-full bg-zinc-950/80 border border-zinc-700/80 rounded-xl px-4 py-3 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" + placeholder="you@example.com" + required + autoFocus + /> +
+ + {/* Password */} +
+
+ + +
+
setAdminPassword(e.target.value)} - className="w-full bg-black/50 border border-zinc-700 rounded px-4 py-3 text-sm focus:border-nofx-gold focus:ring-1 focus:ring-nofx-gold/50 outline-none transition-all placeholder-zinc-700 text-white font-mono" - placeholder="ENTER_ROOT_PASSWORD" + type={showPassword ? 'text' : 'password'} + value={password} + onChange={(e) => setPassword(e.target.value)} + className="w-full bg-zinc-950/80 border border-zinc-700/80 rounded-xl px-4 py-3 pr-11 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" + placeholder="••••••••" required /> +
+
- {error && ( -
- [ERROR]: {error} -
- )} + {/* Error */} + {error && ( +

+ {error} +

+ )} - - - ) : ( -
-
-
- - setEmail(e.target.value)} - className="w-full bg-black/50 border border-zinc-700 rounded px-4 py-3 text-sm focus:border-nofx-gold focus:ring-1 focus:ring-nofx-gold/50 outline-none transition-all placeholder-zinc-700 text-white font-mono" - placeholder="user@nofx.os" - required - /> -
- -
-
- -
- -
- setPassword(e.target.value)} - className="w-full bg-black/50 border border-zinc-700 rounded px-4 py-3 text-sm focus:border-nofx-gold focus:ring-1 focus:ring-nofx-gold/50 outline-none transition-all placeholder-zinc-700 text-white font-mono pr-10" - placeholder="••••••••••••" - required - /> - -
-
- -
-
-
- - {error && ( -
- {error} -
- )} - - -
- )} -
- - {/* Terminal Footer Info */} -
-
SECURE_CONNECTION: ENCRYPTED
-
{new Date().toISOString().split('T')[0]}
-
-
- - {/* Register Link */} - {!adminMode && registrationEnabled && ( -
-

- NEW_USER_DETECTED?{' '} + {/* Submit */} -

- +
- )} + +
) diff --git a/web/src/components/ModelIcons.tsx b/web/src/components/ModelIcons.tsx index 42721810..e51a3e7e 100644 --- a/web/src/components/ModelIcons.tsx +++ b/web/src/components/ModelIcons.tsx @@ -16,6 +16,7 @@ const MODEL_COLORS: Record = { minimax: '#E45735', 'blockrun-base': '#2563EB', 'blockrun-sol': '#9945FF', + claw402: '#7C3AED', } // 获取AI模型图标的函数 @@ -54,6 +55,9 @@ export const getModelIcon = (modelType: string, props: IconProps = {}) => { case 'blockrun-sol': iconPath = '/icons/blockrun.svg' break + case 'claw402': + iconPath = '/icons/claw402.png' + break default: return null } diff --git a/web/src/components/RegisterPage.tsx b/web/src/components/RegisterPage.tsx index 55182bac..7485501b 100644 --- a/web/src/components/RegisterPage.tsx +++ b/web/src/components/RegisterPage.tsx @@ -30,7 +30,7 @@ export function RegisterPage() { getSystemConfig() .then((config) => { setBetaMode(config.beta_mode || false) - setRegistrationEnabled(config.registration_enabled !== false) + setRegistrationEnabled(config.initialized === false) }) .catch((err) => { console.error('Failed to fetch system config:', err) diff --git a/web/src/components/SetupPage.tsx b/web/src/components/SetupPage.tsx new file mode 100644 index 00000000..5ad87df7 --- /dev/null +++ b/web/src/components/SetupPage.tsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react' +import { Eye, EyeOff } from 'lucide-react' +import { useAuth } from '../contexts/AuthContext' +import { DeepVoidBackground } from './DeepVoidBackground' +import { invalidateSystemConfig } from '../lib/config' + +export function SetupPage() { + const { register } = useAuth() + const [email, setEmail] = useState('') + const [password, setPassword] = useState('') + const [showPassword, setShowPassword] = useState(false) + const [error, setError] = useState('') + const [loading, setLoading] = useState(false) + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault() + setError('') + if (password.length < 8) { + setError('Password must be at least 8 characters') + return + } + setLoading(true) + const result = await register(email, password) + setLoading(false) + if (result.success) { + invalidateSystemConfig() + window.location.href = '/traders' + } else { + setError(result.message || 'Setup failed, please try again') + } + } + + return ( + +
+
+ + {/* Logo + Title */} +
+
+
+
+ NOFX +
+
+

Welcome to NOFX

+

Create your account to get started

+
+ + {/* Card */} +
+
+ + {/* Email */} +
+ + setEmail(e.target.value)} + className="w-full bg-zinc-950/80 border border-zinc-700/80 rounded-xl px-4 py-3 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" + placeholder="you@example.com" + required + autoFocus + /> +
+ + {/* Password */} +
+ +
+ setPassword(e.target.value)} + className="w-full bg-zinc-950/80 border border-zinc-700/80 rounded-xl px-4 py-3 pr-11 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" + placeholder="At least 8 characters" + required + /> + +
+
+ + {/* Error */} + {error && ( +

+ {error} +

+ )} + + {/* Submit */} + +
+
+ +

+ Single-user system — this is the only account +

+
+
+ + ) +} diff --git a/web/src/components/TraderConfigModal.tsx b/web/src/components/TraderConfigModal.tsx index 417b29cb..c1c5a27a 100644 --- a/web/src/components/TraderConfigModal.tsx +++ b/web/src/components/TraderConfigModal.tsx @@ -337,8 +337,8 @@ export function TraderConfigModal({ {strategies.map((strategy) => ( ))} diff --git a/web/src/components/landing/LoginModal.tsx b/web/src/components/landing/LoginModal.tsx index 3abaf1b8..abb9e3bc 100644 --- a/web/src/components/landing/LoginModal.tsx +++ b/web/src/components/landing/LoginModal.tsx @@ -1,16 +1,12 @@ import { motion } from 'framer-motion' import { X } from 'lucide-react' import { t, Language } from '../../i18n/translations' -import { useSystemConfig } from '../../hooks/useSystemConfig' - interface LoginModalProps { onClose: () => void language: Language } export default function LoginModal({ onClose, language }: LoginModalProps) { - const { config: systemConfig } = useSystemConfig() - const registrationEnabled = systemConfig?.registration_enabled !== false return ( {t('signIn', language)} - {registrationEnabled && ( - { - window.history.pushState({}, '', '/register') - window.dispatchEvent(new PopStateEvent('popstate')) - onClose() - }} - className="block w-full px-6 py-3 rounded-lg font-semibold text-center" - style={{ - background: 'var(--brand-dark-gray)', - color: 'var(--brand-light-gray)', - border: '1px solid rgba(240, 185, 11, 0.2)', - }} - whileHover={{ scale: 1.05, borderColor: 'var(--brand-yellow)' }} - whileTap={{ scale: 0.95 }} - > - {t('registerNewAccount', language)} - - )}
diff --git a/web/src/components/traders/TelegramConfigModal.tsx b/web/src/components/traders/TelegramConfigModal.tsx new file mode 100644 index 00000000..bf170daf --- /dev/null +++ b/web/src/components/traders/TelegramConfigModal.tsx @@ -0,0 +1,530 @@ +import React, { useState, useEffect } from 'react' +import { Check, ChevronLeft, ExternalLink, MessageCircle, Unlink, ArrowRight } from 'lucide-react' +import { toast } from 'sonner' +import { api } from '../../lib/api' +import type { TelegramConfig, AIModel } from '../../types' +import type { Language } from '../../i18n/translations' + +// Step indicator (reused pattern from ExchangeConfigModal) +function StepIndicator({ currentStep, labels }: { currentStep: number; labels: string[] }) { + return ( +
+ {labels.map((label, index) => ( + +
+
+ {index < currentStep ? : index + 1} +
+ + {label} + +
+ {index < labels.length - 1 && ( +
+ )} + + ))} +
+ ) +} + +interface TelegramConfigModalProps { + onClose: () => void + language: Language +} + +export function TelegramConfigModal({ onClose, language }: TelegramConfigModalProps) { + const [step, setStep] = useState(0) + const [token, setToken] = useState('') + const [selectedModelId, setSelectedModelId] = useState('') + const [isSaving, setIsSaving] = useState(false) + const [config, setConfig] = useState(null) + const [models, setModels] = useState([]) + const [isLoading, setIsLoading] = useState(true) + const [isUnbinding, setIsUnbinding] = useState(false) + + const zh = language === 'zh' + + // Load current config and available models + useEffect(() => { + Promise.all([ + api.getTelegramConfig().catch(() => null), + api.getModelConfigs().catch(() => [] as AIModel[]), + ]).then(([cfg, allModels]) => { + const enabledModels = allModels.filter((m) => m.enabled) + setModels(enabledModels) + + if (cfg) { + setConfig(cfg) + setSelectedModelId(cfg.model_id ?? '') + if (cfg.is_bound) { + setStep(2) + } else if (cfg.token_masked && cfg.token_masked !== '') { + setStep(1) + } + } + }).finally(() => setIsLoading(false)) + }, []) + + const handleSaveToken = async () => { + if (!token.trim()) return + if (isSaving) return + + // Basic format validation: looks like "123456789:ABCdef..." + if (!/^\d+:[A-Za-z0-9_-]{35,}$/.test(token.trim())) { + toast.error(zh ? 'Bot Token 格式不正确,应为 "数字:字母数字串"' : 'Invalid Bot Token format. Expected "numbers:alphanumeric"') + return + } + + setIsSaving(true) + try { + await api.updateTelegramConfig(token.trim(), selectedModelId || undefined) + toast.success(zh ? 'Bot Token 已保存,等待绑定' : 'Bot Token saved, waiting for binding') + const updated = await api.getTelegramConfig() + setConfig(updated) + setToken('') + setStep(1) + } catch (err) { + toast.error(zh ? '保存失败,请检查 Token 是否正确' : 'Save failed, please verify the token') + } finally { + setIsSaving(false) + } + } + + const handleUnbind = async () => { + if (isUnbinding) return + setIsUnbinding(true) + try { + await api.unbindTelegram() + toast.success(zh ? '已解绑 Telegram 账号' : 'Telegram account unbound') + const updated = await api.getTelegramConfig() + setConfig(updated) + setStep(updated.token_masked ? 1 : 0) + } catch { + toast.error(zh ? '解绑失败' : 'Unbind failed') + } finally { + setIsUnbinding(false) + } + } + + const stepLabels = zh + ? ['创建 Bot', '绑定账号', '完成'] + : ['Create Bot', 'Bind Account', 'Done'] + + // Model selector shared between steps + const ModelSelector = () => ( +
+ + {models.length === 0 ? ( +
+ {zh ? '暂无启用的模型,请先在「AI 模型」中配置' : 'No enabled models. Configure one in AI Models first.'} +
+ ) : ( + + )} +
+ {zh + ? '不选则自动使用已启用的模型' + : 'Leave blank to auto-use any enabled model'} +
+
+ ) + + return ( +
+
+ {/* Header */} +
+
+ {step > 0 && !config?.is_bound && ( + + )} +
+ +

+ {zh ? 'Telegram Bot 配置' : 'Telegram Bot Setup'} +

+
+
+ +
+ + {/* Step Indicator */} +
+ +
+ + {/* Content */} +
+ {isLoading ? ( +
+ {zh ? '加载中...' : 'Loading...'} +
+ ) : ( + <> + {/* Step 0: Create bot via BotFather */} + {step === 0 && ( +
+
+
+ 🤖 +
+
+ {zh ? '第一步:在 Telegram 创建你的 Bot' : 'Step 1: Create your Bot in Telegram'} +
+
+
1. {zh ? '打开 Telegram,搜索' : 'Open Telegram, search for'} @BotFather
+
2. {zh ? '发送' : 'Send'} /newbot {zh ? '命令' : 'command'}
+
3. {zh ? '按提示输入 Bot 名称和用户名' : 'Follow prompts to set bot name and username'}
+
4. {zh ? 'BotFather 会返回一个 Token,复制它' : 'BotFather will return a Token, copy it'}
+
+
+
+
+ + + + {zh ? '打开 @BotFather' : 'Open @BotFather'} + + +
+ + setToken(e.target.value)} + placeholder="123456789:ABCdefGHIjklmNOPQRstuvwxYZ" + className="w-full px-4 py-3 rounded-xl font-mono text-sm" + style={{ background: '#0B0E11', border: '1px solid #2B3139', color: '#EAECEF' }} + /> +
+ {zh ? 'Token 格式:数字:字母数字串,如 123456789:ABCdef...' : 'Format: numbers:alphanumeric, e.g. 123456789:ABCdef...'} +
+
+ + + + +
+ )} + + {/* Step 1: Send /start to activate */} + {step === 1 && ( +
+
+
+ 📱 +
+
+ {zh ? '第二步:向你的 Bot 发送 /start' : 'Step 2: Send /start to your Bot'} +
+
+
1. {zh ? '在 Telegram 中搜索你刚创建的 Bot' : 'Search for your newly created Bot in Telegram'}
+
2. {zh ? '点击 Start 或发送' : 'Click Start or send'} /start
+
3. {zh ? 'Bot 会自动绑定到你的账号' : 'Bot will automatically bind to your account'}
+
+
+
+
+ + {config?.token_masked && ( +
+
+
+
+ {zh ? '当前 Token' : 'Current Token'} +
+
+ {config.token_masked} +
+
+
+ )} + +
+
+ {zh + ? '⏳ 等待你发送 /start... 发送后刷新页面查看状态' + : '⏳ Waiting for you to send /start... Refresh page after sending'} +
+
+ +
+ + +
+
+ )} + + {/* Step 2: Bound & active */} + {step === 2 && ( +
+
+
🎉
+
+ {zh ? 'Telegram Bot 已绑定!' : 'Telegram Bot is Active!'} +
+
+ {zh + ? '你现在可以通过 Telegram 用自然语言控制交易系统' + : 'You can now control the trading system via natural language in Telegram'} +
+
+ + {config?.token_masked && ( +
+
+
+
+ {zh ? 'Bot Token' : 'Bot Token'} +
+
+ {config.token_masked} +
+
+
+ )} + + {/* AI Model selector — works on active bot */} + { + setConfig((prev) => prev ? { ...prev, model_id: modelId } : prev) + }} + /> + + {/* What you can do */} +
+
+ {zh ? '支持的命令' : 'Supported Commands'} +
+ {[ + { cmd: '/help', desc: zh ? '查看所有命令' : 'Show all commands' }, + { cmd: zh ? '查看交易员状态' : 'Show trader status', desc: zh ? '自然语言查询' : 'Natural language' }, + { cmd: zh ? '启动/停止交易员' : 'Start/stop trader', desc: zh ? '自然语言控制' : 'Natural language control' }, + { cmd: zh ? '查看持仓' : 'View positions', desc: zh ? '实时持仓查询' : 'Real-time position query' }, + { cmd: zh ? '配置策略' : 'Configure strategy', desc: zh ? '修改交易策略' : 'Modify trading strategy' }, + ].map((item, i) => ( +
+ + {item.cmd} + + {item.desc} +
+ ))} +
+ +
+ + +
+
+ )} + + )} +
+
+
+ ) +} + +// BoundModelSelector — lets the user change the AI model when the bot is already active. +// It updates the model_id without requiring re-entry of the bot token. +function BoundModelSelector({ + zh, + models, + currentModelId, + onSaved, +}: { + zh: boolean + models: AIModel[] + currentModelId: string + onSaved: (modelId: string) => void +}) { + const [modelId, setModelId] = useState(currentModelId) + const [isSaving, setIsSaving] = useState(false) + + // Keep in sync if parent updates + useEffect(() => { setModelId(currentModelId) }, [currentModelId]) + + const handleSave = async () => { + setIsSaving(true) + try { + // POST /api/telegram/model — lightweight endpoint for model-only update + await api.updateTelegramModel(modelId) + onSaved(modelId) + toast.success(zh ? 'AI 模型已更新' : 'AI model updated') + } catch { + toast.error(zh ? '更新失败' : 'Update failed') + } finally { + setIsSaving(false) + } + } + + if (models.length === 0) return null + + return ( +
+ +
+ + +
+
+ ) +} diff --git a/web/src/i18n/translations.ts b/web/src/i18n/translations.ts index 1877cb19..cf1c0649 100644 --- a/web/src/i18n/translations.ts +++ b/web/src/i18n/translations.ts @@ -339,8 +339,8 @@ export const translations = { selectTradingStrategy: 'Select Trading Strategy', useStrategy: 'Use Strategy', noStrategyManual: '-- No Strategy (Manual Configuration) --', - activeTag: ' (Active)', - default: ' [Default]', + strategyActive: ' (Active)', + strategyDefault: ' [Default]', noStrategyHint: 'No strategies yet, please create in Strategy Studio first', strategyDetails: 'Strategy Details', activating: 'Activating', @@ -1563,8 +1563,8 @@ export const translations = { selectTradingStrategy: '选择交易策略', useStrategy: '使用策略', noStrategyManual: '-- 不使用策略(手动配置) --', - activeTag: ' (当前激活)', - default: ' [默认]', + strategyActive: ' (当前激活)', + strategyDefault: ' [默认]', noStrategyHint: '暂无策略,请先在策略工作室创建策略', strategyDetails: '策略详情', activating: '激活中', @@ -2734,8 +2734,8 @@ export const translations = { selectTradingStrategy: 'Pilih Strategi Trading', useStrategy: 'Gunakan Strategi', noStrategyManual: '-- Tanpa Strategi (Konfigurasi Manual) --', - activeTag: ' (Aktif)', - default: ' [Default]', + strategyActive: ' (Aktif)', + strategyDefault: ' [Default]', noStrategyHint: 'Belum ada strategi, buat di Strategy Studio terlebih dahulu', strategyDetails: 'Detail Strategi', activating: 'Mengaktifkan', diff --git a/web/src/lib/api.ts b/web/src/lib/api.ts index 84024439..fd3aa71f 100644 --- a/web/src/lib/api.ts +++ b/web/src/lib/api.ts @@ -8,6 +8,7 @@ import type { TraderConfigData, AIModel, Exchange, + TelegramConfig, CreateTraderRequest, CreateExchangeRequest, UpdateModelConfigRequest, @@ -785,4 +786,26 @@ export const api = { if (!result.success) throw new Error('获取历史仓位失败') return result.data! }, + + // Telegram Bot API + async getTelegramConfig(): Promise { + const result = await httpClient.get(`${API_BASE}/telegram`) + if (!result.success) throw new Error('获取Telegram配置失败') + return result.data! + }, + + async updateTelegramConfig(token: string, modelId?: string): Promise { + const result = await httpClient.post(`${API_BASE}/telegram`, { bot_token: token, model_id: modelId ?? '' }) + if (!result.success) throw new Error('保存Telegram配置失败') + }, + + async unbindTelegram(): Promise { + const result = await httpClient.delete(`${API_BASE}/telegram/binding`) + if (!result.success) throw new Error('解绑Telegram失败') + }, + + async updateTelegramModel(modelId: string): Promise { + const result = await httpClient.post(`${API_BASE}/telegram/model`, { model_id: modelId }) + if (!result.success) throw new Error('更新Telegram模型失败') + }, } diff --git a/web/src/lib/config.ts b/web/src/lib/config.ts index 335aacd0..54d138e0 100644 --- a/web/src/lib/config.ts +++ b/web/src/lib/config.ts @@ -1,6 +1,6 @@ export interface SystemConfig { - beta_mode: boolean - registration_enabled?: boolean + initialized: boolean + beta_mode?: boolean } let configPromise: Promise | null = null @@ -19,8 +19,11 @@ export function getSystemConfig(): Promise { cachedConfig = data return data }) - .finally(() => { - // Keep cachedConfig for reuse; allow re-fetch via explicit invalidation if added later - }) return configPromise } + +/** Call after first-time setup completes so next check reflects initialized=true */ +export function invalidateSystemConfig() { + cachedConfig = null + configPromise = null +} diff --git a/web/src/pages/SettingsPage.tsx b/web/src/pages/SettingsPage.tsx new file mode 100644 index 00000000..0ad9a875 --- /dev/null +++ b/web/src/pages/SettingsPage.tsx @@ -0,0 +1,489 @@ +import { useState, useEffect } from 'react' +import { toast } from 'sonner' +import { User, Cpu, Building2, MessageCircle, Eye, EyeOff, ChevronRight, Plus, Pencil } from 'lucide-react' +import { useAuth } from '../contexts/AuthContext' +import { useLanguage } from '../contexts/LanguageContext' +import { api } from '../lib/api' +import { ExchangeConfigModal } from '../components/traders/ExchangeConfigModal' +import { TelegramConfigModal } from '../components/traders/TelegramConfigModal' +import { ModelConfigModal } from '../components/AITradersPage' +import type { Exchange, AIModel } from '../types' + +type Tab = 'account' | 'models' | 'exchanges' | 'telegram' + +export function SettingsPage() { + const { user } = useAuth() + const { language } = useLanguage() + const [activeTab, setActiveTab] = useState('account') + + // Account state + const [newPassword, setNewPassword] = useState('') + const [showPassword, setShowPassword] = useState(false) + const [changingPassword, setChangingPassword] = useState(false) + + // AI Models state + const [configuredModels, setConfiguredModels] = useState([]) + const [supportedModels, setSupportedModels] = useState([]) + const [showModelModal, setShowModelModal] = useState(false) + const [editingModel, setEditingModel] = useState(null) + + // Exchanges state + const [exchanges, setExchanges] = useState([]) + const [showExchangeModal, setShowExchangeModal] = useState(false) + const [editingExchange, setEditingExchange] = useState(null) + + // Telegram state + const [showTelegramModal, setShowTelegramModal] = useState(false) + + // Fetch data when tabs are visited + useEffect(() => { + if (activeTab === 'models') { + Promise.all([api.getModelConfigs(), api.getSupportedModels()]) + .then(([configs, supported]) => { + setConfiguredModels(configs) + setSupportedModels(supported) + }) + .catch(() => toast.error('Failed to load AI models')) + } + if (activeTab === 'exchanges') { + api.getExchangeConfigs() + .then(setExchanges) + .catch(() => toast.error('Failed to load exchanges')) + } + }, [activeTab]) + + const handleChangePassword = async (e: React.FormEvent) => { + e.preventDefault() + if (newPassword.length < 8) { + toast.error('Password must be at least 8 characters') + return + } + setChangingPassword(true) + try { + const res = await fetch('/api/user/password', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${localStorage.getItem('token') || ''}`, + }, + body: JSON.stringify({ new_password: newPassword }), + }) + if (!res.ok) { + const data = await res.json().catch(() => ({})) + throw new Error(data.error || 'Failed to update password') + } + toast.success('Password updated successfully') + setNewPassword('') + } catch (err) { + toast.error(err instanceof Error ? err.message : 'Failed to update password') + } finally { + setChangingPassword(false) + } + } + + const handleSaveModel = async ( + modelId: string, + apiKey: string, + customApiUrl?: string, + customModelName?: string + ) => { + try { + const existingModel = configuredModels.find((m) => m.id === modelId) + const modelTemplate = supportedModels.find((m) => m.id === modelId) + const modelToUpdate = existingModel || modelTemplate + if (!modelToUpdate) { toast.error('Model not found'); return } + + let updatedModels: AIModel[] + if (existingModel) { + updatedModels = configuredModels.map((m) => + m.id === modelId + ? { ...m, apiKey, customApiUrl: customApiUrl || '', customModelName: customModelName || '', enabled: true } + : m + ) + } else { + updatedModels = [...configuredModels, { + ...modelToUpdate, + apiKey, + customApiUrl: customApiUrl || '', + customModelName: customModelName || '', + enabled: true, + }] + } + + const request = { + models: Object.fromEntries( + updatedModels.map((m) => [m.provider, { + enabled: m.enabled, + api_key: m.apiKey || '', + custom_api_url: m.customApiUrl || '', + custom_model_name: m.customModelName || '', + }]) + ), + } + await toast.promise(api.updateModelConfigs(request), { + loading: 'Saving model config...', + success: 'Model config saved', + error: 'Failed to save model config', + }) + const refreshed = await api.getModelConfigs() + setConfiguredModels(refreshed) + setShowModelModal(false) + setEditingModel(null) + } catch { + toast.error('Failed to save model config') + } + } + + const handleDeleteModel = async (modelId: string) => { + try { + const updatedModels = configuredModels.map((m) => + m.id === modelId ? { ...m, apiKey: '', customApiUrl: '', customModelName: '', enabled: false } : m + ) + const request = { + models: Object.fromEntries( + updatedModels.map((m) => [m.provider, { + enabled: m.enabled, + api_key: m.apiKey || '', + custom_api_url: m.customApiUrl || '', + custom_model_name: m.customModelName || '', + }]) + ), + } + await api.updateModelConfigs(request) + const refreshed = await api.getModelConfigs() + setConfiguredModels(refreshed) + setShowModelModal(false) + setEditingModel(null) + toast.success('Model config removed') + } catch { + toast.error('Failed to remove model config') + } + } + + const handleSaveExchange = async ( + exchangeId: string | null, + exchangeType: string, + accountName: string, + apiKey: string, + secretKey?: string, + passphrase?: string, + testnet?: boolean, + hyperliquidWalletAddr?: string, + asterUser?: string, + asterSigner?: string, + asterPrivateKey?: string, + lighterWalletAddr?: string, + lighterPrivateKey?: string, + lighterApiKeyPrivateKey?: string, + lighterApiKeyIndex?: number + ) => { + try { + if (exchangeId) { + const request = { + exchanges: { + [exchangeId]: { + enabled: true, + api_key: apiKey || '', + secret_key: secretKey || '', + passphrase: passphrase || '', + testnet: testnet || false, + hyperliquid_wallet_addr: hyperliquidWalletAddr || '', + aster_user: asterUser || '', + aster_signer: asterSigner || '', + aster_private_key: asterPrivateKey || '', + lighter_wallet_addr: lighterWalletAddr || '', + lighter_private_key: lighterPrivateKey || '', + lighter_api_key_private_key: lighterApiKeyPrivateKey || '', + lighter_api_key_index: lighterApiKeyIndex || 0, + }, + }, + } + await toast.promise(api.updateExchangeConfigsEncrypted(request), { + loading: 'Updating exchange config...', + success: 'Exchange config updated', + error: 'Failed to update exchange config', + }) + } else { + const createRequest = { + exchange_type: exchangeType, + account_name: accountName, + enabled: true, + api_key: apiKey || '', + secret_key: secretKey || '', + passphrase: passphrase || '', + testnet: testnet || false, + hyperliquid_wallet_addr: hyperliquidWalletAddr || '', + aster_user: asterUser || '', + aster_signer: asterSigner || '', + aster_private_key: asterPrivateKey || '', + lighter_wallet_addr: lighterWalletAddr || '', + lighter_private_key: lighterPrivateKey || '', + lighter_api_key_private_key: lighterApiKeyPrivateKey || '', + lighter_api_key_index: lighterApiKeyIndex || 0, + } + await toast.promise(api.createExchangeEncrypted(createRequest), { + loading: 'Creating exchange account...', + success: 'Exchange account created', + error: 'Failed to create exchange account', + }) + } + const refreshed = await api.getExchangeConfigs() + setExchanges(refreshed) + setShowExchangeModal(false) + setEditingExchange(null) + } catch { + toast.error('Failed to save exchange config') + } + } + + const handleDeleteExchange = async (exchangeId: string) => { + try { + await toast.promise(api.deleteExchange(exchangeId), { + loading: 'Deleting exchange account...', + success: 'Exchange account deleted', + error: 'Failed to delete exchange account', + }) + const refreshed = await api.getExchangeConfigs() + setExchanges(refreshed) + setShowExchangeModal(false) + setEditingExchange(null) + } catch { + toast.error('Failed to delete exchange account') + } + } + + const tabs: { key: Tab; label: string; icon: React.ReactNode }[] = [ + { key: 'account', label: 'Account', icon: }, + { key: 'models', label: 'AI Models', icon: }, + { key: 'exchanges', label: 'Exchanges', icon: }, + { key: 'telegram', label: 'Telegram', icon: }, + ] + + return ( +
+
+

Settings

+ + {/* Tabs */} +
+ {tabs.map((tab) => ( + + ))} +
+ + {/* Tab Content */} +
+ + {/* Account Tab */} + {activeTab === 'account' && ( +
+
+

Email

+

{user?.email}

+
+ +
+

Change Password

+
+
+ +
+ setNewPassword(e.target.value)} + className="w-full bg-zinc-950/80 border border-zinc-700/80 rounded-xl px-4 py-3 pr-11 text-sm text-white placeholder-zinc-600 focus:outline-none focus:border-nofx-gold/60 focus:ring-1 focus:ring-nofx-gold/30 transition-all" + placeholder="At least 8 characters" + required + /> + +
+
+ +
+
+
+ )} + + {/* AI Models Tab */} + {activeTab === 'models' && ( +
+
+

+ {configuredModels.length} model{configuredModels.length !== 1 ? 's' : ''} configured +

+ +
+ + {configuredModels.length === 0 ? ( +
+ No AI models configured yet +
+ ) : ( +
+ {configuredModels.map((model) => ( + + ))} +
+ )} +
+ )} + + {/* Exchanges Tab */} + {activeTab === 'exchanges' && ( +
+
+

+ {exchanges.length} account{exchanges.length !== 1 ? 's' : ''} connected +

+ +
+ + {exchanges.length === 0 ? ( +
+ No exchange accounts connected yet +
+ ) : ( +
+ {exchanges.map((exchange) => ( + + ))} +
+ )} +
+ )} + + {/* Telegram Tab */} + {activeTab === 'telegram' && ( +
+

+ Connect a Telegram bot to receive trading notifications and interact with your traders. +

+ +
+ )} +
+
+ + {/* AI Model Modal */} + {showModelModal && ( +
+ { setShowModelModal(false); setEditingModel(null) }} + language={language} + /> +
+ )} + + {/* Exchange Modal */} + {showExchangeModal && ( +
+ { setShowExchangeModal(false); setEditingExchange(null) }} + language={language} + /> +
+ )} + + {/* Telegram Modal */} + {showTelegramModal && ( +
+ setShowTelegramModal(false)} + language={language} + /> +
+ )} +
+ ) +} diff --git a/web/src/types.ts b/web/src/types.ts index 703dc611..6532d96f 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -116,6 +116,13 @@ export interface AIModel { customModelName?: string } +export interface TelegramConfig { + token_masked: string // Masked token like "123456:ABC***XYZ" + is_bound: boolean // Whether a user has sent /start + bound_chat_id?: number // The bound chat ID (if any) + model_id?: string // AI model selected for Telegram replies +} + export interface Exchange { id: string // UUID (empty for supported exchange templates) exchange_type: string // "binance", "bybit", "okx", "hyperliquid", "aster", "lighter"